刚开始看貌似是弥补不能运行时加载、按需加载, 用来实现require()的功能的。
但是为什么要设计成异步、返回Promise,这样没法平滑的替代require(),整个编码结构受到了很大的冲击。
结合top await就还好
@yuu2lee4 实际场景却不一定,
不太明白受到了怎样的冲击?所有能用 require 解决的都可以用 import + promise 搞定 设计成异步是必须的啊,比如要加载一个远程模块,需要远程读取另外一个文件的话,同步就卡死了
@andyhu 试试从后端的角度
异步加载的意图主要是用在浏览器环境,因为网络环境复杂,同步加载会浪费等待时间的资源。
服务端环境下,require() 就已经能够满足需求了。运行时和按需加载也可以使用 require(),无须 import
网络资源肯定是异步的呀
@x-cold 是的,所以我觉得这个实现应该可以选择
@captainblue2013 我其实就是后端用的多,一般情况下直接 import from 了,其余的时候用 import() Promise 感觉相当爽,没觉得有什么不方便啊?后端现在 Node 全部支持原生 async await,和 require 能有多大不同呢?
@andyhu 但是原本的module.exports模式,其实只是个wrapper, 你不能直接在顶层require替换成Import(),因为行为的结果不一样,只能在原来按需加载的地方,同时是在async function内部,才能替换。反正是不能无脑替换。