内置语法

FIS 项目曾经历了很久的 “努力做好编译工具” 的时代。那段时间里,FIS 走了很多弯路,那时我们认为前端领域需要很复杂的编译工具才能很好的处理各种开发需求。2013年初,FIS 的编译工具非常庞大复杂,日益暴露出来的问题已经开始不再收敛了,这促使 FIS 小组重新审视 FIS 的编译系统: 满足前端开发需求的最小编译规则集是什么

前端编译工具有必要那么复杂么?答案是 完全没必要!想象一下尺规作图,一把直尺,一只圆规,就可以做出很多基本几何操作。经过 FIS 团队不断实践总结,我们发现支持前端开发所需要的编译能力 只有三种

  • 资源定位:获取任何开发中所使用资源的线上路径;
  • 内容嵌入:把一个文件的内容(文本)或者 base64 编码(图片)嵌入到另一个文件中;
  • 依赖声明:在一个文本文件内标记对其他资源的依赖关系;

一套前端编译工具,只要实现上述3项编译能力,就可以变得非常易用,代码可维护性瞬间提高很多。

这三种编译能力作为 FIS 的内置语法提供:

内置语法主要针对 html、css、js 等三种语言提供不同的编译语法。假设遇到后端模板、异构语言、前端模板等如何让内置语法起效呢?

  1. // FIS 中前端模板推荐预编译为 js,所以应该使用 js 的内置语法
  2. fis.match('*.tmpl', {
  3. isJsLike: true
  4. });
  1. fis.match('*.sass', {
  2. isCssLike: true
  3. });
  1. fis.match('*.xxhtml', {
  2. isHtmlLike: true
  3. })