node中使用ES6的impot动态导入模块

 0 0条评论

之前node版本都是使用CommonJS规范,通过require导入模块的。

不过目前node已经支持ES6,即import导入,只需要在package.json文件添加以下这句话即可使用import导入:

 "type": "module"

使用require导入时,可以非常方便的实现动态导入,代码如下:

let { model, key } = result
let excute = require(`../model/${model}/excute`)
let data = await new excute().findOneByID(objID).lean()

但是使用了import后,就没那么简单了。

先说一下项目实际需求吧,需要通过客户端post一个关键字,然后通过这个关键字,实例化不同的类,每个类都有一个findOneByID方法,但是具体哪个类需要通过前端传入,那么必须要使用动态导入了,网上查了一下资料,实现起来也不难。

直接贴代码了,主要是用到impot和then

const model='user'
import(`../model/${model}/db.js`).then(async _module => {
    const n=new _module.default()
    const result=await n.findOneByID('xxxx')
    console.log(result)
})

这里为什么要使用default呢,因为_module下面有这样一个属性,所以必须要解构出来,以下就是直接打印_module的结果,可以看到default属性

[Module: null prototype] { default: [class User] }

至此import动态引入模块即可实现,还是非常方便的。


本文作者:双黑

版权声明:本站文章欢迎链接分享,禁止全文转载!

游客