这篇文章的灵感来自于我本周看到的关于企业中 JS 的所有评论。 10 年前我绝不会想到这一点,但现在 javascript 几乎无处不在。如果您还没有关注 javascript,这里有几个原因,以及您绝对不应该注销它的原因。
首先,我认为 javascript 无处不在的一个主要原因是 javascript 是平易近人的。初学者学习 javascript 相对容易,并且功能强大,足以让高级用户构建复杂可靠的系统。
第二,为什么要注意,javascript无处不在。
您现在可以使用 javascript 在几乎任何平台上进行开发:客户端应用程序、服务器端逻辑、嵌入式芯片/物联网设备、管理构建脚本和依赖项等等。
这并不意味着您将在每种情况下都使用完全相同的代码,而是您可以使用相同的技能组合——javascript 开发——来提供跨多种范例的解决方案。
客户端
javascript 可用于支持客户端应用程序/用户界面,以及众多平台和设备上的用户交互。
网络
当然 javascript 为网络提供动力,这是给定的。 javascript 是所有网络浏览器的主要脚本语言。我不会关注这么多 b/c 它已经众所周知。
移动的
javascript 还可用于为设备上本机安装的移动应用程序提供支持。
- apache cordova / phonegap – 您可以使用 phonegap 或 cordova 使用网络技术构建本机安装的应用程序。 phonegap 是 adobe 的 cordova 品牌发行版,但从开发人员的角度来看,它们基本上是同一回事。您的应用程序在移动设备上的 Web 视图中运行,并且您构建用户界面的方式与构建动态 Web 应用程序的方式相同。你的用户界面是用 html 实现的,用 css 设计的,所有的交互都是用 javascript 创建的。
- react native – javascript 驱动的 web 应用程序不仅仅必须在 web 视图中。 React Native 框架使开发人员能够使用 JavaScript 和声明式 UI 元素编写他们的应用程序,并生成在移动设备上运行的本机应用程序。逻辑在运行时由 javascript 解释,但用户与之交互的所有内容(所有 ui 元素)都是 100% 原生的,提供非常高质量的用户体验,现在它可用于 ios 和 android 应用程序。
- unity 3d – 您甚至可以开发丰富且身临其境的移动 3d 模拟或游戏体验,完全由使用 unity 3d 引擎的 javascript 提供支持。 **这些可以是网络、桌面或移动设备,但通常用于移动游戏。
- nativescript – 使用 javascript 构建跨平台原生 ios、android 和 windows 移动应用程序的框架。
桌面
是的,桌面应用程序并没有被排除在外。大多数桌面解决方案都属于类似于 apache cordova 的类别,其中最终结果是可以访问较低级别 api 的 web 视图,其内容是使用基于 web 的技术开发的。
- electron – 来自 github 的 node.js + chromium 桌面应用程序容器
- app.js – 用于桌面应用程序容器的 node + chromium
- nw.js – 桌面应用程序容器的 node +chromium 的另一个框架
- cef ——chromium 嵌入式框架——一种将 chrome 浏览器的核心嵌入桌面应用程序的框架。
……还有更多……我知道微软有一个完全用 html/js 构建 Windows 应用程序的解决方案,还有更多我忘记的解决方案。
事实上,我最喜欢的一些桌面工具,如 slack 、 atom 和 vs code 实际上都是基于 web 技术并在 html/js 中实现的。哎呀,即使是 photoshop 也可以使用 生成器扩展 层编写脚本和扩展,或者在带有 设计空间的 html/js 中具有自定义用户界面。
服务器端
最明显的 是 node.js—— 一个基于 chrome 的 v8 javascript 引擎的 javascript 运行时——已经在服务器端开发和企业领域取得了巨大的进步。由 express.js 或 loopback.io 等框架提供支持的 node.js 使使用 javascript 的服务器端开发和复杂的企业应用程序成为可能。
物联网
几乎所有不属于上述类别的东西都在这里。您可以完全使用 javascript 开发在 arduino、raspberry pi 或其他小型板上运行的无头应用程序,您可以 使用 javascript 管理物联网传感器的基础设施和信息流 ,您可以使用 javascript 为嵌入式系统编写片上程序,您可以控制机器人有了它,您甚至可以 使用 javascript 增强以媒体为中心的联网电视体验 。
就像我说的……它无处不在。
生态系统
这不仅仅是关于您可以在哪里为您的应用程序构建和运行 javascript。 javascript 拥有庞大而繁荣的开发者生态系统。
在活跃存储库总数和活跃推送/提交总数方面,javascript 是 github 上排名第一的最活跃语言。
来自 http://githut.info/ 的统计可视化
这里有一些统计数据显示了仅 node.js/npm.js 的增长和采用程度。
npm 统计数据
node.js 的采用量很大,而且还在增长。
图解释了 ibm 对 node.js 和 strongloop 的关注。 30 天内 24.2 亿个
@npmjs
pkgs!
http://t.co/sndt88hqc5
pic.twitter.com/nrmwyykmdo
——rod boothby (@rod11)
2015 年 9 月 10 日
这并不意味着 javascript 是最好的语言。这也不意味着您可以获取一段源代码并在可以想象的每个设备/上下文中运行它。
这意味着您可以使用您的 javascript 技能为几乎任何类型的设备/环境进行开发。它不会是一次编写,到处运行,而是用 react.js 团队的话来说: 一次学习,到处编写 。