本文档全面概述了 Vue.js 2.7 及其核心架构、特性和生态系统。Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面,旨在实现渐进式采用,并侧重于视图层。
有关特定子系统的详细信息,请参阅关于组件系统、响应式系统或构建和分发系统的专用页面。
Vue.js(发音为“view”)是一个旨在简化构建交互式 Web 界面的 JavaScript 框架。2.7 版本,代号为“Swan Song”,是 Vue 2.x 系列在 2023 年 12 月 31 日达到生命周期结束前的最后一个功能发布版本。
Vue (pronounced /vjuː/, like view) is a progressive framework for building user interfaces. It is designed from the ground up to be incrementally adoptable, and can easily scale between a library and a framework depending on different use cases. It consists of an approachable core library that focuses on the view layer only, and an ecosystem of supporting libraries that helps you tackle complexity in large Single-Page Applications.
Vue.js 2.7 的显著之处在于,它将 Vue 3 的一些核心功能(包括 Composition API)回溯到 Vue 2 中,同时保持了与现有 Vue 2 应用程序的向后兼容性。
.vue 文件中来源:README.md42-44 CHANGELOG.md270-283
Vue.js 支持所有符合 ES5 标准的浏览器,包括所有现代浏览器以及 Internet Explorer 9 及以上版本。
Vue.js 遵循清晰的架构,支持其响应式的、面向组件的 UI 开发方法。
来源:.github/CONTRIBUTING.md98-117 README.md42-44
架构由几个核心子系统组成
Vue 的响应式系统基于观察者模式。当在渲染过程中访问 Vue 数据时,会跟踪依赖关系,当数据发生变化时,依赖于该数据的组件会自动更新。
在开发模式下,Vue 使用 JavaScript 的 Proxy(如果可用)来提供访问未定义属性时的有用警告。
来源:src/core/instance/proxy.ts16-25
Vue.js 以多种格式分发,以适应不同的使用场景。
| 构建格式 | 文件 | 描述 | 用例 |
|---|---|---|---|
| UMD | dist/vue.js | 包含编译器的完整构建 | 通过 <script> 标签直接在浏览器中使用 |
| UMD 运行时 | dist/vue.runtime.js | 仅运行时构建 | 当使用预编译模板时 |
| CommonJS | dist/vue.common.js | 包含编译器的完整构建 | 适用于 webpack/browserify 等打包工具 |
| CommonJS 运行时 | dist/vue.runtime.common.js | 仅运行时构建 | 适用于带有预编译模板的打包工具 |
| ES 模块 | dist/vue.esm.js | 包含编译器的完整构建 | 适用于现代打包工具 |
| ES 模块运行时 | dist/vue.runtime.esm.js | 仅运行时构建 | 适用于带有预编译模板的现代打包工具 |
| ES Module Node | dist/vue.runtime.mjs | Node.js 运行时 | 适用于支持 ESM 的 Node.js |
来源:package.json6-9 package.json19-38
来源:package.json41-62 .github/CONTRIBUTING.md82-95
“完整版”和“仅运行时版”之间的区别
Vue.js 拥有广泛的官方和社区维护的软件包生态系统,以满足各种应用程序的需求。
| 包 | 描述 | 仓库 |
|---|---|---|
| vue-router | 单页应用路由 | vuejs/vue-router |
| vuex | 大规模状态管理 | vuejs/vuex |
| vue-cli | 项目脚手架和构建工具 | vuejs/vue-cli |
| vue-loader | webpack 的单文件组件加载器 | vuejs/vue-loader |
| vue-server-renderer | 服务器端渲染支持 | Vue.js 主仓库的一部分 |
| vue-class-component | 基于类的 API 的 TypeScript 装饰器 | vuejs/vue-class-component |
| vue-devtools | 浏览器 DevTools 扩展 | vuejs/vue-devtools |
Vue 2.7 包含几个与主包一起分发的配套软件包
@vue/compiler-sfc:Vue 单文件组件(.vue 文件)的编译器
vue-server-renderer:服务器端渲染能力
vue-template-compiler:用于构建时工具的模板编译
Vue 2.7 代表了 Vue 2 和 Vue 3 之间的过渡版本,它将 Vue 3 的一些关键功能回溯,同时保持与 Vue 2 API 的兼容性。
Vue 2.7 包含以下来自 Vue 3 的功能:
<script setup>:简化的单文件组件语法虽然 Vue 2.7 带来了许多 Vue 3 的功能,但在实现上存在一些重要的差异。
Vue.set())。Vue.js 代码库组织在几个关键目录中
来源:.github/CONTRIBUTING.md97-129
Vue.js 在 MIT 许可下发布,主要由 Evan You 和 Vue.js 社区维护。
The MIT License (MIT)
Copyright (c) 2013-present, Yuxi (Evan) You
来源:LICENSE1-3
欢迎根据项目贡献指南为 Vue.js 做出贡献,贡献指南可在项目的 GitHub 存储库中找到。
来源:.github/CONTRIBUTING.md1-9 .github/PULL_REQUEST_TEMPLATE.md1-36