vue前言、模板语法
【前端发展历史】
# 1 HTML(5)、CSS(3)、JavaScript(ES5、ES6):编写一个个的页面 -> 给后端(PHP、Python、Go、Java) -> 后端嵌入模板语法 -> 后端渲染完数据 -> 返回数据给前端 -> 在浏览器中查看
# 2 Ajax的出现 -> 后台发送异步请求,Render+Ajax混合 jquery 封装的ajax 方法 $.ajax() 原生js--》发送ajax请求--》比较复杂--》 其它第三放模块:发送ajax请求
# 3 单用Ajax(加载数据,DOM渲染页面):前后端分离的雏形
# 4 Angular框架的出现(1个JS框架):出现了“前端工程化”的概念(前端也是1个工程、1个项目)
# 5 React、Vue框架:当下最火的2个前端框架(Vue:国人喜欢用,React:外国人喜欢用)
# 6 移动开发(Android+IOS) + Web(Web+微信小程序+支付宝小程序) + 桌面开发(Windows桌面):前端 -> 大前端
# 7 一套代码在各个平台运行(大前端):谷歌Flutter(Dart语言:和Java很像)可以运行在IOS、Android、PC端
# 8 在Vue框架的基础性上 uni-app:一套编码 编到10个平台
# 9 在不久的将来 ,前端框架可能会一统天下
## 补充: -1 把谷歌浏览器的v8引擎---》用c重写了--》能运行再操作系统上---》nodejs
-2 javascript和Ecmascript -ECMAScript :规范---》新语法--》es5,es6,es13。。。 -js=ECMAScript+bom+dom
-3 微软--》typescript---》 -开发vue:使用ts语法---》编译成js -css:less,sass
【vue介绍】
vue官网: https://cn.vuejs.org/ 看vue2的文档---起步按钮里有一些简单介绍
# Vue 是一套用于构建用户界面的渐进式框架
# Vue js的框架
M-V-VM 架构思想 MVC MTV MVVC MVP移动端架构
-M:vue对象的data属性里面的数据,这里的数据要显示到页面中 js变了
-V:vue中数据要显示的HTML页面,在vue中,也称之为“视图模板” (HTML+CSS)
-VM:vue中编写代码时的vm对象,它是vue.js的核心,负责连接 View 和 Model数据的中转,保证视图和数据的一致性,所以前面代码中,data里面的数据被显示中p标签中就是vm对象自动完成的(响应式:JS中变量变了,HTML中数据也跟着改变)
vue做出来的介于数据层和视图层之间的一层,以后不需要手动进行dom操作了
# 组件化开发、单页面开发 -组件化开发,以后都是写出一个个组件,组件的组合成页面 -单页面开发(单页面应用):spa:single-page application,一个HTML页面
=====================================================================
# 版本 vue2:少一点 :https://v2.cn.vuejs.org/v2/guide/
vue3:多一点点:https://cn.vuejs.org/guide/introduction.html
# 选项式 API 和组合式 API -vue2是选项式 API,-vue3两个都支持:推荐使用组合式api
补充:组件化开发-(Single-Page application,缩写为 SPA)
【引入vue】

前端开发---》IDE集成开发工具 -python---》pycharm -前端:vue,react---》vscode,webstorm -webstorm 是jetbrains全家桶,用起来跟pycharm一样 -建议大家用webstorm -我们用pycharm,因为pychrm就是webstorm
vue 语法提示
-装个插件:vue,在settings里面下载vue.js
引入方式
CDN的方式引入
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
下载后导入
其实就是直接在浏览器上打开 这是2.7.16版本的链接
https://cdn.jsdelivr.net/npm/vue/dist/vue.js 然后复制下来,
创个vue的js文件,把代码粘贴进去,再创建一个js文件夹,
把vue文件拖进去就行了
<script src="js/vue.js"></script>
---------------------------------------------
vue3下载引入
https://unpkg.com/vue@3/dist/vue.global.js
补充 解释型的语言是需要解释器的 js就是一门解释型语言,只不过js解释器被集成到了浏览器中 所以,在浏览器的Console中输入命令,就和cmd中输入python后,进入交互式环境一样 解释器里面下个Vue.js 的插件,重启一下,会有自动提示

。
。
【响应式--》数据变,页面变数据变】
(数据没变之前)

