“Vue.js是拥抱经典的Web技术”
特点
Vue.js 的目标是尽可能通过简单的 API 实现响应的数据绑定和组合的视图组件,其主要有三个大特点:
易用,轻便:模型视图的框架相对于JQuery不用一个个去获取DOM元素,可以直接使用双大括号进行字段渲染
零活,渐进:
- 声明式渲染: 默认的声明方式对页面上的字段进行渲染
- 组件系统:制作页面的过程中,可能需要把公共的头部,底部抽出来做成组件,这里就需要使用到一些组件系统
- 客户端路由:制作单页面的过程中,往往需要页面路由,这个时候就可以使用VueJs提供的一些插件(Vue-router等),来配置页面路由的功能
- 大规模状态管理:如果项目业务足够复杂,大量的使用组件,而且难以去管理这些组件的状态,这个时候也能引进VueJs提供的插件(Vues等),这些插件可以集中管理组件状态。
- 构建工具:在项目做完以后,可能还需要通过构建工具来Build我们的系统,整体提升项目效率,形成一个完整的项目
这就是一个渐进式的过程,从简单到复杂,随着业务度的提升,可以不断的加入各类插件,缺什么补什么
高效:16K大小,虚拟DOM,从Vue1.0到Vue2.0的性能优化
Vue指令(才疏学浅)
- v-text:用于渲染DOM,更新元素的textContent,和在元素中写双大括号一个意思
- v-html:用于渲染DOM,更新元素的innerHTML,相较于v-text可以直接识别并且渲染html标签
- v-if:条件渲染指令,根据其后表达式的bool值进行判断是否渲染该元素
- v-show:与v-if类似,只是会渲染其身后表达式为false的元素,而且会给这样的元素添加css代码:style=”display:none”
- v-else-if/v-else:必须跟在v-if/v-show指令之后,不然不起作用
- v-for:类似Js的遍历,用法为v-for=”item in items”,items是数组,item为数组中的数组元素,v-for里还能嵌套v-for
- v-class:有一个可选参数,无参数是绑定值到所在元素的classlist当中,并且一旦检测绑定值有改动,便随之改变classlist里对应的class,有参数时参数的true和false将决定对应class是否起作用 eg:
<span v-class="red : true, bold : false"></span>
- v-model:表单控件元素上创建双向数据绑定,适用于input,textarea
- v-bind:缩写为:,这个指令主要作用于绑定属性,比如class或元素的style样式
- v-on:click.stop =”clickMe” ,缩写为@,用于监听指定元素的DOM事件,比如点击事件,可以是一个函数或者函数语句,还可以传入$event修饰符表示触发处理函数的DOM事件,然后就可以操作事件对象,比如e.stop=” “,可以调用e.stopPropagation()来阻止时间冒泡
Vue实例和生命周期(才疏学浅)
- el:加载数据到哪里,可以是css选择器,也可以是html元素实例,一般默认为#app
- data:它是Vue绑定数据到html标签的数据源泉,Vue框架会自动监视data里面的数据变化,自动更新数据到HTML标签上去
type为 json或者function,组件必须是function - computed:Vue的计算属性(computed)的属性会自动混入Vue的实例中,再计算属性中定义的函数里面可以直接使用指向了vue实例的this
type为 { 键:函数 } - methods:可以直接通过new一个实例访问这些方法,或者在指令表达式中使用,方法中的 this 自动绑定为 Vue 实例
type为 { [key: string]: Function } - watch:一个对象,键是需要观察的表达式,值是对应回调函数。值也可以是方法名,或者包含选项的对象。Vue 实例将会在实例化时调用 $watch(),遍历watch 对象的每一个属性
type为 { [key: string]: string | Function | Object } - filters:过滤器,简单一些可以通过定义的函数对数据进行进一步的优化过滤,如几位小数,文本前置等,过滤器必须放置在一个指令的值的最后用竖杆间隔
type为 { [key: string]: string | Function }
var vm = new Vue({
el:'#app',
data:{
a:1,
b:1
},
computed:{
aDouble: function () {
return this.a * 2
}
},
filters:{
formatMoney:function(value){
return "¥"+value.toFixed(2);
}
},
methods:{
bDouble: function () {
return this.b * 2
}
},
watch:{
//监控a变量变化的时候,自动执行此函数
a: function(val,oldVal){
console.log(val, oldVal)
},
//深度watcher
b: {
handler: function (val, oldVal) {
/* ... */
},
deep: true
}
}
})
购物车典例练习
后续继续学习……
好的,我来后续继续学习了 2017-12-09
vue里获取修改真实DOM元素的属性
在vue中可以通过给标签加ref属性,就可以在js中利用ref去引用它,从而修改该dom元素(VUE不建议操作DOM~)
<div id="demo" ref="demo_1">
DEMO
</div>
//2秒后渐变颜色Demo
mounted () {
var self = this;
this.$refs.demo_1.style.color = 'red';
setTimeout(() => {
self.$refs.demo_1.style.color = 'blue';
},2000)
},