1.0.0 • Published 8 years ago

assam.js v1.0.0

Weekly downloads
4
License
MIT
Repository
github
Last release
8 years ago

如何使用

1.要在项目中引入assam, 可以使用bower:

$ bower install --save assam.js

assam默认依赖jQuery. 你也可以选用其它的库

2.你也可以使用npm进行安装

$ npm install assam.js --save

运行测试

要运行项目中的测试用例, 你可以:

$ npm test

或者:

$ make test

语法

因为这个前端渲染引擎直接使用了Mustache的语法,而没有自己再设计一套,所以语法完全可以直接参照这里

实现方法

  1. 首先在一开始将所有partials替换到应有的位置,然后将所有comment取出,这两部类似于预处理,仅仅是对原模板进行一些文本上的替换和删减
  2. 然后到了核心的renderSection部分。之所以说它核心是因为我们可以将对模板的处理过程近似看作是对renderSection的递归调用。伴随着renderSection递归调用过程的,是上下文的切换。上下文是随着一层层section的深入而同时一层层地解引用的。递归总会有个终止条件,而这里的终止条件就是当再也发现不了section的时候,引擎就会去调用renderVariable,根据上下文对变量做替换,非常容易理解。
  3. 需要说明的是,这里对inverted section的处理使用了lazy evaluation的方式,也就是说,先不碰inverted section的标签,直到所有内容(包括inverted section里面的内容)都已经渲染完之后,再根据inverted section的tag的值判断显不显示其中的内容。如果不是lazy evaluation,则需要在每次调用renderSection之前,先检查是否有inverted section的存在,这样就多了不少处理。使用lazy evaluation虽然会潜在地多做一些无用的工作,但在处理上来说会容易很多。
  4. 对于variable的处理基本就是在当前上下文中找变量
1.0.0

8 years ago

0.9.0

8 years ago