编辑器就像是厨师手里的菜刀,一个厨师不可能只用一把刀解决所有问题。一个厨师至少要配两种刀,一是在任何情况下都能使用的小刀,以Vim或者Sublime Text这种体积在10MB以下的最好;另一种是像Atom这种大刀,体积在100MB级别,虽然不锋利但是扩展性俱佳,挥舞起来能够吹枯拉朽。

Atom是Github出的一款编辑器,官方网站是atom.io,口号是“A hackable editor to the core”。Atom不仅仅是一个编辑器,它其实是一个基于Chromium的平台(也就是Chrome浏览器的构建框架),所以Atom可以看作是三层技术的整合:

  • NodeJS,Chromium的V8引擎+定制化的第三方库的整合,提供的一个客户端的Javascript环境。
  • Electron,把Chromium的HTML和CSS引擎抽取出来做成的GUI(图形界面)框架,可以使用Web技术来构建GUI。
  • 基于NodeJS和Electron的编辑器框架,有了这个框架之后,可以通过Packages来扩展Atom的功能;甚至Atom的核心编辑功能也是通过Packages来提供的。

看到这你或许就明白了,其实Atom是完完全全构建在Web技术之上的。和Vim和Sublime Text这种纯粹的编辑器相比,Atom的先进性在于它可以用来构建App。一个简单的例子,Atom默认带有Markdown-Preview的功能(使用Ctrl+Alt+M启动),这其实是一个集成在Atom里面但具有独立功能的App。所以,Atom不仅仅是一个编辑器,它可以变成日记本,Wiki以及其他各种各样的App(只需要安装相应的Package),甚至成为一个IDE。

学习Atom的使用和开发绝对是一个非常好的投资:

  • Web技术日新月异,业界领头羊如谷歌、苹果、微软,都在推进Web技术的发展。打开Webkit支持的特性列表,可以看到Web的功能之丰富,远超乎你的想象。Web已经成为一个大平台,你甚至可以在浏览器里面跑一个Linux(参考JSLinux)。所以拥抱Web,相当于躺在滚滚前行的火车上,安全驶向未来。
  • Web开发已经相当人性化了。作者上学早,以前在学校学习的时候,Web还处于XHTML1.0时代,各种浏览器的兼容性是一个十分令人头疼的问题;彼时Javascript还是一个很混沌的语言,容易出莫名其妙的错误,找也找不出原因;也没有合适的工具来debug。时至今日,一切皆已经不同了,HTML5标准推出,减少了语法的歧义性,各浏览器表现一致了;Javascript也从跨越了多个版本,从5.0到5.1再到ES6,最新的版本是ES7。具有跨越性变化的版本是ES6,可以去浏览一下ES6的特性列表,可以看出ES6在语法上已经是一个非常现代的语言了;此外,浏览器上的各种debug工具也已经非常丰富,抓虫变得越来越简单了。
  • NodeJS的推出,使Javascript不仅可以用来开发Web,还可以用来开发客户端App和服务端程序。像Atom这种基于NodeJS的本地App的优势在于,它可以不受很多浏览器上的安全限制,充分发挥Web技术的全部功能。
  • 既然Web技术这么好,采用相同概念的编辑器肯定不止Atom一家,其他还有Adobe的Bracket,Microsoft的VS Code等等。但和竞争者不同的是,Atom是一个通用的编辑器,而不是像Bracket和VS Code那样成为一个Web IDE。通用性意味着有通用的API,开发自定义App的时候会更方便。

所以从现在开始,作者要赶紧开始恶补Web技术了。从NodeJS到ES7,从CoffeeScript到lesscss,等等等等,前路漫漫……