我正在检查是否可以分发node.js应用程序封闭源.不是客户端Javascript文件,而是服务器端文件作为商业产品.我认为代码混淆/ uglification不会提供真正的隐私.也许将包装/编译源代码编译成二进制文件可能有所帮助.这可能吗?
我做了一些搜索NodeJS和v8代码.
首先在NodeJS存储库上,我在src/node.cc第1128行找到了首次加载源代码的位置:
Local<Value> ExecuteString(Handle<String> source, Handle<Value> filename)
Run Code Online (Sandbox Code Playgroud)
首先编译字符串,(以后执行),使用:
Local<v8::Script> script = v8::Script::Compile(source, filename);
Run Code Online (Sandbox Code Playgroud)
看一下deps/v8/include/v8.h第639行的v8源代码,Compile函数返回:
Compiled script object, bound to the context that was active
when this function was called. When run it will always use this
context.
Run Code Online (Sandbox Code Playgroud)
我不确定绑定到上下文的脚本意味着什么,但我认为它不仅仅是一个二元对象,您可以保存并转移到另一台机器而无需传输整个上下文.
编辑:深入研究v8.h,还有一个ScriptData类,它预先编译脚本以使编译更快,并且可以与Script类一起使用,但Script类仍然需要原始源代码加载脚本.(可能在打印错误时,它知道错误的来源.)
总之,如果没有太多工作,我认为这是不可能的.
| 归档时间: |
|
| 查看次数: |
6578 次 |
| 最近记录: |