指南
基础概要
- 安装
- 介绍
- Vue 实例
- 模板语法
- computed 属性和 watcher
- class 和 style 绑定
- 根据条件进行渲染
- 列表渲染
- 事件处理
- 表单 input 绑定
- 组件基础
过渡 & 动画
- 进入、离开和列表的过渡
深入组件
- 组件注册
- props
- 自定义事件
- slot
- 动态组件和异步组件
- Handling Edge Cases
- 状态间的过渡
可重用 & 合成
- mixin
- 自定义指令
- render 函数 & jsx
- 插件
- 过滤器
工具
- 生产环境部署
- 单文件组件
- 单元测试
- TypeScript 支持
扩展升级
- 路由
- 状态管理
- 服务端渲染
内部原理
- 深入响应式原理
升级迁移
- 从 Vue 1.x 迁移
- 从 Vue Router 0.7.x 迁移
- 从 Vuex 0.6.x 迁移到 1.0
其他更多
- 对比其他框架
- 加入 Vue.js 社区
- 认识团队
安装
兼容性
Vue.js 不支持 IE8 及其以下版本,因为 Vue.js 使用的 ECMAScript 5 特性在 IE8 无法模拟。Vue.js 支持所有兼容 ECMAScript 5 的浏览器。
更新日志
最新稳定版本:2.5.13
每个版本的详细更新日志见 GitHub。
Vue Devtools
在使用 Vue 时,我们推荐你在浏览器中安装 Vue Devtools ,可以通过更加友好的用户界面,来审查和调试你的 Vue 应用程序。
直接引入 <script>
标签
通过 script 标签直接下载并引入,Vue
会被注册为一个全局变量。
在开发环境,不要使用最小压缩版本。因为开发版本中,所有常见错误的警告会更加友好!
CDN
我们比较推荐的方式是,链接到可以手动修改的指定版本上:
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.13/dist/vue.js"></script> |
你可以在 cdn.jsdelivr.net/npm/vue 浏览 npm 包的源码。
还可以使用 unpkg 和 cdnjs 来获取 Vue(cdnjs 需要一段时间才能同步,所以可能会无法获取最新版本)。
请务必阅读 Vue 不同构建版本的解释说明,并且在你发布的网站中使用生产环境版本,也就是将 vue.js
替换为 vue.min.js
。
这是一个为了更快速的执行,而进行更小体积优化的构建版本,并不是为了好的开发体验。
NPM
在用 Vue 构建大型应用程序时,推荐使用 NPM 安装方式。它可以很好地与模块打包器(module bundler)(例如 webpack 或 Browserify)配合使用。Vue 还提供用于创建单文件组件的配套工具。
# 最新稳定版本 |
命令行接口工具
Vue.js 提供一个官方的命令行接口工具,用于快速搭建大型单页面应用程序。能够为现代前端开发的工作流程,带来持久强力的基础架构。只需几分钟,就可以建立并运行一个带有「热重载、保存时代码检查以及可直接用于生产环境的构建配置」的项目:
# 安装 vue-cli |
CLI 工具假定用户对 Node.js 和相关构建工具预先有一定程度的了解。如果你是初次接触 Vue,或者刚开始了解前端构建工具,我们强烈建议你不要使用任何构建工具,来完成指南中的示例。
对于大陆用户,建议将 npm 的注册表源设置为国内的镜像,可以大幅提升安装速度。
不同构建版本的解释说明
在 NPM 包的 dist/
目录下,你会找到许多不同构建版本的 Vue.js。以下是它们之间差异的概述:
UMD | CommonJS | ES Module | |
---|---|---|---|
完整版本(Full) | vue.js | vue.common.js | vue.esm.js |
只含有运行时版本(Runtime-only) | vue.runtime.js | vue.runtime.common.js | vue.runtime.esm.js |
完整版本(生产环境) | vue.min.js | - | - |
只含有运行时版本(生产环境) | vue.runtime.min.js | - | - |
术语说明
完整版本(Full):包含编译器(compiler)和运行时(runtime)的构建版本。
编译器(Compiler):负责将模板字符串编译成 JavaScript render 函数的代码。
运行时(Runtime):负责创建 Vue 实例(creating Vue instances)、渲染(rendering)和修补虚拟 DOM(patching virtual DOM) 等的代码。基本上,等同于完整版本减去编译器。
UMD:UMD 构建版本能够直接在浏览器中通过
<script>
标签使用。jsDelivr CDN 提供的默认文件 https://cdn.jsdelivr.net/npm/vue,是运行时+编译器(Runtime + Compiler)的 UMD 构建版本(vue.js
)。CommonJS:CommonJS 版本用于较早期的打包器(bundler)(例如 browserify 或 webpack 1 等)中。用于这些打包器的默认文件(
pkg.main
),是只含有运行时(Runtime only)的 CommonJS 构建版本(vue.runtime.common.js
)。ES Module:ES 模块版本构建用于现代打包器(例如 webpack 2 或 rollup 等)中。用于这些打包器的默认文件(
pkg.module
),是只含有运行时(Runtime only)的 ES Module 构建版本(vue.runtime.esm.js
)。
运行时+编译器(Runtime + Compiler)版本 vs 只含有运行时版本(Runtime-only)
如果你需要在客户端编译模板(例如,向 template
选项传入一个字符串,或者需要将模板中的非 DOM 的 HTML 挂载到一个元素),你需要带有编译器的版本,因而需要完整构建版本。
// 这种情况需要编译器(compiler) |
在使用 vue-loader
或 vueify
时,*.vue
文件中的模板会 在构建时(build time)预编译(pre-compile)为 JavaScript。最终生成的 bundle 中你不再需要编译器(compiler),因此可以直接使用只含有运行时的构建版本(runtime-only)。
由于只含有运行时构建版本(runtime-only)比完整构建版本(full-build)轻量大约 30%,你应该尽可能使用只含有运行时的构建版本。如果你还是希望使用完整构建版本,则需要在打包器中配置别名:
由于运行时版本的构建比其全面版本的重量轻约30%,因此你可以随时使用它。如果你仍然希望使用完整版本,则需要在捆绑程序中配置别名:
webpack
module.exports = { |
Rollup
const alias = require('rollup-plugin-alias') |
Browserify
在项目的 package.json
文件中添加:
{ |
开发环境模式 vs 生产环境模式
对于 UMD 构建版本,开发环境/生产环境模式是必须配置的选项(hard-coded),未压缩版本文件用于开发环境,压缩文件用于生产环境。
CommonJS 和 ES 模块构建版本适用于打包器,因此我们不需要为它们提供压缩版本。你需要自己负责对最终的 bundle 进行压缩。
CommonJS 和 ES 模块构建版本也可以保留初始环境 process.env.NODE_ENV
变量检测,以在打包器运行时的决定具体使用的模式。你应该使用合适的打包器配置来替换这些环境变量,以在打包器运行时控制 Vue 使用哪种模式。将 process.env.NODE_ENV
替换为字符串字面量,可以允许像 UglifyJS 的压缩工具将那些仅开发环境(development-only)用到的代码块全部删除,以减少最终文件的大小。
webpack
使用 webpack 的 DefinePlugin:
var webpack = require('webpack') |
Rollup
const replace = require('rollup-plugin-replace') |
Browserify
使用 envify 来全局替换 bundle。
NODE_ENV=production browserify -g envify -e main.js | uglifyjs -c -m > build.js |
另请参阅生产环境部署。
CSP 环境
某些环境(例如 Google Chrome Apps)强制执行内容安全策略(Content Security Policy - CSP),禁止使用 new Function()
对表达式求值。完整构建版本在编译模板时,会依赖于此功能,因此在这些环境下无法使用。
另一方面,只含有运行时的构建版本(runtime-only build)可以完全兼容 CSP(fully CSP-compliant)。当你在 webpack + vue-loader 或 Browserify + vueify 中使用只含有运行时的构建版本(runtime-only build)时,模板将会预编译为 render
函数,最终的 render
函数能够完美的运行于 CSP 环境。
在开发时进行构建
重要:GitHub 的 /dist
文件夹中的构建文件,仅在版本正式发布时才提交更新。要使用 GitHub 的最新源代码构建的 Vue 版本,你必须自行构建它!
git clone https://github.com/vuejs/vue.git node_modules/vue |
Bower
只能从 Bower 获取构建为 UMD 版本的 Vue.js。
# 最新稳定版本 |
AMD 模块加载器
所有构建为 UMD 版本的 Vue.js 都可以直接当作 AMD 模块使用。