Skip to content

术语表

DSL

DSL 是 Domain Specific Language 的缩写,中文翻译为领域特定语言

而与DSL相对的就是GPL,是 General Purpose Language 的简称,即通用编程语言,也就是我们非常熟悉的 Objective-CJavaPython`` 以及 C` 语言等等。

vue 中的 DSL:

  1. 词法+语法+语义分析

  2. 生成 token 流

  3. 生成模板 ast

  4. 将 ast 转化为 js ast

  5. 将 ast 转化为 render 函数

js
const code = ``

const tokens = tokenize(code) // 词法+语法+语义分析,生成token流

const tAst = parse(tokens) // 生成ast

const jsAst = transform(tAst) // 将ast转化为jsAst

const renderCode = generate(jsAst) // 将jsAst转化为render函数
const code = ``

const tokens = tokenize(code) // 词法+语法+语义分析,生成token流

const tAst = parse(tokens) // 生成ast

const jsAst = transform(tAst) // 将ast转化为jsAst

const renderCode = generate(jsAst) // 将jsAst转化为render函数

SFC

单文件组件,如 vue 文件中将 template、script、style 写到同一个文件下。

IIFE

立即调用函数表达式,是一个在定义时就会立即执行的 JavaScript 函数。

在没有块级作用域的 ES3 时代,是相当普遍的做法。

js
;(function () {
  // 块级作用域
})()
;(function () {
  // 块级作用域
})()

用 IIFE,保证了每一个 IIFE 中的代码变量不会在全局作用域下被访问,也就起到了变量保护的作用。