Skip to content

Files

Latest commit

85d5437 · Jul 30, 2018

History

History
62 lines (38 loc) · 4.39 KB

introduce.md

File metadata and controls

62 lines (38 loc) · 4.39 KB

introduce xtemplate


最近随着 nodejs 的流行,各个团队都在进行着探索,其中虽然不是最优,但是最传统,最流行的架构仍然是 mvc,而 v(template) 作为选型的重要一环在前端为主的团队中受到了格外的关注。 大家或许还在迷茫,或许已经坚定得做出了选择,希望这里有机会让我给大家介绍一个 kissy 团队自主研发并得到广泛应用的前后端通用模板引擎 xtemplate(eXtensible template).

起源

xtemplate 首次提交在 2012 年 9 月 ,当时由于原有的 template 模块功能太弱, 特别是扩展不便,于是决定做一款功能全面,方便扩展的前端模板引擎,之后随着 kissy 1.3 的发布而得到了广泛使用, 当然有各种各样的抱怨和反馈,不过在大家的齐心协力下我相信大部分都得到了完善的解决。

nodejs

时间很快就到了 2014 年,今年对于前端是一个不同寻常的年份,各个团队终于可以通过 nodejs 对后端施加实实在在的影响,而模板便作为选型的重要一环而备受关注。 在淘宝 midway 团队中也遇到了同样的问题,虽然可以抛弃 vm 落后的语法而选择真正适合前端的语法,但要取代 vm 那么就要求这个模板引擎必须足够全面强大, 同时除了服务器端外我们还要兼顾客户端渲染,那么就要求这个模板引擎在能够无缝得应用于浏览器端和服务器端。

一直以来,淘宝浏览器端都是使用跨终端(包括 nodejs)的前端框架 kissy,自然模板引擎也是大多使用自带的 xtemplate,团队的第一个想法就是为何不将 xtemplate 应用于 nodejs 端, 于是就开始了 kissy xtemplate 的 nodejs 探索之旅,之后又是漫长的优化, 最终发现 xtemplate 特别是在服务器端的重要性已经超过了 kissy,那么为什么不能独立呢!

独立

8 月份以来经过仔细思考,最终决定 xtemplate 独立出 kissy,完全去除 kissy 的依赖, 上个星期完善了 build 机制后, xtemplate 终于成为了一个独立的跨平台库: https://github.com/xtemplate/xtemplate

特性

xtemplate 的功能基本涵盖了业界类库的常用功能,并根据集团的实际使用情况做了不少微创新。包括对等的 vm 功能,模板继承,异步模板,灵活的扩展机制,完善的工具链支持,方便的前后端共享方案等。 性能上经过 淘宝 v8 团队 的指点的更是不输于其他类库, 在 midway 以及 wormhole 方案中得到了良好的反馈.

期望

最后希望大家能够对 xtemplate 项目多多关注,无论是提 bug 还是建议都十分感谢,如果能够参与使用改进就更好了, kissy 团队随时恭候,愿景是能把 xtemplate 做成一个集团前端团队能够拿得出手的开源项目。

后记

YUI 已经成为了过去时,KISSY 也即将迎来第四个年份以及版本 V5, 为了避免 KISSY 重蹈 YUI 的覆辙以及未来更好得为集团服务,V5 随着 xtemplate 的独立也标志着一个新的开始,请大家拭目以待。

xtemplate 资料

xtemplate 类库: https://github.com/xtemplate/xtemplate

api: https://github.com/xtemplate/xtemplate/blob/master/docs/api.md

语法: https://github.com/xtemplate/xtemplate/blob/master/docs/syntax.md

nodejs 端使用: https://github.com/xtemplate/xtpl

浏览器服务器共享模板方案: https://github.com/xtemplate/xtemplate/blob/master/docs/tutorial/use-on-browser.md

benchmark: https://github.com/xtemplate/xtemplate/blob/master/benchmark/result/2014-08-21-benchmark.md

实现文档: https://github.com/xtemplate/xtemplate/blob/master/docs/impl.md

实现讲解 ppt: http://speakerdeck.com/yiminghe/xtemplate-internal