在大前端技术领域,当我们遇到了需要解决重复性的问题时,通常会考虑设计一个DSL(Domain-Specific Language)或者抽象出一个框架层,专门来解决这些类似的问题。使用DSL我们并不需要为特定终端编写多套代码,还可以利用宿主语言的抽象能力,确保各终端渲染效果的一致性以及对开发者友好。
目前流行DSL有:React支持的JSX语法、Vue定义的SFC结构和v-*指令集、微信小程序的WXML/WXS语法等。这些DSL最终被编译为目标代码,直接发布于小程序平台,或者借助JS-Runtime运行于APP和Web浏览器。
其中,React是函数式编程思想的实践者,最大的特点是发明了JSX语法,允许开发者使用xml的方式在JS中声明UI,并通过组件化和更加语义化的代码而非模板来高效的定义界面,以提供最大的灵活性和响应能力;React只对开发者暴露基础的生命周期和过程,更多的实现和逻辑细节则交由用户灵活定制,单纯的使用JS语言即可完成整个开发过程,有客户端开发经验的开发者将更容易上手React。
而Vue则希望通过尽可能简单的API实现响应式的数据绑定和UI组件的组合及管理,因此默认屏蔽了非常多的操作细节,这对初学者而言提供了巨大的方便;其单文件组件模板语法也更贴近原生Html5,具备Web前端基础的开发者,将能够流畅的过渡到Vue开发中。
二者的共同设计思想是虚拟DOM以及数据驱动视图更新,设计目的都是为了降低Web开