AngularJS jQuery 还是 Angularjs,真是纠结..

tq0fqeu · 2014年06月09日 · 最后由 tomatoo 回复于 2016年06月23日 · 21831 次阅读

今天写一个小部件,先是用 jQuery 写,后来嫌处理数据操作 DOM 麻烦。后来改用 Angularjs 写,数据绑定果然爽,但是事件、动画处理起来就很别扭,尤其是要元素位移的,怎么绕似乎都要再和 DOM 打交道,这个时候又回想起 jQuery 的爽。于是两个结合起来用,结果更是不伦不类,边界区分不好。。。。。于是这一天就把砖从东头搬到西头,再从西头搬到东头

下班的路上,怒买双蛋煎饼,明天接着搬。。。

angularjs 和 jquery 并不冲突,可以合理并存

#1 楼 @leopku 这俩处理问题思路都不一样,是能并存,咋算合理。。

写个小部件无需动用 Angular 吧。

建议试下独立 jQuery, jQuery + Backbone, React.js + Backbone 等组合。

纠结这个是 LZ 没把两者的分工处理好。什么时候用 JQ,什么时候用 angular ,是能够合理并存的。

#3 楼 @billy 明天看看别的 mvc。。

lz 應該糾結 backbone 還是 ng.. 實話說 ng 坑太大,backbone 我能一下午搞懂,ng 簡直 (

jquery 和 Angular 的适用场景不一样,如果只是写个小部件完全没必要用 Angular,找个基于 jQuery 的插件或者自己写个就搞定了 Ps:用 Angular 处理事件别扭?图森破,布局样式/动画就不是 Angular 该关注的事,写个小部件也要 mvc 么?不解

据我所知,ng 是不建议用 jq 的,官方指南的说明。如果需要一些功能,可以去找 ng 的扩展,好像是 directive。 ng 的思路就是扩展 html 的语义,页面里几乎不用 js 的。

用 directive, angularjs 会将 html 中声明了 directive 的 dom 注入到 directive 代码中

团队的前端,在用 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

#12 楼 @hooluupog 哈 太巧了 刚好看这个回答.. 

jQuery 还是必须吧,毕竟很多库都是 jQuery 的。 应该考虑的问题是:backbone, angular or ember 吧。

动画处理起来就很别扭 ∑(っ°Д°;)っ你是要整多复杂的动画啊,假如是那些用 jquery 都能实现的动画明明实现起来很简单的啊……

#14 楼 @QueXuQ 是必须移除 jquery 才对……

angularjs 是邪教

#17 楼 @aptx4869 可是像datepicker, modal, select2这些常用的,都是 jQuery 啊,还是说 Angular 已经有这些库的 Angular 版了?

#19 楼 @QueXuQ bootstrap 有的应该都是有原生实现的 http://angular-ui.github.io/bootstrap/ 而 select2 这种形式看上去很美,但实际上对移动端体验不怎么样……

如果只需要数据绑定的话可以看一下 Ractive.js

#10 楼 @saiga 这就是向 DOM 操作的一种妥协

推荐一下我最近在学习的网易 js 框架http://nej.netease.com/

#22 楼 @fredwu 确是清爽,准备试试,唯一担忧的以后哪个才能成为 mvc jq

#24 楼 @xiongxin8802 貌似不搭, btw 不论前后,个人对这样又大(chou)又全(ying)的 lib 不感冒

#26 楼 @tq0fqeu http://nej.netease.com/course/topic/template/ 他的模板引擎很强大,对于数据的处理很好的,并且速度也很快

#23 楼 @tq0fqeu 动画的话你可以用 css3 的 animate,动态判定 class。 另外,angularjs 强调的是不用零散的 dom 操作,面向数据。而不是全面禁止对 dom 操作。否则 canvas 不就进了 angularjs 黑名单了?

@xiongxin8802 一个没有 github 地址,最近更新在 2012-08-30 的库有什么好学的。

@xiongxin8802 收到。这个 repo 貌似不属于网易官方。还是谨慎些吧,成熟的库比较好一点,除非你是手中无库,心中也无库,随心所欲的 JS 大牛。

#31 楼 @billy 这个是官方https://github.com/NetEaseWD/NEJ forked from genify/NEJ

@xiongxin8802 Music 那个做得挺不错,速度也好快。提交的是 html, 有点像 pjax

#33 楼 @billy 恩,我就是看到了网易音乐,才学习了下 nej,确实很不错的框架,特别是他的模板引擎,我现在手上做的小项目就用它了

#34 楼 @xiongxin8802 一个人用无所谓,如果你希望以后还有人跟你合作,最好用些烂大街的框架。

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解决一切.

#36 楼 @suffering 我也是直接移除 jQuery. 一个 Angular 已经很够用了。

#3 楼 @billy backbone 和 angularjs 不是类似的东西么?用 jq+bb 与 jq+ng 有啥不同?

@lawrence 不能说类似,只能说都可以归类于前端 mv* 类框架。 做出的东西效果可以基本相同, 但实现方法差别很大。

#39 楼 @billy 你两个都精通么?用哪个好?

#37 楼 @hardywu 把乃用 ng 开发的小网站网址发来:)

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.

想要一个从 jQuery 切换到 Angular 的指南. 感觉目前 Angular 的学习曲线有些陡.

操作 DOM 的地方放到 directive 中。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册