统治 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]

相关文章
|
2月前
|
数据采集 Web App开发 JavaScript
Puppeteer的高级用法:如何在Node.js中实现复杂的Web Scraping
随着互联网的发展,网页数据抓取已成为数据分析和市场调研的关键手段。Puppeteer是一款由Google开发的无头浏览器工具,可在Node.js环境中模拟用户行为,高效抓取网页数据。本文将介绍如何利用Puppeteer的高级功能,通过设置代理IP、User-Agent和Cookies等技术,实现复杂的Web Scraping任务,并提供示例代码,展示如何使用亿牛云的爬虫代理来提高爬虫的成功率。通过合理配置这些参数,开发者可以有效规避目标网站的反爬机制,提升数据抓取效率。
172 4
Puppeteer的高级用法:如何在Node.js中实现复杂的Web Scraping
|
1月前
|
开发框架 JavaScript 前端开发
使用 Node.js 和 Express 构建 Web 应用
【10月更文挑战第2天】使用 Node.js 和 Express 构建 Web 应用
|
24天前
|
XML JavaScript 前端开发
JavaScript控制台:提升Web开发技能的秘密武器
作为Web开发人员,掌握JavaScript控制台中的各种方法至关重要。本文介绍了22种实用的console方法,从基本的log()到高级的profile()和memory,每种方法都配有示例和说明,帮助开发者更高效地调试和记录信息。通过了解这些工具,您可以优化代码、提高开发速度,减少错误,使编码过程更加顺畅愉快。
34 1
JavaScript控制台:提升Web开发技能的秘密武器
|
14天前
|
JavaScript 前端开发 持续交付
构建现代Web应用:Vue.js与Node.js的完美结合
【10月更文挑战第22天】随着互联网技术的快速发展,Web应用已经成为了人们日常生活和工作的重要组成部分。前端技术和后端技术的不断创新,为Web应用的构建提供了更多可能。在本篇文章中,我们将探讨Vue.js和Node.js这两大热门技术如何完美结合,构建现代Web应用。
17 4
|
1月前
|
设计模式 JavaScript 前端开发
浅谈JavaScript 框架在现代 Web 开发中的作用
浅谈JavaScript 框架在现代 Web 开发中的作用
35 12
|
25天前
|
存储 JavaScript 前端开发
深入探索 Vue.js:构建现代 Web 应用的利器
【10月更文挑战第11天】深入探索 Vue.js:构建现代 Web 应用的利器
17 1
|
27天前
|
JavaScript 前端开发 网络架构
如何使用Vue.js构建响应式Web应用
【10月更文挑战第9天】如何使用Vue.js构建响应式Web应用
|
27天前
|
JavaScript 前端开发
如何使用Vue.js构建响应式Web应用程序
【10月更文挑战第9天】如何使用Vue.js构建响应式Web应用程序
|
2月前
|
数据采集 存储 JavaScript
Puppeteer的高级用法:如何在Node.js中实现复杂的Web Scraping
在现代Web开发中,数据采集尤为重要,尤其在财经领域。本文以“东财股吧”为例,介绍如何使用Puppeteer结合代理IP技术进行高效的数据抓取。Puppeteer是一个强大的Node.js库,支持无头浏览器操作,适用于复杂的数据采集任务。通过设置代理IP、User-Agent及Cookies,可显著提升抓取成功率与效率,并以示例代码展示具体实现过程,为数据分析提供有力支持。
Puppeteer的高级用法:如何在Node.js中实现复杂的Web Scraping
|
1月前
|
Web App开发 前端开发 JavaScript
JavaScript Web Full Stack 全栈开发者路线及内容推荐
本文详细介绍了一条全面的JavaScript全栈开发者学习路径,涵盖基础知识、前端和后端开发、数据库与API、MERN Stack与React Native、工程化与部署、安全与测试、未来趋势等方面。推荐了HTML5、CSS3、JavaScript(ES6+)、Node.js、React.js、Vue.js、Svelte、Tailwind CSS、Web Components等关键技术,并提供了丰富的书籍、博主和在线资源。此外,还回顾了JavaScript的历史,并推荐了多个活跃的社区和平台,帮助开发者紧跟技术前沿。
下一篇
无影云桌面