【问题标题】:Why is jQuery an Ember.js dependency?为什么 jQuery 是 Ember.js 依赖项?
【发布时间】:2013-05-22 23:15:28
【问题描述】:

我可以理解需要一些抽象层来执行常见操作,例如检索 DOM 元素、属性操作等,但是 jQuery 是一个非常庞大的库,对于 Ember 来说似乎有点过头了。

查看源代码后,在 Ember 中使用 jQuery 大约只有 30 次左右,看起来大部分 jQuery 使用是简单的选择器调用、一些事件和一些 DOM 遍历。

Ember.$(rootElement).off('.ember', '**').removeClass('ember-application');

...

elem = this.$();

...

this.$().appendTo(target);

...

Ember.$(window).on('hashchange.ember-location-'+guid, function() {

等等

Ember 的每个应用程序都需要 jQuery 是否还有其他原因?

是否可以将这几个用法嵌入到 Ember 中并将 jQuery 作为依赖项删除?

【问题讨论】:

  • Jquery 对于不想写javascript 的人来说基本上是Javascript。话虽如此,有很多人会简单地为 jquery 的 1 个奇异函数包含一些东西,而不是用 Javascript 编写 5 或 10 行代码来完成它。至少这是我的经验。
  • 这并没有错
  • @ParijatKalia 是在开玩笑吗?

标签: ember.js


【解决方案1】:

问题是 Tom Dale(Ember 核心开发人员)提出的 extremely well explained

基本上他说:

Ember.js 需要 jQuery 有两个原因:

  • 我们在 Ember/Handlebars 集成中严重依赖它来插入和修改 DOM 元素。我个人不感兴趣 在处理跨浏览器的 DOM 操作错误,但 jQuery 团队擅长于此。
  • 通过在 jQuery 中拥有一个标准的 DOM 操作库,开发人员可以在不同的 Ember.js 应用程序之间移动,并依赖于以下事实: 他们下面有一个久经考验的跨平台库。

如果您担心尺寸,我建议您调查新的 jQuery 2.0,能够在没有特性的情况下进行自定义构建 比如动画。

对我来说很有意义。

更新:

最近 Erik Bryn(也是 Ember 核心开发人员)写了一篇关于框架的非常有趣的comment,并提到了在 Ember 项目中使用 jQuery 的最新技术。

粘贴评论:

人们普遍认为 Ember.js 是单体的。我可以保证 你这实际上不是真的。您可以选择 您想要或需要的 Ember(例如,路由器完全 选修的)。我们的构建工具甚至支持挑选和选择哪个 你想要的包。你今天可以在没有 jQuery 的情况下使用它(你需要 填充并拥有一个事件委托库,或者更容易使用 超轻量级custom jQuery build)。

【讨论】:

    【解决方案2】:

    只有 Ember 的视图层依赖于 jQuery。它在历史上比现在使用得更多。将来,我们可以按照您的建议将功能集成到 Ember 本身中,尽管我们不想在 Ember 中保持 jQuery 已经负责的跨浏览器兼容性。使用 jQuery 2.0 的另一种方法是创建仅包含 Ember 使用的部分的 jQuery 修剪器构建。

    如果有不折不扣的方法来替换 Ember 核心中的 jQuery 使用实例,您应该在 GitHub 上将这些更改作为问题提出。

    【讨论】:

    • 如果没有加载 jQuery,为什么不简单地使用 Zepto 或其他东西?类似于 Angular 如何使用“最小 jQuery”。甚至更好——确保 Ember 可以与 Zepto 和 jQuery 一起使用。
    猜你喜欢
    • 2015-04-13
    • 2019-05-19
    • 1970-01-01
    • 2018-02-08
    • 2013-01-20
    • 1970-01-01
    • 2018-01-21
    • 2017-10-25
    • 1970-01-01
    相关资源
    最近更新 更多