[英]ES6 exporting/importing in index file
我目前正在通過 webpack/babel 在 React 應用程序中使用 ES6。 我正在使用索引文件來收集模塊的所有組件並導出它們。 不幸的是,這看起來像這樣:
import Comp1_ from './Comp1.jsx';
import Comp2_ from './Comp2.jsx';
import Comp3_ from './Comp3.jsx';
export const Comp1 = Comp1_;
export const Comp2 = Comp2_;
export const Comp3 = Comp3_;
所以我可以很好地從其他地方導入它:
import { Comp1, Comp2, Comp3 } from './components';
顯然這不是一個很好的解決方案,所以我想知道是否還有其他方法。 我似乎無法直接導出導入的組件。
另外,請記住,如果您需要一次導出多個功能,例如您可以使用的操作
export * from './XThingActions';
太晚了,但我想分享我解決它的方式。
具有具有兩個命名導出的model
文件:
export { Schema, Model };
並具有具有默認導出的controller
文件:
export default Controller;
我以這種方式在index
文件中公開:
import { Schema, Model } from './model';
import Controller from './controller';
export { Schema, Model, Controller };
並假設我想導入所有這些:
import { Schema, Model, Controller } from '../../path/';
簡單地:
// Default export (recommended)
export {default} from './MyClass'
// Default export with alias
export {default as d1} from './MyClass'
// In >ES7, it could be
export * from './MyClass'
// In >ES7, with alias
export * as d1 from './MyClass'
或按函數名稱:
// export by function names
export { funcName1, funcName2, …} from './MyClass'
// export by aliases
export { funcName1 as f1, funcName2 as f2, …} from './MyClass'
更多信息: https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/export
文件夾結構:
compoments|
|_ Nave.js
|_Another.js
|_index.js
組件文件夾中的 Nav.js comp
export {Nav}
組件文件夾中的 index.js
export {Nav} from './Nav';
export {Another} from './Another';
隨處導入
import {Nav, Another} from './components'
@babel/plugin-proposal-export-default-from
: yarn add -D @babel/plugin-proposal-export-default-from
.babelrc.json
或任何配置文件類型中module.exports = {
//...
plugins: [
'@babel/plugin-proposal-export-default-from'
]
//...
}
file-path
export
:export Foo from './components/Foo'
export Bar from './components/Bar'
祝你好運...
對我有用的是添加type<\/code>關鍵字:
export type { Comp1, Comp2 } from './somewhere';
多年來,我一直在尋找如何在模塊化 JavaScript 中將模塊導出為命名導出和默認導出。 經過大量試驗,我發現的解決方案非常簡單有效。
// index.js
export { default as Client } from "./client/Client.js";
export { default as Events } from "./utils/Events.js";
// Or export named exports
export { Client } from "./client/Client.js";
export { Events } from "./utils/Events.js";
export * as default from "./index.js";
這將允許以兩種方式導入每個導出的模塊:
// script.js
import { Client } from "index.js";
new Client();
import module from "index.js";
new module.Client();
// You could also do this if you prefer to do so:
const { Client } = module;
您可以隨意使用它以使其適合您的需求,但它對我有用。 希望能幫助到你!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.