话题框架与类库 › PEG.js

框架与类库:PEG.js

DSL,创造属于自己的语言

作为一个想要发布一份问卷的用户,也就是用研,他可能需要到问卷的发布页面去点点点进行页面逻辑的配置,这不仅费时费力,而且会有一个问题,如果遇到一些比较专业且复杂的逻辑难以在UI上进行简单的交互,这时候可能就需要找问卷的开发者单独定制。

作为开发者,没有相应领域的知识,需要理解用研的需求会比较困难;作为用研,没有开发的能力导致需求修改需要频繁与开发对齐,花费大量时间。那么有没有一种方法,可以让用研不依赖开发,就可以自己定制问卷呢,答案就是DSL。

网易云商 DSL 领域编程实战

DSL 即领域专用语言(domain specific language / DSL),其基本思想是“求专不求全”,不像通用编程语言那样目标范围涵盖一切软件问题,而是专门针对某一特定问题的计算机语言,非图灵完备的。

DSL 领域专用语言:SQL、JSON、正则表达式、TSX、VUE 等,非图灵完备。

GPL 通用编程语言:Java、JavaScript、C++、Python 等,图灵完备。

简单的理解,DSL 是一门便于人们理解的编程语言或规范语言,并且可以被计算机解释执行。相比于通用编程语言,只能表达有限的逻辑。因为受限的表达性,所以只会在某一些领域广泛应用。

腾讯问卷文本编辑模式重构与改进

腾讯问卷有两种创建问卷的模式,分别是高级编辑与文本编辑。

高级编辑提供方便的UI界面,用户通过拖拽形式即可完成问卷创建。

而文本编辑则是通过纯文本来生成问卷,适合需要大量创建题目的用户。

当前文本编辑模式的解析器基于正则表达式实现,代码逻辑十分分散且复杂,使得想添加新语法会变得非常困难。

而且并没有实现文本与问题ID的绑定,每次对文本内容修改时,会重新解析并实时生成新的问题ID。

问题ID的变化会使之前设置的DSL(根据ID来处理逻辑)全部失效,同时还会导致以往关联的答案数据因为ID的丢失,而变得无效。

规则引擎

规则引擎其实不是新兴起的东西了,这个概念的提出其实可以追溯到上世纪,规则引擎起源于基于规则的专家系统。

手写一个解析器

2020 除了写正则,你还应该学写一个解析器

前端 DSL 实践指南(上)—— 内部 DSL

前言近几年,前端社区中 DSL 这个词开始频繁出镜,这和环境的变化有很大关系: React、Vue、Angular 等现代框架的表现层设计往往和 DSL 有较强的关联,透过这些优秀作品我们可以得到一些实践指引。前端相关语言的…

  • «
  • 1
  • »

Home - Wiki
Copyright © 2011-2024 iteam. Current version is 2.124.0. UTC+08:00, 2024-05-02 17:43
浙ICP备14020137号-1 $Map of visitor$