摘要jQuery

Bre*_*tin 7 javascript architecture jquery design-patterns aura.js

Nicholas ZakasAddy Osmani的这些会谈中,他们讨论了在构建大规模Javascript应用程序时使用Facade模式作为沙箱的想法,以便将应用程序与底层基础库分离.

理论上,这种解耦可以让您在不需要重写应用程序模块的情况下切换出基础库.然而,在实践中,这似乎更难以实施.

这个提出的架构有具体实现,例如AuraJS.然而,通过查看源代码,沙盒似乎仍然通过从其某些方法返回jQuery对象而具有泄漏抽象.

我并不特别关注AuraJS,但更多的是尝试抽象像jQuery这样的库而不会失去太多功能的一般概念.

举个例子,假设我的facade/sandbox有一个dom方法.find(selector).我可以想到它可能会返回的3个选项:

  1. 一个jQuery对象 - 这会将jQuery泄漏到消费模块中.

  2. 一个原始的dom元素 - 功能丧失,没有人真的想用这个!没有链接.

  3. 一个类似jQuery的自定义包装器 - 可能非常复杂,但似乎是理想的解决方案.

所以我的问题是,如何在不丢失太多功能的情况下抽象像jQuery这样的库,这样可以在未来的某些时候以最小的努力替换它?

小智 -1

我认为您是在询问编写更多模块化代码,但 jquery 并不是一个很好的例子。

异步模块定义 http://addyosmani.com/writing-modular-js/