Javascript能做什么
很早以前,浏览器标准之争让 JavaScript 的运行环境异常恶劣,语言本身也不成熟,功能几乎只限于简单的前端交互。后来 Ajax、类库、UI 框架、模块加载和 MVVM 陆续出现,JS 才真正把前端做成一门完整的工程。
今天的 JavaScript 已经不只是浏览器里的脚本:它可以跑在服务器上(Node),可以写 Hybrid / React Native 应用,还能做桌面软件和游戏。下面按场景把这条能力边界理一遍。
原文里的参考链接尽量保留,方便对照当时的技术栈:Ajax、jQuery、zepto、Bootstrap、Amaze UI、RequireJS、SeaJs、MVVM。
一、Web 前端
Ajax 让前端可以不刷新页面就和后端交换数据;jQuery / zepto 把 DOM 操作变得简单;Bootstrap / Amaze UI 把 UI 成本压下来;RequireJS / SeaJs 补上依赖管理;AngularJS / Avalon 这类 MVVM 则把前后端分离推到极致。
| 能力 | 代表 | 解决什么 |
|---|---|---|
| 异步通信 | Ajax | 不刷新页面交换数据 |
| DOM 库 | jQuery / zepto | 把选择器和事件写短 |
| UI 框架 | Bootstrap / Amaze UI | 降低页面搭建成本 |
| 依赖管理 | RequireJS / SeaJs | 模块化加载 |
| MVVM | AngularJS / Avalon | 前后端分离做到极致 |
React
React(React.js)由 Facebook 开发和维护。它不走完整 MVC/MVVM,只负责 UI:用 Virtual DOM 减少真实 DOM 操作,把界面拆成可组合、可复用、低耦合的组件。instagram.com 当时全站都用 React 开发。GitHub 仓库:facebook/react。
二、后端之旅:Node
2009 年 5 月,Ryan Dahl 发布了 Node 的最初版本。Node 基于 Chrome 的 JavaScript 运行时,封装 Google V8,让 JS 第一次走出浏览器、跑在服务器上。Web 编程从此可以只用一门语言完成。顺带诞生了 npm,JavaScript 也有了包管理。
三、Hybrid App 与 React Native
Node 让 JS 上了服务端,但脱离浏览器仍然很难跨平台。工程师发明了 Hybrid App:用 WebView 承载页面,让 JS 在一定意义上跑在移动设备上。它能写出过去 JAVA / Objective-C 才能做的 App,但对 WebView 依赖很强,性能和原生仍有差距。
React Native
React Native 既要 Native 的体验,又保留 React 的开发效率。开源不到一周 GitHub Star 破万;上线之初只支持 iOS,随后 Android 也跟上。口号是 “Learn once, write anywhere”,而不是 “Write once, run anywhere”。它和 Hybrid 的关键差别是抛弃 WebView,把 HTML 标签映射到原生组件,性能和交互会好一截。仓库:facebook/react-native。
四、桌面应用
至此 JavaScript 可以被浏览器解析,也可以当后端语言,还可以构建移动端 App。这还不够:它还能用来构建桌面应用。当时 Electron / NW.js 一类方案已经把「前端栈做桌面端」变成常规选项。
五、游戏
世界上最流行的 2D 引擎之一 Cocos2d,以及最流行的 3D 引擎之一 Unity3D,都支持用 JS 开发游戏。
Cocos2d-js
Cocos2d-JS 是 Cocos2d-x 的 JavaScript 版本,融合 Cocos2d-html5 和 Cocos2d-x JavaScript Bindings。它支持 Cocos2d-x 的核心特性,提供更接近 JS 风格的 API,并且天然支持原生、浏览器跨平台。
Unity3D
Unity3D 是跨平台 3D 游戏引擎。和 Cocos2d 的大致分工是:前者偏大型 3D,后者更常见于 2D。
一句话总结:JavaScript 从「页面小交互」走到了前端工程、Node 后端、Hybrid / React Native、桌面应用和游戏引擎,一门语言已经能覆盖 Web 全栈与多端。
转载请注明来源:Javascript能做什么








