使用ES6 Import的下面语句的一行等价物是什么
我的现有代码(使用require)
app.use('/c', require('./route/routesc')); // routes which are common
app.use('/d', require('./route/routesd')); // routes for Data Agent
app.use('/a', require('./route/routesa')); // routes for Admin
使用ES6导入的代码相同
import routesc from "./route/routesc.js"
import routesd from "./route/routesd.js"
import routesa from "./route/routesa.js"
app.use('/c', routesc); // routes which are common
app.use('/d', routesd); // routes for Data Agent
app.use('/a', routesa); // routes for Admin
我想知道是否有任何一个班轮为import
?
顺便说一句,我花了40分钟寻找这个答案,最后张贴在这里。
3条答案
按热度按时间zte4gxcn1#
ONE-liner 的等效值为
没有办法将它们合并到一个语句中,
import
声明总是需要独立存在。798qvoo82#
在
/route
文件夹中创建一个包含export { routesc } from './routesc.js'
的index.js
文件。然后执行
import * as routers from './route'
。现在您可以像
app.use('/c', routers.routesc);
一样使用它o7jaxewo3#
你可以使用dynamic import函数来实现,它将返回一个Promise,该Promise将解析为一个模块名称空间对象(与
import * as name from moduleName
的结果相同)。下面是一个示例实现。由于
import
是一个异步函数,并且app.use()
不接受Promise,因此使用await运算符返回实现值(模块命名空间)而不是Promise。然后将其 Package 在方括号中,因为.default
需要访问实现值,而不是Promise对象。再进一步,你甚至可以实现你自己的
require
函数,只要记住添加await
操作符。