大家谈谈对框架的挑选 Ember.js、Backbone.js、Knockout.js、Spine.js、Batman.js , Angular.js - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a Javascript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
Javascript 权威指南第 5 版
Closure: The Definitive Guide
meteor2013
V2EX    Javascript

大家谈谈对框架的挑选 Ember.js、Backbone.js、Knockout.js、Spine.js、Batman.js , Angular.js

  •  1
     
  •   meteor2013 2013-01-27 11:14:07 +08:00 28764 次点击
    这是一个创建于 4644 天前的主题,其中的信息可能已经有所发展或是发生改变。
    Ember.js、Backbone.js、Knockout.js、Spine.js、Batman.js 和 Angular.js

    1. 轻量级的应用选择哪一个会比较好?
    2. 那一个比较简单,容易上手
    3. 哪一个开发周期最短?
    24 条回复    2015-04-29 06:05:59 +08:00
    qiao
        1
    qiao  
       2013-01-27 11:25:06 +08:00   1
    参看 GitHub 上的这个 repo : https://github.com/addyosmani/todomvc

    把使用每个框架写出来的代码对比一下你就应该会有清晰的了解了。
    insraq
        2
    insraq  
       2013-01-27 11:55:24 +08:00   1
    你的这三个问题都不是能直接给出答案的。

    1. Backbone.js和Spine.js很相近,核心差不多,只是API不同。框架很小,没有DOM Binding - 需要自己写。Backbone.js应用广泛,也比较成熟,社区比较大。
    2. Knockout.js则是几乎纯粹的DOM Binding,没有一个默认的组织程序的架构。
    3. Ember.js Batman.js Angular.js都比较晚一些,吸取了前两类的优点,既提供DOM Binding,又有MVC架构支持。具体的不同在于DOM Binding的机制,看个人喜好。
    kenshin
        3
    kenshin  
       2013-01-27 13:20:18 +08:00 via Android
    楼主可以看以下两个网址,使用不同框架实现的同一功能。很简单的项目,很容易分辨不同框架之间的特点。
    这是我的文章,有什么问题可以在这里问我,我也是初学者,互相交流 :)
    http://www.adobe.com/cn/devnet/html5/articles/ember-jquery-phonegap.html
    http://www.adobe.com/cn/devnet/html5/articles/angular-jquery-phonegap.html
    engin
        4
    engin  
       2013-01-27 13:32:42 +08:00
    这个问题还是很难回答,没有“最好”的框架,只有“最”适合自己的。可以大概了解下各个框架之后再做选择,可以参考一篇翻译的文章:
    http://blog.geoinker.com/2012/12/29/seven-Javascript/
    ljbha007
        5
    ljbha007  
       2013-01-27 14:09:47 +08:00
    我刚才试了一下 我把backbone.js的development version下下来把所有注释都删掉 一共只有768行

    所以用框架只是方便点 其实不用框架也不会多很多劳动量
    重要的是代码结构要清晰简洁 能保证随时可以重构某个模块或者功能而不需要通篇都进行大的改动
    meteor2013
        6
    meteor2013  
    OP
       2013-01-27 14:23:17 +08:00
    @ljbha007 我也有同感。

    感觉就写一个非常简单的东西的话,直接Jquery。不用MVC框架反而感觉清爽,执行速度也比较快。

    是不是用MVC的框架好处在于更好的部署代码,因此只有在做很复杂的东西才会有优势?
    meteor2013
        7
    meteor2013  
    OP
       2013-01-27 14:45:02 +08:00
    而且好像如果用了像CakePHP,RoR 之类的框架之后,就完全没有必要用Javascript的前端框架了。

    不知道我说得对不对啊,请大家指正。
    starryin
        8
    starryin  
       2013-01-27 14:55:42 +08:00
    轻量上backbone,很多要自己轮,重量上angular
    前端框架解决的问题和后端mvc框架还是有很多不同点的
    ljbha007
        9
    ljbha007  
       2013-01-27 15:51:01 +08:00   1
    @meteor2013
    前端框架主要是用来做丰富的ajax应用的 可以和ror之类的框架构建的REST API配合
    jinwyp
        10
    jinwyp  
       2013-01-28 00:59:18 +08:00
    backbone 或 angular 是目前最好选择. 如果做一个登陆和注册页面, 即使是非常复杂的. 还是jQuery合适.

    如果要做一个数据交互非常多的, 例如购物车, 或在线应用. 还是backbone比较好. backbone的好处就是易学,功能少, 而且可以理解很多概念. 而且插件非常多.

    如果有很多基础例如mvc 可以用google的angular. 较难. 目前建议在等等
    其他的都是根据自己对mvc理解情况 资料比较少.
    E2gCaBAT5I87sw1M
        11
    E2gCaBAT5I87sw1M  
       2013-01-28 08:22:04 +08:00
    我看很多老外在这几个框架选来选去,AngularJS是最终归宿,我也跟个潮流
    yaozhifeng
        12
    yaozhifeng  
       2013-01-28 09:41:02 +08:00
    @jinwyp 怎么会觉得Angular难呢,我看了几个框架,Angular最简单易懂,写出来的东西也好维护。backbone我就没看懂,东西太多。
    tss
        13
    tss  
       2013-01-28 10:16:53 +08:00
    AngularJS
    fiture
        14
    fiture  
       2013-01-28 10:33:05 +08:00
    真心木有完全去用其中的某一个框架,backbone倒是实践了一下。不知道你们是不是都用过这些东东?
    aisensiy
        15
    aisensiy  
       2013-01-28 10:36:37 +08:00
    @ljbha007 恩,说的好,我也觉得这样简单的框架好,便于入手,也便于根据自己需求改进。
    jinwyp
        16
    jinwyp  
       2013-02-08 14:50:09 +08:00
    其实如果用了 AngularJS Ember.js 这种 jQuer都基本不用了. 就是都是dom binding. 数据json变化了, 网页数据自动更新.所以也不用jQuery了.

    backbone是更好了组织程序结构. 但没有其他任何dom binding的功能. 所以如果小页面反而没有直接用jQuery好.

    其他例如AngularJS Ember.js 这种都是大而全的功能,想要的功能都有了,例如绑定,mvc结构. 属性计算, 路由等 学起来有些难度,其实了解过一些后端框架 概念都差不多
    WarWithinMe
        17
    WarWithinMe  
       2013-02-17 16:43:48 +08:00   1
    @jinwyp 如果要自定义Dom Binding。例如插入数据时候动画显示,这些MVC框架会不会有些不灵活?
    lyric
        18
    lyric  
       2013-02-19 02:22:24 +08:00 via Android
    我用spine的原因是它有coffee版而且我可以一晚上读完它的代码。
    shawiz
        19
    shawiz  
       span class="ago" title="2013-02-19 02:57:08 +08:00">2013-02-19 02:57:08 +08:00
    如果能选择,可以直接跳过 backbone 之流,直接上 ember 或 angular.

    ember 和 angular 都尝试过,结果发现 ember 比 angular 大很多,而且默认包没有包含 DataStore, 最糟糕的是,不知道是什么原因,我们怎么改也没法运行 ember 最基本的例子. 最后还是选择了 angular.
    jinwyp
        20
    jinwyp  
       2013-02-21 13:49:44 +08:00
    @WarWithinMe 你说的动画的问题,是目前所有框架都会遇到的问题, angular在下一个版本会支持动画的问题,动画的问题设计到页面切换,数据载入时机. 比较复杂,目前的框架都没有针对动画做处理. backbone本身没有绑定功能. 而且数据变化时也没必要用动画,只有页面和局部切换时才需要动画. 但都要自己处理
    lyric
        21
    lyric  
       2013-02-21 15:32:07 +08:00
    看了一下angularJS ... 嗯,我太土了,我打算用它了
    arden
        22
    arden  
       2013-02-28 11:23:32 +08:00   1
    真没感觉出来用angularJS这样的框架的优势在哪,总感觉把程序开发搞得越来越复杂了.
    ixiaohei
        23
    ixiaohei  
       2015-01-06 17:07:46 +08:00
    @arden 用了下angular,发现对小页面优势不大,但是维护那些上千行jquery代码的页面,各种dom绑定,反而觉得轻松了
    onlyurei
        24
    onlyurei  
       2015-04-29 06:05:59 +08:00
    knockout单独用的话只适合传统的服务器程序页面动态化。
    如果要做单页程序(SPA)的话需要配合其他几个库来实现SPA的所有基本功能。
    最近刚开源我用knockout和其他几个库搭建的微型单页程序框架,有兴趣可以看看:
    https://github.com/onlyurei/knockout-spa
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1183 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 23:34 PVG 07:34 LAX 16:34 JFK 19:34
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86