return n * n;
}
square(“2”); // Error!
//添加类型注释,现在 Flow 就能检查出错误,因为函数参数的期待类型为数字,而我们提供了字符串。
#### 1.2 Vue.js源码目录###### Vue.js 的源码都在 src 目录下,其目录结构如下:
src
├── compiler # 编译相关
├── core # 核心代码
├── platforms # 不同平台的支持
├── server # 服务端渲染
├── sfc # .vue 文件解析
├── shared # 共享代码
###### compilercompiler 目录包含 Vue.js 所有编译相关的代码。它包括把模板解析成 ast 语法树,ast 语法树优化,代码生成等功能。###### corecore 目录包含了 Vue.js 的核心代码,包括内置组件、全局 API 封装,Vue 实例化、观察者、虚拟 DOM、工具函数等等。###### platformsVue.js 是一个跨平台的 MVVM 框架,它可以跑在 web 上,也可以配合 weex 跑在 native 客户端上。platform 是 Vue.js 的入口,2 个目录代表 2 个主要入口,分别打包成运行在 web 上和 weex 上的 Vue.js。 这里重点分析一下web入口打包后的Vue.js。###### server所有服务端渲染相关的逻辑都在这个目录下。###### sfc通常我们开发 Vue.js 都会借助 webpack 构建, 然后通过 .vue 单文件来编写组件。 这个目录下的代码逻辑会把 .vue 文件内容解析成一个 JavaScript 的对象。###### sharedVue.js定义的一些工具方法都放在这个目录下。#### 1.3 Vue.js构建方式Vue.js 源码是是众多module(模块)基于 [Rollup]( ) 构建的,它的构建相关配置都在 scripts 目录下。  在vue.js源码其实位置可以看到
“scripts”: {
...
"dev": "rollup -w -c scripts/config.js --environment TARGET:web-full-dev",
...
}
我们从vue源码的scripts/config.js文件中找到 TARGET:web-full-dev
‘web-full-dev’: {
entry: resolve('web/entry-runtime-with-compiler.js'),
dest: resolve('dist/vue.js'),
format: 'umd',
env: 'development',
alias: {
he: ‘./entity-decoder’ },
banner
}
找到了开始文件就是 “web/entry-runtime-with-compiler.js”#### 1.4 Vue.js入口从上面提到的构建过程可以看出,入口文件是`src/platforms/web/entry-runtime-with-compiler.js`### 最后>由于文档内容过多,为了避免影响到大家的阅读体验,在此只以截图展示部分内容
>(img-xO6W8XBK-1719230659175)][外链图片转存中...(img-E2cXjNhg-1719230659176)]>由于文档内容过多,为了避免影响到大家的阅读体验,在此只以截图展示部分内容
>