统治 Web 的 JavaScript 准备要接管桌面了

简介:

image
编者按:曾 几何时,通信网络曾经活跃过许多协议,那些协议在不同的场景下都有各自的优势。但是后来 TCP/IP 随着互联网的崛起而异军突起,最终形成一统天下的格局。而原本被视为不入流的 Web 前端玩具 JavaScript 现在似乎也在复制着类似的路径,先是渗透到 web 后端开发,然后甚至开始入侵到桌面了。最流行语言 JavaScript 会变成编程界的世界语吗?

创 建于 1995年 的 JavaScript 原本是想给苍白的网页在标记以外再增加一点生气的。但现在它的用处已经远远超出了当时的意图。像 Google、Facebook 这样的公司都用 JavaScript 来开发复杂的、类桌面的 web 应用;自从 2009年 推出了 Node.js 之后,它还成为了开发服务器端最受欢迎的语言之一(连续很多年雄踞最受欢迎编程语言)。时至今日,甚至连 web 也容纳不下 JavaScript 的雄才大略了:现在,它正在开始向桌面应用进军。

Electron 是 GitHub 开发的一个软件开发平台,它可以让开发者用 JavaScript 加上 HTML、CSS 等 web 技术来创建跨平台(可运行于 Windows、Mac OS X 以及 Linux)运行的桌面应用。近日该公司刚刚发布了第一款完整版的 Eletron。但是业界的一些大拿早已用上这一工具来让 JavaScript 冲出浏览器了。

微软去年发布的一款代码编辑器 Visual Studio Code 就是用 Eletron 开发的。协作聊天工具的独角兽 Slack 的桌面客户端也是用 Eletron 开发的。初创企业 Nylas(以前的 Inbox)的整个邮件客户端都是用 Eletron 开发的。甚至 Brave 这家由 JavaScript 创造者 Brendan Eich 创建的公司也用 Electron 开发了一整个 web 浏览器。

为什么在开发桌面应用有无数选择 的情况下那么多公司会选择 JavaScript 呢?不妨想想 JavaScript 在服务器端的崛起。Node.js 出来以前开发者也已经有了很多开发服务器端应用的利器了。但是由于开发者可以使用同一门语言来开发前端(浏览器)和后端(服务器),使得 JavaScript 变得非常流行。事实表明,在 web 上采用通用语是很有用的。而 JavaScript 的无所不在使得将它移植到桌面成为了自然之举。

面向每一个人开放

许多使用 Electron 的公司都在开发开源软件,也就是说,谁都可以查看和修改里面的代码。而理解你开放的代码的人越多,可以为其贡献 bug 修补和新功能的人就越多。通过利用 JavaScript,这些公司向了解 JavaScript 但不熟悉 C++ 等传统桌面编程语言的 web 开发者打开了一道大门。

比方说初创企业 Jibo 就用 Electron 来开发自己的机器人个人助理,因为这支团队希望第三方替自己的机器人写软件时可用更容易些。“我们希望把门槛降到尽可能的低,” Jobo 开发者 Jonathan Ross 说:“所以我们马上想到应该向游戏开发者和 web 开发者推销。”

这也是起初做 Electron 的一大原因。Electron 原先是做来给开发 Atom 当平台用的,后者是 GitHub 创建的一款文本编辑器。GitHub 联合创始人 Chris Wanstrath 说,他之所以用 JavaScript 来做文本编辑器是希望 web 开发者合适的时候能够对其进行定制。“我自己可以 hack 我的编辑器是一回事,” Wanstrath 说:“但是能够使用别人写的插件却要强大得多。”

当然,跑相当于 web 浏览器的应用也有不好的地方。“跑 Electron 应用的负载相当的大,” Nylas 的首席前端开发者 Ben Gotow 说。但是权衡之下还是值得的,因为 Electron 能做的不仅仅是提供使用一门流行语言的能力。用 JavaScript 创建桌面应用使得开发者可以选择海量的免费代码库和框架,免去了大量乏味枯燥的编码工作。比方说登录系统就不用再写了,网上有大量开源的身份验证库可供选 择。

“我们仅用 1年 的时间就搞定了邮件客户端,那是相当惊人的了,” Gotow 说。

极客产物

用 web 技术开发桌面应用的想法并不新鲜。Adobe 的 AIR 系统就可以让开发者利用其 Flash 平台开发桌面应用,另一家小公司 Appcelerator(现在专注于移动 app 的开发)也曾经提供过利用 HTML 和 JavaScript 开发桌面应用的工具。最近又有一支开发者团队做出了 NW.js,也就是之前 Node Webkit。

