JSFiddle Hello World 例子
独立构建 vs 运行时构建
- 独立构建:包括编译和支持
template
选项。 它也依赖于浏览器的接口的存在,所以你不能使用它来为服务器端渲染。 - 运行时构建:不包括模板编译,不支持
template
选项。运行时构建,可以用render
选项,但它只在单文件组件中起作用,因为单文件组件的模板是在构建时预编译到render
函数中,运行时构建只有独立构建大小的 30%,只有 16Kb min+gzip 大小。
默认 NPM 包导出的是 运行时
构建。为了使用独立构建,在 webpack 配置中添加下面的别名:
1 | resolve: { |
不要用
import Vue from 'vue/dist/vue.js'
- 用一些工具或第三方库引入 Vue ,这可能会导致应用程序在同一时间加载运行时和独立构建并造成错误。
生命周期钩子
数组
- 突变方法
- push()
- pop()
- shift()
- unshift()
- splice()
- sort()
- reverse()
- 重塑数组
- filter()
- concat()
- slice()
vue 1.0->2.0 改变
v-for track-by
->:key
1 | <div v-for="item in items" :key="item.id"> |
建议尽可能用
v-for
时提供一个key
,类似 Vue 1.X 的track-by="$index"
自定义事件
- 使用
$on(eventName)
监听事件 - 使用
$emit(eventName)
触发事件
keep-alive
把切换出去的组件保留在内存中,可以保留它的状态或避免重新渲染
1 | <keep-alive> |
1.0 写法:
1 | <component :is="currentView" keep-alive> |
v-once
组件中包含大量静态内容时,可以考虑使用 v-once
将渲染结果缓存起来
1 | Vue.component('terms-of-service', { |
过渡 transition
1 | new Vue({ |
1 | <div id="demo"> |
1 | /*v-enter: 定义进入过渡的开始状态。在元素被插入时生效,在下一个帧移除。*/ |
1.0 写法:
1 | <div v-if="show" transition="expand">hello</div> |
1 | /* 必需 */ |
自定义过渡类名
- enter-class
- enter-active-class
- leave-class
- leave-active-class
1 | <link href="https://unpkg.com/[email protected]/animate.min.css" rel="stylesheet" type="text/css"> |
1 | new Vue({ |
过滤器
orderBy
1 | <p v-for="user in orderedUsers">{{ user.name }}</p> |
1 | computed: { |
1.0 写法:
1 | <p v-for="user in users | orderBy 'name'">{{ user.name }}</p> |