引入模块时名称为什么必须使用字符串?

const URL = '../container/foo'


// [1] error: can't find module

import foo from URL


// [2] good

import foo from '../container/too'

请教下大家,为什么 [2] 可行,而 [1] 会报错呢?或者说为什么我们要采用字符串的方式呢?

茅侃侃
浏览 362回答 1
1回答

斯蒂芬大帝

ModuleSpecifier,根据ECMA的规则,FromClause必须是字符串字面量。但这规定是怎么来的呢?其实很简单,因为ECMAScript模块是静态的,也就是说你必须在模块的顶层定义静态导入。静态两个字就说明了模块导入必须是写死的,不能在运行时动态改变。那自然就只能是字符串字面量。当然,后续在tc39/proposal-dynamic-import中也会引入“动态引入”特性。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript