目录
1. 了解 Vue 七大常用属性
2. 文本插值
2.1 v-bind 绑定元素
3. 判断
4. 循环
5. 事件
6. 双向绑定
7. 自定义组件
8. Axios 异步通信
8.1 什么是Axios
8.2 为什么要使用 Axios
8.3 Axios 的简单应用
8.4 Vue 的生命周期
1. el 属性 : 用来指示vue编译器从什么地方开始解析 vue的语法, 可以说是一个占位符.
2. data 属性 : 用来组织从view中抽象出来的属性, 可以说将视图的数据抽象出来存放在data中.
3. template属性 : 用来设置模板, 会替换页面元素.
4.methods属性 : 放置页面中的业务逻辑, js方法一般都放置在methods中, 用来写方法.
5. render属性 : 创建真正的Virtual Dom.
6. computed属性 : 根据已经存在的属性计算出新的属性,对于同样的数据,会缓存。当其依赖属性的值发生变化是,这个属性的值会自动更新,与之相关的DOM部份也会同步自动更新.
7. watch侦听属性 : watch:function(new,old){} 监听data中数据的变化.
语法 : {{msg}}
文本插值是最基本的数据绑定形式. 双大括号标签会被替换为相应组件中的 msg 属性的值. 同时每次 msg
属性更改时它也会同步更新.
{{msg}}
除了 {{}} 可以绑定元素外, 还可以使用 v-bind 来绑定元素.
鼠标悬停过来几秒钟
v-bind 还可以缩写成 :
打开开发者工具,修改 vm 对象中 type 属性的值, 感受条件判断的用法.
A
B
C
打开开发者工具, 给数组添加数据, 感受循环的用法. 此处的 v-for 指令和我们学过的 foreach 循环很像.
{{item.msg}}
v-for 还能获取元素的下标 :
{{item.msg}}--{{index}}
使用 v-on 指令绑定事件.
原先我们是通过 οnclick="function" 这样绑定一个事件, 但是在 Vue 中, 方法是必须定义在 Vue 的 Methods 对象中, onclic 是绑定不到的, 所以需要使用到 v-on 来绑定.
v-on 可以缩写为 @, 对于上述例子可以缩写为如下形式 :
什么是双向绑定 ?
上一篇博客已经详细讲解了 MVVM 思想, 即当数据发生变化的时候, 视图也就发生了变化, 当视图发生变化的时候, 数据也会跟着同步变化, 这个就是 Vue.js 的精髓之处.
在表单中使用双向数据绑定>>>
我们可以用 v-model 指令在表单 ,
, 注意 :
v-model 会忽略所有表单元素的 value, checked, selected 特征的初始值而总是将 Vue 的实例的数据作为数据来源. 我们应该通过 JavaScript 在组件的 data 选项中声明初始值!
【文本框】
输入的文本: {{msg}}
【单选框】
性别 :
男
女
选中了: {{checked}}
【下拉框】
value: {{selected}}
【注意】如果 v-model 表达式的初始值未能匹配任何选项,
Vue 自定义组件的简单应用 :
【注意】使用 props 属性传递参数
上述代码中, 通过循环遍历 data 中 items 的数据时, 无法直接被自定义组件中的模板拿到, 于是要使用 v-bind:指令来绑定每一个元素, 而且需要通过 props 属性来传递参数, 否则 template 模板拿不到每一个 item 元素.
Axios 是一个开源可以用在浏览器端和 NodeJS 的异步通信框架, 它的主要作用就是实现 AJAX 异步通信, 其功能特点如下 : (官网)
因为 Vue.js 是一个视图框架, 并且严格遵守 SoC (关注度分离原则), 所以 Vue.js 并不包含 AJAX 的通信功能, 为了解决通信问题, 作者单独开发了一个名为 vue-resource 的插件, 不过在进入 2.0 版本后停止了对该插件的维护并推荐了 Axios 框架. 少用 jQuery, 因为它操作 DOM 太频繁 !
由于开发的接口大部分都是采用 JSON 格式, 可以先在项目里模拟一段 JSON 数据, 创建一个名为 data.json 的文件并填入以下内容 :
{
"name": "花果山水帘洞",
"url": "https://www.baidu.com/",
"address": {
"street": "新安街道",
"city": "广东深圳",
"country": "中国"
},
"links": [
{
"name": "B站",
"url": "https://www.bilibili.com/"
},
{
"name": "4399",
"url": "https://www.4399.com/"
},
{
"name": "百度",
"url": "https://www.baidu.com/"
}
]
}
引入 Axios :
说明 :
1. 使用了 v-bind 将 a.herf 的属性值与 Vue 实例中的数据进行绑定.
2. 使用 axios 框架的 get (post) 方法请求 Ajax 并自动将数据封装进了.
3. data 中的数据结构必须要和 Ajax 响应回来的数据格式匹配.
4. 使用箭头函数, 需要将 IDEA 中 JavaScript 改为 ES6 新特性.
当浏览器访问页面的时候, 实际上是存在一个闪烁问题, 它会先加载模板, 再渲染数据, 只是这个过程网速太快, 唰的一下就渲染出数据了, 所以看不太出来, 这需要结合 Vue 的生命周期来理解.
解决 Vue 闪烁问题 :
理解上述 Axios 中 mounted 钩子函数就要联系到 Vue 的生命周期了 >>
Vue 实例有一个完整的生命周期, 也就是从开始创建, 初始化数据, 编译模板, 挂载 DOM, 渲染 -> 更新 -> 渲染, 卸载等一系列过程, 我们称之为 Vue 的生命周期. 通俗说就是 Vue 实例从创建到销毁的过程, 就是生命周期.
在 Vue 的整个生命周期中, 它提供一系列的事件, 可以让我们在事件触发时注册 JS 方法, 可以让我们用自己注册的 JS 方法控制整个大局. 在这些事件响应方法中的 this 直接指向的是 Vue 的实例.
上述 Vue 的生命周期看起来相当复杂难理解, 如果想要理解透彻, 可以看这位哥们的文章.
理解上述 Axios 的应用主要是理解以下模块 :
mounted 钩子所做的事情其实就类似于 jQuery 的前端发送 Ajax 请求给后端, 然后再通过 data() 中的 return 实时监听并更新 DOM. return 中的参数只需要保持和 Json 字符串一样即可 (data.json 中的数据可全部写在 return 中, 也可以写一部分, 但格式要保持 json 格式)
而 jQuery.ajax 来向后端请求数据的话, 请求到的数据还需要频繁操作 DOM 树进行添加, 这样对比起来, 操作简单了很多.
本文通过B站狂神的视频所学, 感兴趣的可以找狂神说的视频进行学习, 他的视频很有学习的价值, 感谢狂神~