保护JavaScript源代码

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

编译

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

  1. nwjc source.js binary.bin

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

加载已编译JS文件

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

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

从远程加载已编译JS文件

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

  1. var xhr = new XMLHttpRequest();
  2. xhr.responseType = 'arraybuffer'; // make response as ArrayBuffer
  3. xhr.open('GET', url, true);
  4. xhr.send();
  5. xhr.onload = () => {
  6. // xhr.response contains compiled JavaScript as ArrayBuffer
  7. nw.Window.get().evalNWBin(null, xhr.response);
  8. }
  1. 已编译代码在[浏览器环境](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 .