**前言**人们说我们生活在一个信息时代,但似乎没有一条是我所需要的或想了解的信息。事实上,(我越来越相信)这一切电子产品只会增加我们的困惑,发表内部独家新闻、裁决几乎还没开始的事件:这喋喋不休的洪流以光速移动,以至于几乎不可能听到重要的事。
——马修·弗拉曼 《The Kingdom of Ohio》
“技术发展迅速”是一条老生常谈的格言,而且有很好的理由:技术的确发展迅速。但此时,JavaScript的确发展得特别迅速——就像马修·弗拉曼在俄亥俄王国所说的“喋喋不休的洪流以光速移动”。随着基于浏览器应用迅速增长的复杂度以及服务器端JavaScript的日益普及,这门语言正在经历被许多人所称谓的复兴之中。一切多亏了Node.js。
JavaScript社区中正在迈开近乎狂热的创新步伐,虽然充满了无穷的魅力,但也提出了自己的独特的挑战。JavaScript的生态系统包括库、框架以及工具,都在剧烈地成长。过去针对任何给定问题可能只有少量的解决方案,而今已经有许多解决方案可以选择,并且其数目日益增长。因此,开发人员要面对这样的艰难任务:在很多看起来不错的方案中选择合适工具。
如果你像我们一样好奇为什么最近JavaScript似乎吸引了如此多的注意力,那么值得停下来思考JavaScript的本质。这门语言由一个人在十天内创造,现在却作为许多我们知道的Web站点的基础服务。一门原本设计用于解决相当简单问题的语言,现在却以最初没有预见到的创新方式所应用。更重要的是,JavaScript是一门优美的表达语言,但它不是没有棱角和潜在的陷阱。尽管它灵活、高效以及无处不在,但是对于JavaScript的初学者来说,了解JavaScript的一些概念如事件循环、原型继承等,是特别具有挑战性的。
由于这些和很多其他原因,开发社区的很大一部分人都在探究如何最好地应用JavaScript的独特特性。毫无疑问,我们只是抓住了语言的表面和其背后社区提供的能力。对于那些对知识有着贪婪的需求和充满创造欲的人,现在是成为一名JavaScript开发者的最佳时机。
我们编写了本书来指导你在大量流行的JavaScript工具中做选择,这些工具解决开发技术栈的两端:浏览器和服务端。教程及本书中可下载的代码示例阐明了这些工具的用法,包括依赖管理、模块化代码模式、自动化重复任务构建、创建专业的服务、客户端应用的架构、灵活的水平扩展、执行事件日志记录和与不同的数据存储交互。
**[第1章 Bower1.1 准备工作](https://yq.aliyun.com/articles/94084)**1.2 配置Bower1.3 清单文件(Manifest)1.4 查找、添加和删除Bower包1.4.1 查找包1.4.2 添加包1.4.3 删除包1.5 语义化版本控制1.6 维护依赖链1.7 创建Bower包1.7.1 选择有效的包名1.7.2 在Git标签中使用语义化版本号(Semver)1.7.3 将软件包发布到注册中心1.8 小结**[第2章 Grunt2.1 安装Grunt](https://yq.aliyun.com/articles/94140)**2.2 Grunt是如何工作的2.2.1 Gruntfile.js2.2.2 任务(Tasks)2.2.3 插件(Plugins)2.2.4 配置2.3 将Grunt添加到项目中2.4 处理任务2.4.1 配置管理2.4.2 任务描述2.4.3 异步任务2.4.4 任务依赖2.4.5 多任务2.4.6 多任务选项2.4.7 模板配置2.4.8 命令行选项2.4.9 提供反馈2.4.10 错误处理2.5 操作文件系统2.5.1 源-目标映射2.5.2 监视文件变化2.6 创建Grunt插件2.6.1 开始2.6.2 创建任务2.6.3 将任务发布到npm2.7 小结
相关资源:JavaScript开发框架权威指南