UNPKG

cgreact-loader

Version:

CGReact与Webpack配套的loader

62 lines (61 loc) 1.45 kB
// loader生成Jss let sjss = "XXXjss_styleXXX"; // 构造返回结果 let result = { tag: "XXXfile_nameXXX", jss: sjss['@global'], key: {}, path: "XXXpublic_pathXXX", // 这个路径会由cgreact-laoder替换为public_path dom: document.createElement("link") }; // 构造jss的class键(CSSModule) for (let key in result.jss) { key.trim().split(" ").map(k => { if (k.startsWith(".") && k.indexOf(":") == -1) { // 只需要构造类选择器,复合类选择器无需构造类名 result.key[k] = k.substring(1); } }); } //添加affect,invalid,bind函数 result.affect = (context) => { // 构造表情细节 result.dom.setAttribute("data-css", ""); result.dom.setAttribute("data-meta", result.tag); result.dom.setAttribute("rel", "stylesheet"); result.dom.setAttribute("href", result.path); // 添加到body节点 if (document.getElementById("user")) { document.getElementById("user").appendChild(result.dom); } else { window.setTimeout(() => { document.getElementById("user").appendChild(result.dom); }, 100); } if (context) { result.bind(context); } return result; }; result.invalid = () => { result.dom.remove(); return result; }; result.bind = (context) => { if (context && context.CssAndJSList && typeof context.CssAndJSList.push == "function") { context.CssAndJSList.push(result); } return result; }; export default result;