【问题标题】:Build website with both jquery and angularjs使用 jquery 和 angularjs 构建网站
【发布时间】:2015-09-10 15:37:08
【问题描述】:

我在FAQs of Angular 上读到“如果应用程序启动时 jQuery 存在于您的应用程序中,Angular 可以使用 jQuery”。

我的问题是,如果网站包含 jquery 和 angularjs 脚本,这是一种好的做法还是会出现任何冲突或性能问题?

我打算建立一个同时包含 jquery 和 angularjs 的网站。

这样做的原因是我计划将 jquery 主要用于轮播、幻灯片、灯箱、日历、表单验证等插件,而 angularjs 将主要用于数据绑定。 (主要是 ajax 请求,然后使用 ng-repeat 等将其绑定到一个表)

您认为这是一个好方法还是我应该只坚持一个(jquery 或 angular)来完成所有过程?

这是因为我不确定旋转木马、幻灯片、灯箱等有多少插件可以在 angular 中使用,以及我是否能够找到可能存在于 jquery 但不存在于 angular 中的此类插件。

非常感谢!

【问题讨论】:

  • 它可以正常运行,但我建议 angular 用户只使用 angular,因为它采用了完全不同的方法,你不应该混合使用它们。

标签: javascript jquery html angularjs


【解决方案1】:

从技术角度来看 AngularJS 和 jQuery 一起使用是没有问题的。事实上,Angular 本身包含一个轻量级的 jQuery 版本:jqLite。所以你永远不会在没有 jQuery 的情况下完全使用它。例如,基本选择器始终可用。但是,这还不足以运行您的 jQuery 插件。

从架构的角度来看,混合使用 jQuery 和 Angular 可能会令人困惑。某些事情可以通过“jQuery 方式”或“Angular 方式”来完成——例如将点击处理程序附加到元素。如果你包含 jQuery,你应该在这些问题上保持一致。我建议你用 Angular 的方式来做(例如,在你的模板中使用 ng-click 而不是在指令的链接函数中使用 $(selector).on('click',...) ——或者在服务或其他地方更糟糕)。

在您的情况下,将两者一起使用是合理的。有很多很棒的 jQuery 插件,但还没有适合所有这些的 Angular 版本。我会只为那些插件包含 jQuery,并约束自己不要使用除此之外的 jQuery 功能。

【讨论】:

  • 有很多很棒的 jQuery 插件,但还没有适合所有这些的 Angular 版本。 这就是为什么 jquery 仍然在我的盘子上。我对 Angular 还是很陌生,看到 AngularJS 2 很快就会推出,而 AngularJS 1 是浮动的。我认为,当 AngularJS 应该像 Jquery 一样完善时,我会考虑在未来的项目中使用完整的 Angular。但是那个时候,另一个框架将会松散..大声笑
【解决方案2】:

很明显,您会在网站的初始加载中获得成功,因为您不仅会获得 Angular 脚本,还会调用 jQuery 脚本。

你这样做没有问题,这是你必须权衡利弊的事情。

至于这个:

这样做的原因是我打算将 jquery 主要用于插件 如轮播、幻灯片、灯箱、日历、表单验证等。 而 angularjs 将主要用于数据绑定。 (主要是ajax 请求然后使用 ng-repeat 等将其绑定到一个表)

因此,通过一些搜索(用户界面引导程序),您会发现像 轮播、幻灯片、灯箱、日历 之类的东西都可以通过 Angular 指令(Angular 与 DOM 交互的方式)来完成.我用 Angular 创建了一个巨大的小部件拖放屏幕 - 没有 jQuery。因此,您可以实现无限*,并且使用直接 Angular 更容易实现,因为您不太可能遇到消化周期问题。

表单验证 多么有趣的一点,我相信这是多年来大多数 Web 开发人员的痛点。 Angular 的优点在于它直接支持开箱即用。它很好(而且是符号化的)。以邮件验证为例:

<input type="email" ng-model="person.email" ng-required />

Angular 将自动对这封电子邮件进行正则表达式以检查它是否有效。它还将确保存在价值。力量不止于此。就像我说的那样,它得到了广泛的开箱即用支持。

我可以给你的建议是,在 google 上搜索 Angular 组件,在做出决定之前对其进行测试。但我可以向你保证,我已经完成了你所说的一切,纯粹是在 Angular 中。

但编程的乐趣完全取决于你!

*你想象的极限,角度会想办法限制你......等等等等。

【讨论】:

    【解决方案3】:

    这不是recommended。顺便说一句,jQlite 已经包含在 Angular 中...

    【讨论】:

    • 我不认为这篇文章会阻止 jQuery 和 Angular 的结合。 UI bootstrap 只是解决了一个特定的问题,因此它比使用 jQuery 更适合用于特定目的。
    【解决方案4】:

    jqueryangular js 一起使用并不是一个好习惯。Angular 包含您可以从 jquery 获得的几乎所有功能。

    虽然如果您有一些特定场景需要 Angular js 的强类型模型绑定,并且您想将 jquery 用于您的其他工作,那么您可以在单个项目中使用这两者。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-11
      • 2017-03-28
      • 2012-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-14
      • 1970-01-01
      相关资源
      最近更新 更多