日期:2014-05-16  浏览次数:20370 次

大型 JavaScript 应用架构中的模式
  • 1. 我是谁,以及我为什么写这个主题?
  • 2. 可以用 140 个字概述这篇文章吗?
  • 3. 究竟什么是“大型” JavaScript 应用程序?
  • 4. 让我们回顾一下当前的架构
  • 5. 想得长远一些
  • 6. 头脑风暴
  • 7. 架构提议

原文:Patterns For Large-Scale JavaScript Application Architecture?by?@Addy Osmani

今天我们要讨论大型 JavaScript 应用架构中的有效模式。这篇文章基于我最近在 LondonJS 的同名演讲,灵感则来自 Nicholas Zakas?之前的成果。

译注:Nicholas Zakas: Scalable JavaScript Application Architecture

1. 我是谁,以及我为什么写这个主题?

我目前是 AOL 的一名 JavaScript 和 UI 开发人员,负责为我们下一代面向客户的应用程序计划和编写前端架构。 由于这些应用程序不仅复杂,而且需要可扩展和高度可重用的架构,因此我的职责之一就是确保用于实现应用程序的模式尽可能是可持续的。

我自认为是一名设计模式爱好者(虽然关于这个主题有很多专家比我更专业)。我之前基于创作共用许可证写了Essential JavaScript Design Patterns?一书,现在我想写得更详尽一些,作为这本书的后续部分。

2. 可以用 140 个字概述这篇文章吗?

如果你时间不够,下面是这篇文章的摘要,只有一条 tweet 的长度:

解耦应用。架构/模块,外观和中介者模式。模块生产消息,中介者发布/订阅消息,外观处理安全问题。

3. 究竟什么是“大型” JavaScript 应用程序?

在开始之前,让我们尝试弄清一点,当我们提到某个 JavaScript 应用程序是“大型”时,究竟是什么意思。这个问题对于有多年经验的开发人员仍然是一项挑战,而且答案也相当主观。

我作了一个试验,咨询了几位中级开发人员,让他们试着做出非正式的定义。一个开发人员建议“JavaScript 应用程序的代码行数超过 100,000 行”,而另一位建议“应用程序中 JavaScript 代码超过 1MB”。虽然是勇敢的建议(如果不是故意吓人),但是这些都不正确,因为代码库的大小并不总是与应用程序的复杂度相关 - 100,000 行代码很可能是相当琐碎的代码。

译注:LOC,Lines of Code,代码行数

我自己的定义可能会也可能不会被普遍接受,但是我相信它更接近大型应用程序的真实含义。

在我看来,大型 JavaScript 应用程序是成体系的,需要开发人员的努力维护,而最繁重的数据处理和显示则是在浏览器中。

这个定义的最后一部分可能是最重要的。