今日的JavaScript都能做什么
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
今日的JavaScript都能做什么
原作者:Nils Melhorn
翻译/编辑:4字节
转载请注明出处
脚本语言 JavaScript 自1995年问世以来已经走了很长一段路。虽然并不是人人都喜欢JS,但这仍然没有阻止 JS 的用户与日俱增的趋势——目前在 StackOverflow 上,JavaScript 的使用量排名第一。JavaScript 被设计的初衷是在基于 HTML 和 CSS 构建的网站上提供交互功能,但时至今日,JavaScript 能办到几乎所有计算机上能执行的任务——虽然什么时候都用 JS 并不一定是个好主意。下面我们来看看当今最适合使用 JavaScript 的现实用例。
Web 开发
惊喜又意外:你能用 JavaScript 来构建网站。近年来,使用 React,Angular 或
Vue.js 构建的单页应用程序已逐渐成为一种规范——它们正逐渐取代服务器端渲染的,包含jQuery 交互组件的网站。
Web 开发环境常常因为过于多变而受到批评,所用到的框架生命周期也普遍很短。虽然对
于某些框架来说确实是这样,但要用它以一概全是没有根据的。React 框架是2013年发布的,但现在比以往任何一年都显得更有生机;Angular 诞生已经3年,而它的前身 AngularJS 则
是在2010年发布的;Vue.js在2014年发布,到今天也有5年时间。如果你不喜欢自己在某
个项目中使用的框架,以后大可不必再用它。随着 web 组件被引入,JS 的高级构建工具让你
可以轻松在不使用框架的情况下构建应用程序——这里可以参考 Polymer Prject。
你不仅能使用 JavaScript 构建成熟的 Web 应用程序,还能很好地用它生成静态网站。
通过使用 Eleventy 之类的解决方案将框架带回到工程中。通过 Gatsby,Next.js,VuePress 和 Nuxt.js 你可以在享受 React 或 Vue.js 特性的前提下生成轻量级的静态页面。
桌面应用
桌面应用程序通常会使用 JavaScript 框架 Electron 构建。它通过将你的程序与Chromium 浏览器以及 Node.js JavaScript 服务器打包,从而提供丰富的用户体验。可惜的
是这种方法会让最小的软件包大小也有100MB左右。如果这对你来说太大,你可以去尝试一下Vuido 或 Proton Native 解决方案——但这也大可不必!强大的互联网正在催生出一批渐进
式的 Web 应用(PWA),它们可以从用户的桌面或主屏幕启动,并提供与原生应用程序类似的
体验。通过现代 Web API,你可以发送推送通知,连接蓝牙设备或者创建离线体验。
移动应用开发
或许 PWA 还尚未能够满足你的需求,但你仍然可以用 JavaScript 来构建原生应用程序。像 NativeScript 和 React Native 这样的框架允许你使用 JavaScript 编写程序代码,同时
提供原生的用户体验,让你可以使用平台提供的所有功能。这一点是通过在 iOS 或 Android
系统的 JavaScript 引擎中运行代码,然后在 JS 引擎与原生界面之间提供桥梁来实现的。
同时你可以考虑使用 React Native 或者将 NativeScript 和 Angular 或者 Vue.js 结
合使用。两种方法都能让你在移动端和网页端共享代码,实现多平台上使用相同代码库同时交付。
个人来说,我喜欢向别人展示 NativeScript Playground 沙盒,通过代码演示人们能了
解到 JavaScript 可以多么容易地驱动和运行原生程序。
服务器和 API
大多数应用都需要某种程度的后端,但这同样可以通过 JS 完成。使用 Node.js 你可以
获得一个可构建服务器的,高度且可扩展的 JS 运行时。长久以来,Express 一直是服务器端
渲染 Web 应用或 API 的首选框架。虽然目前它或许仍然是最流行的框架,但其它框架也在奋力追赶。Koa 是一个更轻量的继任者,而 hapi 框架则更加注重安全性。其它框架比如
Nest.js 则可以放在顶层以创建可靠的体系结构。
无论你是想设置 REST 还是 GraphQL API,打开 Web 套接字或是只想渲染一些 HTML —— JS 和 Node.js 都可以实现。
游戏开发
JS 究其本源就是面向 UI 的,因此通过 JS,HTML 和 CSS 就已经能写出简单的网页游戏。当游戏变得更复杂时,你可以会需要 HTML Canvas 来进行2D 渲染。此外还有一些专攻游戏
开发的框架,比如 Phaser 和 PixiJS。但如果你对游戏画面重视度很高的话,可能会想要选
择 Konva 框架。
如果你想开发3D 游戏那就走运了,网页浏览器拥有它们自己的3D 图形界面,叫做WebGL。自己使用它可能会让人不知所措,这时候用上一个更高效的框架或许是更好的选择。Babylon.js 和 Three.js 在网页3D 相关领域家喻户晓的名字。如果想要一个更加专注于游
戏开发的,可以选择 PlayCanvas,它同样提供一个基于浏览器的编辑器。除此之外,还有已
经非常成熟的游戏引擎 Cocos2d.x,它绑定了 JavaScript,被用于开发跨平台游戏。
但等等,我们还有更多:WebXR 渲染引擎将基于 JS 开发的游戏带到了另一个高度,它让
你可以接触到增强现实和虚拟现实设备。这就意味着你可以用 JS 开发出沉浸式体验的游戏!
机器学习
谁说机器学习一定要会 Python?JavaScript 就足够了!使用 TensorFlow.js,你就可以
开发图像分类,语音识别或预测性分析的机器学习模型。最棒的是,你可以在 Node.js 里进
行操作,也可以在浏览器里进行操作。机器学习是一项非常占用 GPU 的任务,但是它可以通
过 WebGL 在浏览器中运行硬件加速。这样你可以运行一个完全存在于客户端的推荐系统,无
需昂贵的服务器付费,同时还能缓解隐私问题
如果不太喜欢 TensorFlow,那么你可以试试用 brain.js 来训练神经网络或者自带多种
不同机器学习算法的 ml.js,二者都运行在浏览器中训练和运行算法。
物联网 IoT
价格低廉的硬件越来越常见,这也让你更容易地进入微控制器的世界。虽然通常构建智能
系统都需要你掌握 C 或 C++ 之类的语言,但再一次地,JavaScript 其实也能做到。
Johnny-Five 平台为各种 Arduino 开发板提供了一个易用的 API。如果你对机器人更感
兴趣,不妨试试 Cylon.js。这两者的工作方式都是将 JavaScript 翻译为设备能理解的东西。但不可避免的是这也会带来一些限制:要部署控制器,你必须要有另外一台机器在附近某处运行着 Node.js。
但这对 JerryScript 而言就不会形成阻碍。JerryScript 是一种微控制器的指定JavaScript 运行时,它仅需要64kb的 RAM。不过需要注意的是,根据具体的用例您可能仍然会需要不同的工具作为补充。物联网对 JS 来说或许是一个偏向实验的应用领域——不过它通过使用 MQTT 也能获得以小博大的效果。
总结
如我们所见,今日的 JavaScript 在庞大的社区和扎实的项目基础上,已经涵盖了大量不
同的用例,这是件很了不起的事,因为对于已经掌握 JS 的你来说,这些用例已经为你打开了多扇大门,让你可以充分发挥自己的创造性。