@nutui/nutui
Version:
京东风格的轻量级移动端 Vue2、Vue3 组件库(支持小程序开发)
40 lines (39 loc) • 1.11 kB
JavaScript
import { createApp } from "vue";
import { h as isString, i as isFunction } from "./util-D1pvnUYu.js";
const CreateComponent = (options, component) => {
let elWrap = document.body;
const teleport = options.teleport || "body";
if (teleport != "body") {
if (isString(teleport)) {
elWrap = document.querySelector(teleport);
} else {
elWrap = options.teleport;
}
}
const root = document.createElement("view");
const name = component.name ? component.name + "-" : "";
const id1 = options.id || (/* @__PURE__ */ new Date()).getTime();
root.id = name + id1;
let Wrapper = {};
if (isFunction(component.wrapper)) {
Wrapper = component.wrapper(elWrap, root);
} else {
Wrapper = component.wrapper;
}
const instance = createApp(Wrapper, options);
const componens = component.components;
componens && componens.forEach((comp) => {
instance.use(comp);
});
elWrap.appendChild(root);
return {
instance: instance.mount(root),
unmount: () => {
instance.unmount();
elWrap.removeChild(root);
}
};
};
export {
CreateComponent as C
};