从ES6模块仅导入静态变量

时间:2019-01-10 10:48:30

标签: javascript node.js npm webpack import

我有一个common.js文件,其中包含我的App上使用的常见变量和方法,例如nav-bar模块(nav-bar.js)等。

通常,我的应用程序上的每个模块都需要导入整个common.js模块,但登录模块除外。这仅需要common.js上定义的竞争者之一。

如果我使用命名导入来执行以下操作:

$ import {RestURL} from "./common";

我意识到,是的,我可以在我的登录模块中使用RestURL const,但是也导入了common.js中导入的所有模块,包括nav-bar模块,该模块执行我不想执行的代码

我想知道...总有没有像静态变量那样只导入对应的变量RestURL而不运行所有common.js代码,也就是没有导入在common.js文件(例如nav)中导入的所有模块-bar.js模块?

谢谢!

// -- common.js ---------------------------------------------------
import '../inc/nav-bar';        // NAV-BAR JS

export const RestURL = {
    login:          '/services/b2b/v2/login',
}
// -- end of common.js module -------------------------------------



// -- login.js ----------------------------------------------------
import {RestURL} from "./common";

console.log(RestURL.login);
// -- end of login.js module --------------------------------------

我需要在login.js模块中使用RestURL const,但是我不希望导入nav-bar.js,因为其中有代码,在加载login.js时不需要执行任何操作。使用命名的导入方法,我设法访问const RestURL,但是同时也加载了导航栏模块...:(

1 个答案:

答案 0 :(得分:2)

您可以将模块分为两部分,然后导入两个模块。

// -- const.js ---------------------------------------------------

export const RestURL = {
    login:          '/services/b2b/v2/login',
}
// -- end of const.js module -------------------------------------


// -- common.js ---------------------------------------------------
import '../inc/nav-bar';        // NAV-BAR JS
import {RestURL} from './const.js'

// -- end of common.js module -------------------------------------




// -- login.js ----------------------------------------------------
import {RestURL} from './const.js'

console.log(RestURL.login);
// -- end of login.js module ----