今天写一个小部件,先是用 jQuery 写,后来嫌处理数据操作 DOM 麻烦。后来改用 Angularjs 写,数据绑定果然爽,但是事件、动画处理起来就很别扭,尤其是要元素位移的,怎么绕似乎都要再和 DOM 打交道,这个时候又回想起 jQuery 的爽。于是两个结合起来用,结果更是不伦不类,边界区分不好。。。。。于是这一天就把砖从东头搬到西头,再从西头搬到东头
下班的路上,怒买双蛋煎饼,明天接着搬。。。
写个小部件无需动用 Angular 吧。
建议试下独立 jQuery, jQuery + Backbone, React.js + Backbone 等组合。
jquery 和 Angular 的适用场景不一样,如果只是写个小部件完全没必要用 Angular,找个基于 jQuery 的插件或者自己写个就搞定了 Ps:用 Angular 处理事件别扭?图森破,布局样式/动画就不是 Angular 该关注的事,写个小部件也要 mvc 么?不解
据我所知,ng 是不建议用 jq 的,官方指南的说明。如果需要一些功能,可以去找 ng 的扩展,好像是 directive。 ng 的思路就是扩展 html 的语义,页面里几乎不用 js 的。
团队的前端,在用 ng 开发单页应用。 他们也痛苦于 ng 操作 DOM 没 jquery 方便。但是他们强迫自己不碰 jquery,完全用 ng 的方式开发。 导致初期开发成本略高,主要是开发定制组件。越到后面开发效率越高,并且代码更易于维护。
jquery 和 Angular 混用确实有点不伦不类,这两个东西的思考方式是有差别的。 参考这里的精彩回答: https://stackoverflow.com/questions/14994391/how-do-i-think-in-angularjs-if-i-have-a-jquery-background (翻译版)http://www.infoq.com/cn/news/2013/11/how-to-think-angularjs
#19 楼 @QueXuQ bootstrap 有的应该都是有原生实现的 http://angular-ui.github.io/bootstrap/ 而 select2 这种形式看上去很美,但实际上对移动端体验不怎么样……
#26 楼 @tq0fqeu http://nej.netease.com/course/topic/template/ 他的模板引擎很强大,对于数据的处理很好的,并且速度也很快
#29 楼 @billy https://github.com/genify/NEJ
http://www.icourse163.org/ http://music.163.com/
这两个都是基于 NEJ 框架做出来的
@xiongxin8802 收到。这个 repo 貌似不属于网易官方。还是谨慎些吧,成熟的库比较好一点,除非你是手中无库,心中也无库,随心所欲的 JS 大牛。
#31 楼 @billy 这个是官方https://github.com/NetEaseWD/NEJ forked from genify/NEJ
ng 和 jQ 很好结合的啊 >_<.
我做一个业余项目 (https://github.com/suffering/rubychinaspa) 时,因为 NG 的事情绑定不丰富 (或我不了解), 于是专门引入了 JQ.
JQ 不是直接在 NG 的代码里引用。而是在directives
里封装好。(后来觉得为了一点点的事件绑定引入那么大块的 JQ 代码实在没必要,于是后来将 JQ 移除了).
另外,NG 并对动画的支持其实很好的。ngAnimate
的存在就是用来解决动画问题的。支持 JS 版的动画,也支持 css3 版的动画。(NG 只是在事件触发时动态增减一两个勾子而已。而后,随心所欲地 callback 就是了.)
对 NG 不太了解的话,可能会对 DOM 位置的变化很是头疼。这个可以从两个方向来思考问题。一个是在$http
, $resource
取数据返回时就直接在callback
里改数据结构/排序等。另一个就是在数据由MC
进入V
后,再通过$filter
等更改其 DOM 位置。
最后,除了这些内置的解决方案外,DIRECTIVE
解决一切。
jQuery 真的是很方便。在 React 的文档 https://facebook.github.io/react/docs/tutorial.html 中就引用了 jQuery, 提示
We included jQuery here because we want to ~simplify the code of our future ajax calls~, but it's NOT mandatory for React to work.