自从Vue2.0发布后,Vue就成了前端领域的热门话题,github也突破了三万的star,那么对于新手来说,如何高效快速的学习Vue2.0呢。
Vue基础
对于没有接触过es6和webpack的童鞋来说,不建议直接用官方的脚手架vue-cli构件项目。
先按文档顺序最少学习完组件那一章。直接在html文件中引入vue.js开始学习,了解vue的基础指令,和整个vue实例的基础架构。
vue的生命周期很重要,了解这点以后可以免去很多问题。
学完这些可以做一些练手的小项目,比如万年不变的todolist。。。
现在可以开始学习使用vue-cli构件项目了,学习组件化之前,推荐先看一下es6关于模块的介绍。阮一峰《ECMAScript6》 Module
光会这些还是不够的,还得会一些npm基础,知道如何用git-bush来安装模块依赖,会一些常用的命令。这方面的知识可以参阅npm入门文档
看完这些就可以试着将之前的写的demo用搭建的vue-cli来实现。附上我写的一个入门小demovue-demo-search
多看看组件那里,看看如何在vue-cli中怎么实现组件化。
到这里vue基础篇就结束了。你还可以有条件的参阅剩下的官方文档里面的进阶篇,如果时间有限,就直接进入vue-router
Vue-router
和之前一样,推荐直接用html+js过一遍文档
对路由导航钩子得好好看一看。
看完文档就可以上手vue-cli,一般新手在这几天都会死活跑不出来。偷笑
最直接的方法就是去github上搜一些关于vue-router2.0的demo,看如何构件路由,如何构件项目目录。
我这里有一个传送门
如果能跑出来,就可以做一些小项目了,比如写一个知乎日报啊偷笑,这些demo在github上很多。
可以结合一些组件库写demo,这样可以更加了解组件化。比如饿了么团队的Element、mint-ui
Vuex
什么是vuex?
Vuex 是一个专门为 Vue.js 应用设计的 状态管理模型 + 库。它为应用内的所有组件提供集中式存储服务,其中的规则确保状态只能按预期方式变更。说白了就是控制应用的一些全局状态。状态改变了,对应的视图也会改变。
在学习Vuex时,会有一些ES6特性,当遇到这些时,最好不要一带而过,去好好看一看这些es6特性。
比如在学习Action时可以看看ES6新增的Promise和参数解构。
实践的方法一样是先看别人别人写的代码,比如官方的购物车实例的应用结构
把之前写的demo优化一下,有些地方可以用用vuex
vuex主要是用来对不同组件间进行通信,它构建了一个Vue实例的全局数据与方法,这些数据与方法可以在该Vue实例的所有组件中get与set
入门到放弃整理
一、vue基础
Vue2.0最全文档
Vue2.0 探索之路——vue-router入门教程和总结
Vue.js 2.0 快速上手
Vuejs2.0 文档攻略
“Vue2.0”跟俺一起全面入坑 01
“Vue2.0”跟俺一起全面入坑 02
“Vue2.0”跟俺一起全面入坑 03
“Vue2.0”跟俺一起全面入坑 —— 自定义便签
超好用的VueJs调试工具——vue-devtools
Vue2.0史上最全入坑教程(上)—— 搭建Vue脚手架(vue-cli)
Vue2.0史上最全入坑教程(中)—— 脚手架代码详解
Vue2.0史上最全入坑教程(下)—— 实战案例
Vue2.0史上最全入坑教程(完)—— 实战案例
vue-cli中配置sass和利用SASS函数功能实现px转rem
二、vue提高
Vue路由跳转问题记录详解
vuejs心法和技法
Vue2.0生命周期和钩子函数的一些理解 ===》推荐
用webpack(2.x语法)手动搭建Vue项目
全面解析vue-cli生成的项目中使用其他库(js库、css库)
Vuex从入门到熟练使用
vue与服务端通信—vue-resource
vue开发过程中跨域最简单解决方案
富文本编辑器Ueditor如何在Vue中使用?
三、vue 1.x和vue 2.x的区别
到了Vue2.x有哪些变化?—— 知识点
到了Vue2.x有哪些变化?—— 组件通信
四、其他必备知识点
ES6入门(一)
ES6快速入门(二)
ES6快速入门(三)
需要视频教程的关注公众号[代码技巧](ID:daimajiqiao)回复 14 即可获取,付出总会有收获
Vue.js2.0核心思想
Vue.js是一个提供MVVM数据双向绑定的库,专注于UI层面,核心思想是:数据驱动、组件系统。
数据驱动:
Vue.js数据观测原理在技术实现上,利用的是ES5Object.defineProperty和存储器属性: getter和setter(所以只兼容IE9及以上版本),可称为基于依赖收集的观测机制。核心是VM,即ViewModel,保证数据和视图的一致性。
watcher:每一个指令都会有一个对应的用来观测数据的对象,叫做watcher,比如v-text="msg", {{ msg }},即为两个watcher,watcher对象中包含了待渲染的关联DOM元素。
<div id="app"> {{ message }}</div>var app = new Vue({ el: '#app', data: { message: 'Hello Vue!' }})复制代码
基于依赖收集的观测机制原理:
1 将原生的数据改造成 “可观察对象”,通常为,调用defineProperty改变data对象中数据为存储器属性。一个可观察对象可以被取值getter,也可以被赋值setter。
2 在解析模板,也就是在watcher的求值过程中,每一个被取值的可观察对象都会将当前的watcher注册为自己的一个订阅者,并成为当前watcher的一个依赖。
3 当一个被依赖的可观察对象被赋值时,它会通知notify所有订阅自己的watcher重新求值,并触发相应的更新,即watcher对象中关联的DOM改变渲染。
依赖收集的优点在于可以精确、主动地追踪数据的变化,不需要手动触发或对作用域中所有watcher都求值(angular脏检查实现方式的缺点)。特殊的是,对于数组,需要通过包裹数组的可变方法(比如push)来监听数组的变化。在添加/删除属性,或是修改数组特定位置元素时,也需要调用特定的函数,如obj.$add(key, value)才能触发更新。这是受ES5的语言特性所限。
组件系统:
应用类UI可以看作全部是由组件树构成的。
注册一个组件:
Vue.component('my-component', { // 模板 template: '<div>{{msg}} {{privateMsg}}</div>', // 接受参数 props: { msg: String }, // 私有数据,需要在函数中返回以避免多个实例共享一个对象 data: function () { return { privateMsg: 'component!' } }})<my-component msg="hello"></my-component>复制代码
组件的核心选项
1 模板(template):模板声明了数据和最终展现给用户的DOM之间的映射关系。
2 初始数据(data):一个组件的初始数据状态。对于可复用的组件来说,这通常是私有的状态。
3 接受的外部参数(props):组件之间通过参数来进行数据的传递和共享。
4 方法(methods):对数据的改动操作一般都在组件的方法内进行。
5 生命周期钩子函数(lifecycle hooks):一个组件会触发多个生命周期钩子函数,最新2.0版本对于生命周期函数名称改动很大。
6 私有资源(assets):Vue.js当中将用户自定义的指令、过滤器、组件等统称为资源。一个组件可以声明自己的私有资源。私有资源只有该组件和它的子组件可以调用。
Webpack是一个开源的前端模块构建工具,它提供了强大的loader API来定义对不同文件格式的预处理逻辑,这是.vue后缀单文件组件形式的基础。所以在此基础上,尤大开发的vue-loader允许将模板、样式、逻辑三要素整合在同一个文件中,以.vue文件后缀形成单文件组件格式,方便项目架构和开发引用。
其他特性:
1 异步批量DOM更新:当大量数据变动时,所有受到影响的watcher会被推送到一个队列中,并且每个watcher只会推进队列一次。这个队列会在进程的下一个 tick异步执行。这个机制可以避免同一个数据多次变动产生的多余DOM操作,也可以保证所有的DOM写操作在一起执行,避免DOM读写切换可能导致的layout。
2 动画系统:Vue.js提供了简单却强大的动画系统,当一个元素的可见性变化时,用户不仅可以很简单地定义对应的CSS Transition或Animation效果,还可以利用丰富的JavaScript钩子函数进行更底层的动画处理。
3 可扩展性:除了自定义指令、过滤器和组件,Vue.js还提供了灵活的mixin机制,让用户可以在多个组件中复用共同的特性。
Node与Angular与Vue.js视频教程需要视频教程的关注公众号[代码技巧](ID:daimajiqiao)回复 14 即可获取,付出总会有收获
最后建议Vue 2.0 的学习顺序
起步
前端生态/工程化
Vue 进阶