对于喜欢编程,爱折腾的人来说,使用nodejs搭建后台是一件很有意思的事情:所有的东西从头到尾都是自己来写。当然,你可以使用express 、koa这样的工具来简化你的工作,这是另一回事。如果你或者你们公司尝试打算转nodejs,那么不得不考虑的一件事情就是源代码加密的问题。因为一旦使用nodejs,这就意味着所有的代码都是明文了。
那有没有办法对源码加密使用呢?当然有,先上代码!很简单,就三个文件:
app.js
initEnv.js
demo_encrypt.jse(此文件就是nodejs模块加密后的文件,我这里并没有做任何的加密处理)
执行node app.js,结果如下:
有没有觉得上面的办法有点意思:扩展了一个.jse类型的文件,之后只要require这种类型的文件(也就是源码加密后的文件),都会按照下面的流程来执行:
- 取对应加密文件的内容;
- 对文件内容解密(肯定得采用对称的算法);
- 执行解密后的脚本,也就是源码;
- 将模块暴露出去。
其实很多工具都利用了require.extensions来做一些事情,比如babel模块注册的 .es 、.es6 、.jsx。所以这个属性你可以好好的去看下(https://nodejs.org/api/globals.html#globals_require_extensions),官方已经弃用这个属性了,但是不会移除掉,所以可以放心大胆的使用。
比如,json模块的实现:
希望这能给你带来一点思路。