【问题标题】:EncloseJS vs Nexe [closed]EncloseJS vs Nexe [关闭]
【发布时间】:2015-07-02 15:20:29
【问题描述】:

有没有人有将 node.js 应用程序编译成可分发二进制文件的经验?我看到的两个选项是 encloseJS 和 nexe,但除了使用 encloseJS 更快的编译时间之外,并没有真正看到主要区别。

【问题讨论】:

    标签: node.js


    【解决方案1】:

    我一直在使用 JXcore - https://github.com/jxcore/jxcore 除了编译之外,它还有很多功能,包括多线程和重启管理。但它似乎确实回到了 Node 0.10。现在节点 4 已经发布,并且长期支持安排已经到位,可能是时候再看看 Nexe 和 Enclose,因为我不使用额外的 JXcore 功能。

    我注意到 enclose.js (http://enclosejs.com/https://www.npmjs.com/package/enclose) 不是开源的,仅可免费用于评估目的:

    您同意不在超过 一次一台计算机,而不是通过任何网络或远程或其他方式 使用权。此规定仅适用于个人副本,不适用于 多系统许可证或评估版。如果 EncloseJS 是由 你的雇主 你同意在之前得到你的雇主的明确许可 如此处所述,在多台计算机上安装 EncloseJS。

    Enclose 适用于四个特定版本(今天):0.12.7、2.5.0、4.2.2、5.1.0。

    我在使用带有 express.io 的 Enclose 时遇到了问题。可能有解决方案,但我没有探索太远。

    Nexe (https://www.npmjs.com/package/nexe) 是具有 MIT 许可证的开源软件。该站点指出了一些额外的限制,例如不使用本机模块,并且只遍历“简单”需求,但我怀疑这些与 Enclose 相同。可以选择任何版本的node,Nexe好像是下载node源码,从头开始编译,需要一些时间(第一次17分钟,4分钟无改动重新编译)。

    Nexe 给了我关于 express.io 的警告。对于一个简单的 4 行应用程序,使用默认选项(最新节点 5.1.0),exe 不起作用 - 抱怨无法找到模块 ./lib。

    var app = require('express.io')();
    app.http().io();
    app.listen(8081);
    app.get('/',function(req,res){res.send('Hi!');});
    

    但是当我将其更改为排除 express.io 模块时,它在 Nexe 中工作。

    var module = 'express.io';
    var app = require(module)();
    app.http().io();
    app.listen(8081);
    app.get('/',function(req,res){res.send('Hi!');});
    

    我发现离开 express.io(似乎已经有一年多没有维护了),我的应用可以由 Enclose 编译,但不能由 Nexe 编译:

    var express = require('express');
    var app = express();
    var server = require('http').createServer(app);
    var io = require('socket.io')(server);
    app.get('/',function(req,res){res.send('Hi!');});
    server.listen(8081);
    

    Nexe 和 Enclose 似乎都有相似的流行度/下载统计数据。

    【讨论】:

    猜你喜欢
    • 2017-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-24
    • 2013-08-17
    • 2011-06-24
    • 2014-02-28
    • 2011-05-01
    相关资源
    最近更新 更多