Vue.js --- 源码目录设计
Vue.js 的源码都在 src ⽬录下,其⽬录结构如下。
src
├── compiler # 编译相关
├── core # 核⼼代码
├── platforms # 不同平台的⽀持
├── server # 服务端渲染
├── sfc # .vue ⽂件解析
├── shared # 共享代码
compiler
compiler ⽬录包含 Vue.js 所有编译相关的代码。它包括把模板解析成 ast 语法树,ast 语法树优化,代码 ⽣成等功能。
编译的⼯作可以在构建时做(借助 webpack、vue-loader 等辅助插件);也可以在运⾏时做,使⽤包含 构建功能的 Vue.js。显然,编译是⼀项耗性能的⼯作,所以更推荐前者——离线编译。
core
core ⽬录包含了 Vue.js 的核⼼代码,包括内置组件、全局 API 封装,Vue 实例化、观察者、虚拟 DOM、⼯具函数等等。
platform
Vue.js 是⼀个跨平台的 MVVM 框架,它可以跑在 web 上,也可以配合 weex 跑在 natvie 客户端上。 platform 是 Vue.js 的⼊⼝,2 个⽬录代表 2 个主要⼊⼝,分别打包成运⾏在 web 上和 weex 上的 Vue.js。
server
Vue.js 2.0 ⽀持了服务端渲染,所有服务端渲染相关的逻辑都在这个⽬录下。注意:这部分代码是跑在 服务端的 Node.js,不要和跑在浏览器端的 Vue.js 混为⼀谈。
服务端渲染主要的⼯作是把组件渲染为服务器端的 HTML 字符串,将它们直接发送到浏览器,最后将 静态标记"混合"为客户端上完全交互的应⽤程序。
sfc
通常我们开发 Vue.js 都会借助 webpack 构建, 然后通过 .vue 单⽂件的编写组件。 这个⽬录下的代码逻辑会把 .vue ⽂件内容解析成⼀个 JavaScript 的对象。
shared
Vue.js 会定义⼀些⼯具⽅法,这⾥定义的⼯具⽅法都是会被浏览器端的 Vue.js 和服务端的 Vue.js 所共享 的。