保护JavaScript源代码

应用中JavaScript源代码能够编译为本地代码进行保护 , NW.js能够加载编译之后的代码 . 应用作为产品发布时可以将代码进行编译 .

编译

JS源代码编译为本地代码需要使用 nwjc工具 , 同时需要提供SDK构建方式的NW .

nwjc source.js binary.bin

*.bin文件需要发布到应用中 , 可以任意命名bin文件 .

加载已编译JS文件

nw.Window.get().evalNWBin(frame, 'binary.bin');

win.evalNWBin()方法中的参数与 Window.eval()方法相同 , 第一个参数为目标frame , null为主frame , 第二个参数为已编译的bin文件 .

从远程加载已编译JS文件

可以从远程(例如使用AJAX)获取已编译的JavaScript,并且即时执行。

var xhr = new XMLHttpRequest();
xhr.responseType = 'arraybuffer'; // make response as ArrayBuffer
xhr.open('GET', url, true);
xhr.send();
xhr.onload = () => {
  // xhr.response contains compiled JavaScript as ArrayBuffer
  nw.Window.get().evalNWBin(null, xhr.response);
}
已编译代码在[浏览器环境](JavaScript-Contexts-in-NW.js.md#浏览器环境)中执行 . 可以像其他运行在浏览器环境中的其他脚本 , 就像您使用任何Web API(如DOM)以及[NW.js API和Node API](avaScript-Contexts-in-NW.js.md#node环境访问浏览器api和nwjs的api)                                    
      

已知问题

已编译代码不支持跨平台也不兼容不同版本的NW.js的版本,因此在打包应用时需要在各自系统平台中运行nwjc .