Import es6如何仅从模块和don导入一个部件';不要执行其他部分
我有以下称为代码样式的模块:Import es6如何仅从模块和don导入一个部件';不要执行其他部分,import,ecmascript-6,export,browserify,Import,Ecmascript 6,Export,Browserify,我有以下称为代码样式的模块: import fs from "fs"; import css from "insert-css"; export var master = (function(){ let styles = fs.readFileSync(__dirname+"/sheets/master.css","utf8"); css(styles); return styles; })(); export var colors = (function(){
import fs from "fs";
import css from "insert-css";
export var master = (function(){
let styles = fs.readFileSync(__dirname+"/sheets/master.css","utf8");
css(styles);
return styles;
})();
export var colors = (function(){
let styles = fs.readFileSync(__dirname+"/sheets/colors.css","utf8");
css(styles);
return styles;
})();
export var banner = (function(){
let styles = fs.readFileSync(__dirname+"/sheets/colors.css","utf8");
css(styles);
return styles;
})();
export var busy1 = (function(){
let styles = fs.readFileSync(__dirname+"/sheets/colors.css","utf8");
css(styles);
return styles;
})();
我确实:
import {master} from "code-style";
现在的问题是,模块中的所有函数都是在我导入时执行的,但我只想执行master
我不知道如何做到这一点
我需要保持导入状态,不能在导入后添加传统代码,功能和函数调用必须留在模块内
有什么想法吗
非常感谢您的帮助
Ps:代码在客户端,使用browserify和babel。您使用IIFEs(立即调用的函数表达式),JavaScript函数在定义后立即运行(在本例中导入)。将所有IIFE更改为函数,并在需要时调用它们
例如,这个:
export var colors = (function(){
let styles = fs.readFileSync(__dirname+"/sheets/colors.css","utf8");
css(styles);
return styles;
})();
应更改为:
export var colors = function(){
let styles = fs.readFileSync(__dirname+"/sheets/colors.css","utf8");
css(styles);
return styles;
};
导入后,调用它,如下所示:
从“代码样式”导入{colors};
颜色()
更改后,您将调用master
,并调用以下函数:
import {master} from "code-style";
const masterCSS = master();
JS文件必须全部执行,不能任意停止JS的运行。您可以进一步分解它,或者更改模块的使用方式。好的,我明白了,您将如何分解它?分离文件。IMO-Ori的解决方案更好——这是唯一一种可以明确控制何时调用函数的方法。是的,我以前已经这样做过,现在想省去这个额外的调用。在这种情况下,需要额外的调用。