hybrid 浮层 loader
安装和使用
安装:
yarn add card-loader -D
使用 loader:
import card from 'card-loader!./card/modal';
配置
sdk 参数用于指定 sdk 环境,对于 biubiu 项目,传入 'biubiu'
import card from 'card-loader?sdk=biubiu!./card/modal';
示例:
import card from 'card-loader!./card/modal';
const param = {
display: {
opacity: 0.5
},
message: {},
success(data) {
console.log('success', data);
},
error(opt, errMessage) {
console.log('err', errMessage, opt);
}
};
card.show(param);
浮层模块的开发
先看一个最简单的例子:
export default function(data, inject, containerId) {
output = processData(data)
return {
show() {
renderModal(output, inject, containerId)
}
};
}
function renderModal(data, inject, containerId) {
console.log(data)
const container = document.getElementById(containerId);
const button = document.createElement("button");
const destroy = () => {...}
button.addEventListener("click", () => {
inject.closeModal(destroy)
});
container.appendChild(button);
}
如注释,模块只规定通过 export default 输出 一个方法,该方法 接收三个参数,并且返回一个含有 show 方法的对象。
show 方法完成模块渲染。
注意:
当使用card-loader
加载代码时,客户端的浮层代码会以一个单独的页面存在。
换句话说在编译页面同时会以 loader 为入口文件执行 webpack 构建弹层页面。
因此弹层使用的各种资源文件(包含但不限于 js、css)需要直接或间接的被浮层入口文件引入
manifest.json
文件
由于需要对每个浮层进行唯一标示,需要在浮层入口代码的同级目录创建一个manifest.json
文件:
{
"name": "card-name"
}
如果没有此文件,编译时会报错。