【问题标题】:Is it possible to develop Google Chrome extensions using node.js?是否可以使用 node.js 开发 Google Chrome 扩展程序?
【发布时间】:2012-09-16 13:23:49
【问题描述】:

我想开始使用 node.js 开发 Google Chrome 扩展程序(因为我已经在 node.js 中编写了一个“文本到歌曲”脚本,我想把它变成一个 Chrome 扩展程序.) 解决这个问题最直接的方法是什么?

【问题讨论】:

标签: node.js google-chrome-extension


【解决方案1】:

其实是这样的。看看这个Developers Live-cast。这也是我一直在寻找的东西,这将对您有所帮助。

这会将您的节点应用程序捆绑到您的浏览器中。 这是repo

编辑:

我注意到我的这个旧答案时不时地得到支持(谢谢大家)。

但现在我更提倡使用网络应用程序,而不是将您的应用程序捆绑到许多平台上,例如 chrome 商店或其他任何平台。 您可以查看谷歌的帖子herehere 指示一些方向。

在实践中,我建议您开始使用 Service Worker 和渐进式东西构建具有离线功能的渐进式 Web 应用 (PWA)。

如今网络上有大量资源,如果您使用正确的方法,您可以提供更丰富的应用程序,从而获得更广泛的受众。

再次感谢,编码很好。

【讨论】:

  • 这两个项目有关系吗?其中之一旨在允许在浏览器中使用 CommonJS 模块,而另一个尝试允许 node.js 与 Chrome 打包应用程序的互操作性。
  • 我发现了另一个使用node-browserify创建Chrome扩展的项目,叫做node-chromify:iceddev.github.com/blog/2012/11/05/node-js-in-chrome
  • 但这并没有将nodejs的所有功能都带入扩展中。
  • 可以“浏览”Node.js 脚本并在 Chrome 扩展程序中运行它。只需使用上面提到的 repo (github.com/iceddev/node-chromify) 中的示例。转到 Chrome 扩展并选择例如“http”示例就足够了。之后,您在 Chrome 浏览器中有一个正在运行的 Node.js 服务器。不幸的是,我不能对 websocket 服务器做同样的事情:*.com/questions/20538184/…
【解决方案2】:

简单的答案是否定的,除非你能找到install node.js with an extension using NPAPI 的方法。

Nodejs 和 Google Chrome 扩展确实有一些共同点,即它们都了解 javascript,并且都使用 v8 javascript 引擎。

谷歌浏览器扩展

“Google Chrome 扩展程序是可以修改和增强 Chrome 浏览器功能的小型软件程序”。

要开发 Google Chrome 扩展程序,您应该编写一些 javascript 和/或 html/css。 然后,您可以在浏览器中运行该扩展程序。

如果您希望其他人下载您的扩展程序,您必须提供描述您的扩展程序集权限等的 config.json 文件。

Nodejs

“Node.js 是一个基于 Google Chrome 的 JavaScript 运行时构建的平台,用于轻松构建快速、可扩展的网络应用程序”。

要在 nodejs 中开发应用程序,您需要为 Web 应用程序编写一些 javascript 和/或 html/css。

如果希望其他人使用您的应用程序,您可以启动 nodejs 服务器并监听传入的请求。

总结

尽管 Google Chrome 扩展程序和 Nodejs 有一些相似之处,但它们彼此之间没有任何关系。在正常的客户端/服务器通信之外,您不能以某种特殊的方式将它们一起使用。

【讨论】:

  • 您确定不能使用 Chrome 扩展程序安装本地 Web 服务器(或其他插件)吗?本主题提供了有关使用 NPAPI 使用浏览器扩展安装本地 Web 服务器的一些详细信息:*.com/questions/5053244/…
  • 基本上,我正在尝试创建一个可以在用户计算机上安装 Web 服务器的 Chrome 扩展程序。 (也许这可以通过从 Chrome 扩展调用 shell 命令来完成,例如,在 Ubuntu 上:sudo apt-get install name-of-package-to-install)。
  • 没有。谷歌浏览器不允许这样做。这将打开一个巨大的安全问题。唯一的方法是让用户在 Chrome 之外安装一个实际的程序。 Chrome 扩展程序是沙盒的,不能执行“sudo apt-get install name-of-package-to-install”之类的操作。
  • 看来使用 NPAPI 可以做到这一点:*.com/questions/3695476/…
  • 我的立场是正确的。我想 Google 正在解决我需要人工审核的安全问题。
【解决方案3】:

您可以使用WebPack (GitHub) 或Browserify(请参阅handbook)来构建基于 node.js 代码的网络浏览器扩展。

使用 Browserify,要转换您的代码,您只需运行:

browserify node-code.js -o node-code-out.js

阅读更多:

【讨论】: