在java中我们通常可以用名称来动态加载想要的类及实例化并执行相应的方法,这样我们就可以通过客户的不同的请求来执行不同的类和方法,那么nodejs有这功能没有呢,我来测试下。以下是一个koa的自定义中间件,我们也可以使用其它的方式取得客户端的参数,这里不是关键,关键在于我们怎么通过客户端请求的参数来动态的加载我们想要的js和执行相对应的方法。
1、通过名称来执行方法首先要把名称转为对象,如:接收到的名称为show,我们要通过eval(name)来把字符串show转为对象,然后才能执行fun()方法。
2、怎么通过名称引用到相应的js文件呢,这个就通过require,require通过字符串的路径和js文件名称可以加载相应的js文件。
const myMiddleWare = async(ctx,next) => {
console.log(ctx.request.query.name);
let name = ctx.request.query.name;
console.log(name+"=====22");
let fun = eval(name);
fun("這是一個方法");
ctx.body = "這是一個中間件測試";
const path = '../test/One';
const show1 = require(path);
console.log("============================");
show1();
await next();
}
const showName = ()=>{
console.log("=====這是一個");
}
module.exports = showName;
eval() 函数作用: eval()可以接受一个字符串str作为参数,并把这个参数作为脚本代码来 执行