在AngularJS中使用jQuery是一个好习惯吗?

我多年来一直在使用jQuery。 现在,我想学习构建单页网站的新内容。 我选择了AngularJS。

目前我想知道在AngularJS中使用jQuery是否是一个好主意?

例。

我在AngularJS控制器中有类似的东西:

$http.post('ajax/gettimeline', { page: page }).success(function (data) { $rootScope.loading = false; // Here I need to built dynamic html with getting and setting // dynamic elements size, positions, change their properties, etc. } }); 

使用jQuery构建这些动态html元素是一项简单的任务。 但是使用AngularJS看起来会很痛苦。

将不胜感激任何建议。

谢谢

不,这不是一个好主意。 您正在使用Angular应用程序中的jQuery编码实践,这会让您头疼 – 因为这些实践违背了Angular精神,也因为您无法获得Angular的好处。

Angular开发中最重要的部分之一是:您不应该从控制器操纵DOM。 这在jQuery中很好,但是在Angular中,你应该修改你的模型并让Angular渲染它。 Angular有一个模板机制,您应该使用它来加载HTML片段。 如果需要动态创建HTML,则应在指令中执行此操作。 其他一切都违反了“关注点分离”原则。

如果您使用jQuery或本机DOM方法来操作输入设置或修改DOM,那么您可以自行设置与Angular的争用,这会导致很多难以调试的错误。 Angular的一个要点是双向数据绑定 ,如果您坚持将数据绑定到HTML,则这不是一个有用的function。 也许一个更简单的模板库,如小胡子或淘汰赛,更符合你的喜好?

获得Angular的好处意味着放弃一些经过validation的真实实践并学习内置指令,尤其是ng-repeatng-ifng-classng-clickng-change以及类似Angular UI的内容 。

大号 使用带有angular.js的jQuery并不是一个好主意。 jQuery做了不同的事情而angular.js做了不同的事情。 jQuery操纵DOM并动态添加,追加,删除元素。 在另一方面,angular.js只是操纵模型数据,但你可以使用内置于angular.js的jqlite。