构建大型jQuery应用

原文:http://addyosmani.com/blog/large-scale-jquery/

1.依赖管理

目前常用的script loader主要有两个,RequireJS (by James Burke) 与LabJS (by Kyle Simpson)。有些人会认为这其中一个会比另一个要好,但事实上他们各自有各自的特点。以我的经验来讲,RequireJS的特性之一是提供结构化模块的支持,而LabJS更适合不需要额外特性或者需要轻量级库的时候。

如果你想知道更多关于如何选择 RequireJS、LabJS,请看这里:http://msdn.microsoft.com/en-us/scriptjunkie/ff943568。如果这两个还不能满足你的需求,你还可以看看下面的内容。

解决方案:

RequireJS – 如果你期望你的代码更加模块化,我强烈推荐它。它会试图限制模块对全局命名空间的影响,并使得依赖更加明确。同时它还提供一个优化工具,帮助你合并压缩脚本 - http://requirejs.org/docs/jquery.html

LabJS – 如果你需要按照一定的顺序高效的加载脚本,或者你正在寻找比RequireJS更轻量级的框架,或者你对模块化依赖管理根本不感兴趣,那么你不妨试试LabJS。 – http://www.labjs.com (Alex Sexton 还在LabJS的基础上开发了条件化的loader,YepNope JS - http://www.yepnopejs.com)

StealJS – 又一个非常棒的依赖管理工具。Steal是 JavaScriptMVC框架的一部分,不过你可以单独使用它。它也提供了合并、压缩、清理等功能。 – http://jupiterjs.com/news/stealjs-script-manager

JSL Script Loader – 提供了加载、防重复加载、缓存等功能。但是它的用户也许没有LabJS、RequireJS那么多 – http://www.andresvidal.com/jsl

Bootstrap – 它的功能很少,但足以完成任务。如在你在寻找一个最小的没有任何多余功能的解决方案,那么也许它是最合适的。 – https://bitbucket.org/scott_koon/bootstrap

2.MVC&管理大型jQuery应用

软件工程中的设计模式、架构模式可以让你创建可重用的,结构化的,更具组织性的代码。我认为在开发中使用设计模式是必要的,尤其当你需要确保团队编写的代码的风格和结构是一致的时候。


MVC设计模式通常可以满足web应用的开发的需要,当然你可能觉得MVC并不适合你,或者你需要的是别的设计模式。

在我开始向你介绍一些MVC方案前,如果你需要对设计模式做更多的了解,请去阅读http://addyosmani.com/blog/essentialjsdesignpatterns(免费)。

『吼吼:在开始之前请自行去了解什么是MVC。 这部分内容我就不翻译了。

为什么我推荐 JavaScriptMVC

JavaScriptMVC已经收到不少积极的评论,同时它还被认为这是在大型项目开发中最好理解的框架。 如果你习惯使用传统方式构建web应用(比如重父端,轻客户端),那么你在使用JavascriptMVC的时候,会发现你的思想只需要做细微的变化。这是我和其他开发过js大型项目的同事们共同的想法。

举例来说,当你的应用很大一部分是基于js的,而你还需要一堆工具来保证代码的模块化、可管理、可测试、干净的。那么其中有一件事情就是使用JMVC。大多数开发者可能会认为这是服务端该干的事情,但是现在已经到了考虑客户端代码的时候了。

Justin Meyer谈论JMVC项目的时候提到,新人对JMVC最大的迷惑是误解了项目真正提供了什么。在这段之后我会来澄清这块内容。

JMVC可以被当作一个整合的开发工具、一个可重用的MVC架构。JMVC的好处是,它提供了一个清晰的思路来添加功能,并帮你简化里很多的事情。

首先,JavaScriptMVC的MVC部分的含义:

  • Model – 一种封装、组织Ajax请求和web服务数据的方式
  • Controller – 一个jQuery widget生成器
  • View – 客户端的模板引擎

第二,在为项目提供的集成开发工具方面,你可以得到一下功能。

  • 依赖管理、产品构建
  • 自动化的单元测试、功能测试
  • 文档支持

解决方案:

待翻译,等不及的朋友请看原文。