是否可以使用node.js模块编写Chrome应用程序?

时间:2014-07-30 07:54:48

标签: javascript node.js google-chrome-app

我想编写一个Chrome应用程序,但我也希望使用Edge.js与一些.Net代码进行交互操作。现在我已经在Nodejs应用中试用了它,但我无法弄清楚如何在Chrome应用中做到这一点。

我观看过Paul Kinlan(the Chrome Apps office hours - NodeJS in chrome packaged apps)的YouTube视频,但无法获取代码。我也尝试过浏览器而没有成功。

是否存在使用Chrome应用中的任何节点模块的工作示例(因为可用资源看起来较旧)。

提前致谢, 的Manoj。

1 个答案:

答案 0 :(得分:4)

我在chrome打包的应用程序中运行为node.js编写的代码,并使用browserify或webpack使用发布到npm的模块。

对我而言,唯一真正棘手的问题一直是导出我的网络应用程序使用的功能,因为您无法访问require()。我通常只创建一个特殊模块,导出我想要访问的所有全局符号,并将其用作我的入口点。

,例如,使用webpack,我将创建一个名为globals.js的文件:

module.exports = exports = {
  a: require('a'),
  b: require('b'),
  ...
}

然后创建webpack.config.js

module.exports = {
  context: __dirname + "/js",
  entry: {
    globals: [
        "globals.js",
      ],
  },
  output: {
    // Make sure to use [name] or [id] in output.filename
    //  when using multiple entry points
    path: __dirname + "/js/generated",

    filename: "[name].bundle.js",
    chunkFilename: "[id].bundle.js",

    library: "[name]",
    libraryTarget: "umd",
  }
};

然后我可以打包并将生成的包包含在我的应用程序中,并立即使用全局变量globals

我不确定Edge.js的工作原理,但我不认为将webpack / browserify转换为web / chrome应用程序是可能的,因为它们不支持本机绑定和进程间通信有很多不同。我只是不确定它是如何起作用的。

(但你可以使用不同类型的IPC实现自己的.net应用程序互操作),