当前访客身份:游客 [ 登录 | 加入开源中国 ]

技术翻译

已有文章 2341
当前位置: 译文列表 »  Web/WAP应用开发 , 投递原文
182

学用 JavaScript 设计模式

英文原文:Learning JavaScript Design Patterns

标签: <无>
0人收藏此文章, gugu&gigi 推荐于 3年前 (共 269 段, 翻译完成于 10-05) (80评)

序言

设计模式是可重用的用于解决软件设计中一般问题的方案。设计模式如此让人着迷,以至在任何编程语言中都有对其进行的探索。

其中一个原因是它可以让我们站在巨人的肩膀上,获得前人所有的经验,保证我们以优雅的方式组织我们的代码,满足我们解决问题所需要的条件。

设计模式同样也为我们描述问题提供了通用的词汇。这比我们通过代码来向别人传达语法和语义性的描述更为方便。

本文我们将阐述JavaScript编程语言中经典和现代的设计模式。

史涛
史涛
翻译于 3年前

16人顶

 翻译的不错哦!

目标读者

本书的以那些期望提高自己在设计模式方面的知识并将它们应用到javascript编程语言中的专业开发者为目标读者。

一些所涉及的概念(闭包,原型继承)将假设读者具备一定程度的基本的预备知识和理解。如果你发现自己需要更深入的阅读这个话题,为了你的方便,我们提供了一个推荐书目清单。

如果你希望学习如何写出漂亮的,具有结构性和组织性的代码,我相信这本书就是为你而写。

maxos
maxos
翻译于 3年前

5人顶

 翻译的不错哦!

致谢

我将永远感激那些审阅并帮助改进此书的有才干的技术审核人员们, 包括所有的来自社区的人士。他们带来的知识和热情简直令人惊异。官方的技术审核人员的微博和博客也是一个思想和灵感经常的来源,我诚恳的推荐并挑出它们。

我同样感谢 Rebecca Murphey (http://rebeccamurphey.com@rmurphey) 为写作此书时提供的灵感,更重要的是,继续让本书可以在GitHub上和通过O'Reilly获得。

最后,我也感谢我的好妻子,在我整理这本出版物时的不遗余力的支持。

maxos
maxos
翻译于 3年前

5人顶

 翻译的不错哦!

编写人员列表

这本书里所包含的一些模式是基于个人经验而实现的,其中的许多模式以前都是由JavaScript社团所确认的。因此这项工作是许多开发者所有经验的结晶。类似于Stoyan Stefanov(在JavaScript 模式里)的防止插入编写人员列表而打断叙述这样的逻辑思路,我在参考资料部分列出了编写人员列表并且为所有内容建议了阅读材料。

如果任何文章或者链接没有出现在参考资料列表里,请接受我诚挚的道歉。如果你联系我的话,我将确保更新这个列表,以把你包含在这个列表里。

几点人
几点人
翻译于 3年前

4人顶

 翻译的不错哦!

如何阅读

本书同时面向初学者和中级开发者,因此假设读者已掌握 Javascript 的基本知识。如果您要了解更多 Javascript 的相关知识,我很乐意为您推荐以下文章:

  • 《JavaScript 权威指南》(原名:JavaScript: The Definitive Guide),David Flanagan 著
  • 《JavaScript编程精解》(原名:Eloquent JavaScript), Marijn Haverbeke 著
  • 《JavaScript 模式》(原名:JavaScript Patterns),Stoyan Stefanov 著
  • 《JavaScript 语言精粹》(原名:JavaScript: The Good Parts), Douglas Crockford 著


目录

gugu&gigi
gugu&gigi
翻译于 3年前

3人顶

 翻译的不错哦!

# 前言

写出可维护的代码的一个最重要的方面就是在代码中能够注意到重复出现的主题并对其进行优化。设计模式的知识领域是无价的。

在本书的第一部分,我们将探索那些真正可以应用于任何编程语言的设计模式的历史和重要性。如果你已经熟悉这段历史,可以直接跳过"什么是模式?"这一章继续阅读。

设计模式可以追溯到早期的一名叫Christopher Alexander的建筑师。他经常会发表一些他在处理设计问题时的经验和如何与建筑和城镇相联系的。有一天,当Alexander使用了一次又一次后,他发现某些设计结构会导致做出的效果是最好的。

小天
小天
翻译于 3年前

3人顶

 翻译的不错哦!

在Sara Ishikawa和Murray Silverstein的协作下,Alexander发明了一种可以帮助授权任何人去设计和构建希望的任何规模的模式语言。这在1977年的一篇名为"A Pattern Language"的论文中发表,在后来作为一本完整的精装书发表。

大约30年前,软件工程师开始将Alexander曾写过的原理并入第一版的设计模式,这是一个用来对那些想要改善他们编码技巧的新手开发者的一个指南。要注意,这时设计模式背后的概念实际上已经在编程行业成立以来就有了,虽然不是那么正式的形式。

第一个也是最标志性的关于软件工程的设计模式的正式作品是在1995年一本叫Design Patterns: Elements Of Reusable Object-Oriented Software的书中发表,这是Erich Gamma, Richard Helm, Ralph Johnson John Vlissides - 一群被称为Gang of Four(简称GoF)的人写的。

小天
小天
翻译于 3年前

3人顶

 翻译的不错哦!

GoF的出版物被认为是非常有助于推动设计模式的概念在我们的领域发展的,因为它描述了大量的开发技术和缺陷,而且还有在今天的世界中大量使用的23个核心的面向对象的设计模式。我们将详细地在"设计模式分类"这一章中介绍这些模式。

在本书中,我们将看到一些流行的JavaScript设计模式,并探索为什么一些特定的模式比其他的更适合你的项目。但请记住模式不仅仅可以应用在单纯的JavaScript (例如:标准JavaScript代码)里,也可以在一些像jQuerydojo的抽象库里使用。在我们开始之前,让我们看看模式在软件设计中的确切定义。

小天
小天
翻译于 3年前

3人顶

 翻译的不错哦!

模式是什么?

一个模式就是一个可重用的方案,可应用于在软件设计中的常见问题 - 在我们的例子里 - 就是编写JavaScript的web应用程序。模式的另一种解释就是一个我们如何解决问题的模板 - 那些可以在许多不同的情况里使用的模板。

那么理解和熟悉模式为什么是如此的重要?设计模式有以下三点好处:

  1. 模式是行之有效的解决方法:他们提供固定的解决方法来解决在软件开发中出现的问题,这些都是久经考验的反应了开发者的经验和见解的使用模式来定义的技术
  2. 模式可以很容易地重用:一个模式通常反映了一个可以适应自己需要的开箱即用的解决方案。这个特性让它们很健壮。
  3. 模式善于表达:当我们看到一个提供某种解决方案的模式时,一般有一组结构和词汇可以非常优雅地帮助表达相当大的解决方案。
小天
小天
翻译于 3年前

2人顶

 翻译的不错哦!

模式不是一个确切的解决方案。我们要记住模式的角色仅仅是给我们提供一个解决方案。模式不能解决所有的设计问题,也不能代替优秀的软件设计师。然而,它们在帮助我们。接下来我们将看看模式必须提供的其他的一些优势。
  • 模式的重用可以帮助防止在应用程序开发过程中出现的一些可能导致重大问题的小问题。这意味着当代码是建立在行之有效的模式上时,我们可以花更少的时间去关心我们的代码结构,从而能花更多的时间关注我们的解决方案的整体质量。这是因为模式可以鼓励我们在更好的结构化和有组织的方式下编码,这将避免在未来由于清洁的目的而去重构它。
  • 模式可以提供一个不需要绑定到一个特定问题的书面的概括性的解决方案。这个广义的方法意味着不用管我们正在处理的应用程序 (许多情况下的编程语言) 设计模式的应用可以提高我们的代码的结构。
  • 某些模式可以通过避免重复来减小我们代码的文件大小。通过鼓励开发者更仔细地看待他们的解决方案来减少重复的地方,如通过将类似的执行流程作为一个一般性的函数来减少函数的数量,这样我们就可以减小代码库的总体大小,这也成为使代码更DRY。
  • 模式增加了开发者的词汇,这使得交流更快速。
  • 经常使用的模式可通过收集其他使用这些模式的开发人员贡献给设计模式社区的经验来改进。在某些情况下,这将导致全新模式的创建,同时也可以提供改进的指导大家如何使用特定的模式才是最好的。这可以确保基于模式的解决方案继续变得比特别的解决方案更健壮。
小天
小天
翻译于 3年前

4人顶

 翻译的不错哦!

回页面顶部发表评论 网友评论80

  • 史涛
    史涛 发表于 2013-07-04 10:02
    这个有点长啊,可以出本书了
  • 青怪
    青怪 发表于 2013-07-10 14:49
    很好,收藏了!
  • 墨竹
    墨竹 发表于 2013-07-25 15:26
    mark
  • 好运的卡米洛
    好运的卡米洛 发表于 2013-07-31 10:00
    嗯,好文,最近在重新学JS
  • atearsan
    atearsan 发表于 2013-07-31 14:23
    擦 好长的文章
  • 李勇2
    李勇2 发表于 2013-08-09 19:40
    长篇大论一定要翻完哈
  • yale8848
    yale8848 发表于 2013-08-14 18:40
    这不是文章,是书。
  • bhwebxu
    bhwebxu 发表于 2013-09-16 20:42
    这个本来就是一本书,我很想买,但是原著很贵。
  • charles_wang
    charles_wang 发表于 2013-10-05 13:40
    javascript领域,很值的看.
  • 高跟男爵
    高跟男爵 发表于 2013-10-05 13:47
    这不是文章 也不是书 是精神
  • 花间小酌
    花间小酌 发表于 2013-10-05 14:02
    必须收藏
  • jinhaoxia
    jinhaoxia 发表于 2013-10-08 07:30
    好强啊
  • 锟斤拷锟斤拷
    锟斤拷锟斤拷 来自 Android 发表于 2013-10-08 07:48
    果断mark
  • 东风雨
    东风雨 发表于 2013-10-08 08:18
    强烈支持!
  • 青怪
    青怪 发表于 2013-10-08 08:25
    太好了,支持!
  • Echo_me
    Echo_me 发表于 2013-10-08 08:35
    mark之
  • 荆棘谷-王亚楠
    荆棘谷-王亚楠 发表于 2013-10-08 08:44
    mark之
  • benbenming
    benbenming 发表于 2013-10-08 08:49
    如果能提供pdf格式就更好了。
  • benbenming
    benbenming 发表于 2013-10-08 08:49
    如果能提供pdf格式就更好了。
  • 架构梦想
    架构梦想 发表于 2013-10-08 08:50
    前排啊.这贴得火...