关于前端模版的选择

郑意波
  • 114

=如题,本人是前端菜鸟,考虑到学习成本和模版版本稳定等问题,希望大家能给一些意见,ng学习成本太高且越来越臃肿了,如:vue.js、jquery.tmpl.js, AceTemplate.js , EasyTemplate Yaya Templat等,项目只要一个功能就是在页面打开是用AJAX从后台请求的JSON数据对应添加到DOM中,就是所谓的数据双向绑定功能就可以了,(所谓的MVVM框架)其他用户操作还是要用JQ。
如下是知乎上看到的:

angularjs:google出品,思想来自flex,IoC, 脏检测,自定义标签,受限于绑定数量,一般不能超过2000个,入门容易上手难,大量避不开的概念
emberjs:原来是苹果公司的内部项目,使用Object.defineProperties, 体型庞大,MVVM只是其很少一部分
knockoutjs:微软出品,使用函数偷龙转凤,最短编辑长度算法实现DOM的同步,兼容IE6,实现高超,但源码极其难读
winjs:微软出品,使用Object.defineProperties,一个庞大的UI库

react:facebook出品,带来virtual dom的革命性概念,受限于视图的规模
rivets:API比较精致
way:使用定时间同步
vue:使用Object.defineProperties实现同步,实现精致,但功能薄弱
regular:最近一个月才冒出来的新东西,网易推出的JS框架,自称AngularJS与React的合体
drop:在知乎又刚刚听说一个,用TypeScript写的

如果有最新的模版也可以提出来,请大家不惜赐教。

回复
阅读 7.5k
6 个回答
✓ 已被采纳

用AJAX从后台请求的JSON数据对应添加到DOM中

这是模版渲染,而绝非“双向数据绑定”或MVVM
题主列的多数都是MVVM,双向数据绑定,对于只需要模版渲染的场合来说,可以说是overkill

单纯的模版渲染库知名的有

  • underscore或更好的lodash

    • EJS语法(<%code%>执行和<%=xxx%>输出,没了) 学习成本无法更小
    • 如果不要其他功能,可以选择lodash(允许只包含要用的部分),或者自己删减underscore
  • mustache系,包括mustache, hogan, handlebar等等

    • 特点是"Logic-less",强调模版中无逻辑,增强模版的可移植性
    • 有时这个特点有些碍手碍脚,但相对很容易实现前后台统一渲染逻辑
  • swig

    • 和Djange,Liquid,Twig等等是一家人
    • 和Djange,Liquid,Twig等等是一家人
    • 别的好像真没啥……

上述模版引擎多数都有编译能力,也就是可以在开发部署的时候编译好,减轻用户浏览器的压力,这对移动端来说可能很重要

真的特别喜欢MVVM(比如有很多表单逻辑要处理之类),这里推荐一个体积异常小但相对功能丰富的RiotJS。1.0是个router+eventemitter+template,2.0追加了MVVM能力,还是保持着娇小的身材

的确模板我发现好多人都推荐handlebars,现在一直使用ember.js,用起来方便,但是学习成本稍微有点高,我在学习的时候只有看它的官方文档,淘宝京东关于ember的中文书籍只有一本当时才翻译不久的老版本ember实战,这本书当时都已经跟最新版本脱节了。最初的官方文档写得晦涩难懂,现在的官方文档好了很多,不过前不久网上有人做了简单的介绍和使用的中文总结文档,但是知识点还是很简单,想尽快入门但是又不想看英文官方文档的同学可以去看,地址是http://blog.ddlisting.com,ember是学习成本高,但是用起来方便

做过类似的东西

自己用的是Backbone + jQuery(zepto) + Underscore + RequireJS

  • Backbone 轻量级,支持jquery,自带路由,对象化视图,强大的sync机制减少页面大小从而加快页面显示。
  • jQuery jQuery使用户能更方便地处理HTML(标准通用标记语言下的一个应用)、events、实现动画效果,并且方便地为网站提供AJAX交互。不过主要是jQuery能够使用户的html页面保持代码和html内容分离,只需定义id即可。
  • Underscore是Backbone的依赖库 Underscore 是一个JavaScript实用库,提供了类似Prototype.js的一些功能,但是没有继承任何JavaScript内置对象。
  • RequireJS 你可以顺序读取仅需要相关依赖模块。

自己做的demo的地址: https://github.com/phodal/moqi.mobi

推荐一下doT.js

你要是模板,而不是框架啊。所以知乎上看到跟你要的完全不搭边。
模板推荐handlebars,喜欢大括号语法。

lodash,handlebars都是首选

你知道吗?

宣传栏