(数据变之后)

原因:-VM这一层
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
演示有输入框,看页面是否会随着输入框内的内容变化而变化
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 <!-- 它会从CDN加载Vue.js的最新版本--> 7 <!-- <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>--> 8 <script src="./vue/vue2.js"></script> 9 </head> 10 <body> 11 <div class="app">{{s}} 12 <!--{{s}}是一个Vue.js的模板语法,它表示这里会被data对象中的s属性的值替换。--> 13 <br> 14 <input type="text" v-model="username"> 15 </div> 16 17 18 </body> 19 20 <!--引入一个vue的实例--> 21 <!--创建了一个新的Vue实例,并将其赋值给变量vm。--> 22 <!--el: '.app' 表示这个Vue实例会接管所有类名为app的元素。--> 23 <!--data: { s: 'hello world' } 定义了实例的数据对象。这里有一个属性s,其值为'hello world'--> 24 <script> 25 var vm = new Vue({ 26 el: '.app', 27 data: { 28 s: 'hello world', 29 username: '小龙女' 30 } 31 }) 32 </script> 33 </html>

【模板语法】之(插值语法)
1 再被vue管理的标签中
2 插值语法使用 {{}}-->必须是定义再data中的数据
3 放:字符串,数字,对象,数组,函数执行,修改变量值,三目运算符。。 -不能定义变量 -不能渲染标签
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> 7 </head> 8 <body> 9 <div id="app"> 10 <h1>字符串:{{username}}</h1> 11 <h1>数字:{{age}}</h1> 12 <h1>对象:{{userinfo}}---------取值:{{userinfo.name}}</h1> 13 <h1>数组:{{hobby}}----------取值:{{hobby[0]}}</h1> 14 <h1>运算:{{11 + 22}}----变量运算{{age + userinfo.age}}</h1> 15 <h1>三目运算符:{{1 < 2 ? '真' : '假'}}</h1> 16 <h1>字符串里面放了标签:{{a}}</h1> 17 <a href="http://www.baidu.com">看猪猪侠</a> 18 19 </div> 20 </body> 21 22 <script> 23 var vm = new Vue({ 24 el: '#app', 25 data: { 26 username: '小龙女', 27 age: 18, 28 userinfo: {name: '杨过', age: 38}, 29 hobby: ['吃饭', '睡觉', '打游戏'], 30 // 字符串里面放链接 31 a: '<a href="http://www.baidu.com">看猪猪侠</a>' 32 } 33 }) 34 </script> 35 </html>
【指令】
(文本指令)
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 <!-- 或是:https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.min.js--> 7 <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> 8 </head> 9 <body> 10 <div id="app"> 11 <p v-text="username"></p> 12 <!-- 只是文本--> 13 <p v-text="a"></p> 14 <!-- 可以渲染标签,变成链接形式--> 15 <p v-html="a"></p> 16 <hr> 17 <img v-if="showUp" src="http://pic.imeitou.com/uploads/allimg/231004/8-231004150041-50-lp.jpg" alt=""> 18 <hr> 19 <div v-show="showDown"> 20 <img src="http://pic.imeitou.com/uploads/allimg/240424/10-240424161142-50-lp.jpg" alt=""> 21 </div> 22 23 </div> 24 </body> 25 26 <script> 27 var vm = new Vue({ 28 el: '#app', 29 data: { 30 username: '小龙女', 31 a: '<a href="http://www.baidu.com">百度一下</a>', 32 showUp: true, 33 showDown: false, 34 35 } 36 }) 37 </script> 38 </html>
================================================================================================
# 1 再vue中 以 v-xx 开头的都是vue的指令系统
# 2 vue有很多指令,不同的指令作用不同
v-for :循环
v-if :判断
v-text:显示文本
# 3 指令都放在标签上
# 4 文本指令
v-html 让HTML渲染成页面
v-text 标签内容显示js变量对应的值
v-show 放1个布尔值:为真 标签就显示;为假 标签就不显示 隐藏标签:dispaly:none
v-if 放1个布尔值:为真 标签就显示;为假 标签就不显示 删标签,性能更低

。
。
(事件指令)
# 1 点击事件,双击事件,拖动事件,得到焦点,失去焦点。。。。
# 2 v-on:click='函数'
-v-on:click="handleClick"
#3 简写成
@click="handleClick"
