考虑以下具有多个导出功能的文件(一个函数库):
lib.js:
export const Funct1 = () => {
...
}
export const Funct2 = () => {
...
}
export const Funct3 = () => {
...
}
在其他环境中使用共享代码时,我需要构建一个中间文件来导入所有lib.js函数,然后将其作为导出(模块重定向)提供给新项目使用。这是我的代码:
MyLib.js
export { default as functionlib } from "./src/helpers/lib";
现在,我需要将MyLib.js导入到我的最终代码中:
App.js
import { lib } from "../shared/MyLib.js"
...
// Later use the function
let a = lib.Funct1();
根据该语法lib
两端是null
我的最终代码App.js
。
这些是我使用过的变体,MyLib.js
以及App.js上的结果错误:
import { default as lib } from "../shared/MyLib.js" <--- ERROR: lib ends being null
要么
import { * as lib } from "../shared/MyLib.js" <--- ERROR: unexpected token at *
如何正确重定向内部的所有函数MyLib.js
以使所有lib
函数可用(而不显式显示所有lib`` functions inside
MyLib`)?
有没有办法在不显式使用所有库函数的情况下以“批量模式”进行操作?
否,动态计算的值不能静态导出:ECMAScript 6模块:最终语法:
您可能想知道–如果我们仅可以默认导出对象(例如CommonJS),为什么我们需要命名导出?答案是,您不能通过对象强制执行静态结构,而失去所有相关的优势(在下一节中介绍)。
您可以默认导出:
//lib.js
const Funct1 = () => {
...
}
export default Funct1;
默认导入:
import Funct1 from './lib.js'
import MyFunc from './lib.js'
import Whatever from './lib.js'
您可以在导入时分配任何名称,因为它可以解析为默认导出的lib.js
名称。
或命名出口:
//lib.js
export const Funct1 = () => {
...
}
命名导入
import { Func1 } from './lib.js'
import { MyFunc } from './lib.js' //Doesn't work
import { Whatever } from './lib.js' //Doesn't work
在这种情况下,导入名称必须与导出名称相对应,因为您要通过导入名称来导入特定的事物。
export const Funct1 = () => {
...
}
export const Funct2 = () => {
...
}
export const Funct3 = () => {
...
}
export {
Funct1,
Funct2,
Funct3,
} from "./src/helpers/lib";
//You can easily add more
export {
Foo,
Bar
} from "./src/helpers/fooBar";
import * as MyLib from "../shared/MyLib.js"
// Usage
MyLib.Funct1()
MyLib.Foo()
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句