|
@@ -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` 函数。
|
|
|
|
|
|
|
|
|
|