DSL 初识

DSL 即「Domain Specific Language」,中文一般译为「领域特定语言」,一种为特定领域设计的,具有受限表达性的编程语言。


外部DSL

它是一种独立的编程语言,需要从解析器开始实现自己的编译工具,实现成本较高。但它的语法的灵活性更高,更容易达到用户的表现力需求。

GPPL 即 「General Purpose Programming Language」,又称通用编程语言,例如我们常用的 JavaScript,它们被设计用来解决通用编程问题。

前端常用的模板引擎如 mustache 以及 React、Vue 支持的 JSX 语法都属于外部 DSL。


内部DSL

它是建立在其它宿主语言之上(一般为 GPPL)的特殊 DSL,它与宿主语言共享编译与调试工具等基础设施,学习成本更低,也更容易被集成。他在语法上与宿主语言同源,但在运行时上需要做额外的封装。

你也可以将内部DSL视为针对特定任务的特殊接口封装风格,比如 jQuery 就可以认为是针对 DOM 操作的一种内部 DSL。

内部 DSL 的语法灵活度和语法噪音(syntactic noise)往往取决于宿主语言的选择。

内部 DSL 风格指南(JavaScript 描述)

5WWfr6.pngopen in new window

上次更新:
贡献者: chenzilin