但是到了 2014年 的时候,GitHub 团队发现所有的可用选择都没了,于是他们做了极客都会做的事情:自己写一个然后发布给全世界。“我们认为做出的好应用应该给大家一起用,” GitHub 产品 VP Kakul Srivastava 这样说。

GitHub Electron 团队的 JessicaLord 则说 Electron 要比之前的那些工具都要高效。Electron 捆绑了 Chromium(Google 浏览器 Chrome 的开源版),但是对其进行了瘦身。这使得该团队集成 Google 的新功能变得更加容易,因为这样每次 Chromium 发布新版时他们就不需要对每个部分都要进行测试来看看是否会导致 Electron 功能出问题了。

GitHub 的努力似乎收到了回报。从 2年 前推出项目至今,Electron 贡献者的数量已经超过了 300。其下载量也已经突破百万大关。但是竞争也日趋激烈。NW.js 还在不断改进,而 Facebook 也发布了自己的 JavaScript 框架 React Native,开发者可以使用后者来开发 Windows、Xbox 以及 Android 等各种平台的应用。

无论开发者最终决定使用哪种框架或者平台,显然 JavaScript 都已经在桌面找到了安身之所。对于用户来说,在线和离线之间的界限早就已经模糊了。现在对于代码来说也是一样的。

文章转载自 开源中国社区[http://www.oschina.net]

相关文章
|
30天前
|
JavaScript 前端开发 测试技术
使用Selenium执行JavaScript脚本:探索Web自动化的新领域
本文介绍了如何在Selenium中使用JavaScript解决自动化测试中的复杂问题。Selenium的`execute_script`函数用于同步执行JS,例如滑动页面、操作时间控件等。在滑动操作示例中,通过JS将页面滚动到底部,点击下一页并获取页面信息。对于只读时间控件,利用JS去除readonly属性并设置新日期。使用JS扩展了Selenium的功能,提高了测试效率和精准度,适用于各种自动化测试场景。
41 1
|
3月前
|
前端开发 JavaScript 开发者
Web前端开发中的JavaScript闭包应用
JavaScript闭包是Web前端开发中常见的概念,它可以帮助开发者解决作用域问题,提高代码的可读性和可维护性。本文将介绍JavaScript闭包的基本概念和应用,以及如何在Web前端开发中使用闭包。
29 3
|
7天前
|
JavaScript 前端开发 API
Vue.js:构建高效且灵活的Web应用的利器
Vue.js:构建高效且灵活的Web应用的利器
|
30天前
|
运维 JavaScript 前端开发
发现了一款宝藏学习项目,包含了Web全栈的知识体系,JS、Vue、React知识就靠它了!
发现了一款宝藏学习项目,包含了Web全栈的知识体系,JS、Vue、React知识就靠它了!
|
1月前
|
JavaScript 前端开发 API
Vue.js:构建现代化Web应用的灵活选择
Vue.js:构建现代化Web应用的灵活选择
37 0
|
2月前
|
JavaScript 前端开发 Java
MooTools、Backbone、Sammy、Cappuccino、Knockout、JavaScript MVC、Google Web Toolkit、Google Closure、Ember、Batman 以及 Ext JS。
MooTools、Backbone、Sammy、Cappuccino、Knockout、JavaScript MVC、Google Web Toolkit、Google Closure、Ember、Batman 和 Ext JS 都是 JavaScript 框架,用于开发 Web 应用程序。它们分别提供了不同的功能和特性,以帮助开发者更高效地构建和维护 Web 应用程序。
17 2
|
3月前
|
前端开发 JavaScript 定位技术
web版拳皇,使用html,css,js来制作一款拳皇游戏
web版拳皇,使用html,css,js来制作一款拳皇游戏
35 0
|
3月前
|
开发框架 JavaScript 前端开发
React.js:改变Web开发方式的JavaScript库
React.js:改变Web开发方式的JavaScript库
36 1
|
4月前
|
JavaScript 前端开发 中间件
Node.js Web 模块的各种用法和常见场景
Node.js Web 模块的各种用法和常见场景
28 1
|
4月前
|
自然语言处理 算法 数据库
【JavaScript+自然语言处理+HTML+CSS】实现Web端的智能聊天问答客服实战(附源码 超详细必看)
【JavaScript+自然语言处理+HTML+CSS】实现Web端的智能聊天问答客服实战(附源码 超详细必看)
50 0