我有一个名为code-style的下一个模块:
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。
答案 0 :(得分:0)
您使用IIFE(立即调用函数表达式),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();