HcySunYang 7 lat temu
rodzic
commit
58a7d5bd43
2 zmienionych plików z 3 dodań i 2 usunięć
  1. 1 0
      README.md
  2. 2 2
      note/7创建编译器.md

+ 1 - 0
README.md

@@ -15,6 +15,7 @@
 ##### [4Vue选项的规范化](/note/4Vue选项的规范化)
 ##### [5Vue选项的合并](/note/5Vue选项的合并)
 ##### [6Vue的初始化](/note/6Vue的初始化)
+##### [7创建编译器](/note/7创建编译器)
 
 ### 附录
 

+ 2 - 2
note/7创建编译器.md

@@ -8,7 +8,7 @@ const { compile, compileToFunctions } = createCompiler(baseOptions)
 
 上面的代码中 `compileToFunctions` 函数是从 `createCompiler` 函数的返回值中解构出来的。
 
-由此可知 `compileToFunctions` 函数是通过调用 `createCompiler` 函数创建出来的,并以 `baseOptions` 作为参数。`createCompiler` 函数顾名思义他的作用就是创建一个编译器,那么到底是怎么创建出来的呢?想搞清楚这个问题我们就需要具体看一下 `createCompiler` 函数了,根据引用关系可知 `createCompiler` 函数来自于 `compiler/index.js` 文件,注意这里的 `compiler/index.js` 可不是 `./compiler/index.js`,这里的 `compiler/index.js` 指的是 `src/compiler/index.js` 文件,我们打开这个文件看一下:
+由此可知 `compileToFunctions` 函数是通过以 `baseOptions` 为参数调用 `createCompiler` 函数创建出来的。`createCompiler` 函数顾名思义他的作用就是创建一个编译器,那么到底是怎么创建出来的呢?想搞清楚这个问题我们就需要具体看一下 `createCompiler` 函数了,根据引用关系可知 `createCompiler` 函数来自于 `compiler/index.js` 文件,注意这里的 `compiler/index.js` 可不是 `./compiler/index.js`,这里的 `compiler/index.js` 指的是 `src/compiler/index.js` 文件,我们打开这个文件看一下:
 
 ```js
 /* @flow */
@@ -175,7 +175,7 @@ export function createCompileToFunctionFn (compile: Function): Function {
 
 以上是 `createCompileToFunctionFn` 函数的代码,我们发现这个函数的返回值是一个函数,该函数才是我们真正想要的 `compileToFunctions`,在返回这个函数之前定义了常量 `cache`,所以 `cache` 变量肯定是被 `compileToFunctions` 函数引用的,那么这里可以理解为创建了一个闭包,其实如果大家留意的话,在上面的讲解中我们已经遇到了很多利用闭包引用变量的场景,还是拿上面的代码为例,`createCompileToFunctionFn` 函数接受一个参数 `compile`,而这个函数其实也是被 `compileToFunctions` 闭包引用的。
 
-至此我们经历了一波三折,终于找到了 `compileToFunctions` 函数,执行 `compileToFunctions` 函数,其实就是在执行 `src/compiler/to-function.js` 文件中 `createCompileToFunctionFn` 函数返回的 `compileToFunctions` 函数。
+至此我们经历了一波三折,终于找到了 `compileToFunctions` 函数,`/entry-runtime-with-compiler.js` 文件中执行 `compileToFunctions` 函数,其实就是在执行 `src/compiler/to-function.js` 文件中 `createCompileToFunctionFn` 函数返回的 `compileToFunctions` 函数。