#vue.js #web-component #google-web-designer
Вопрос:
В настоящее время я работаю над веб-компонентами и теневым DOM. Я вижу, что можно создать собственный веб-компонент с помощью Vue3 здесь Vue docs. Но в настоящее время я сталкиваюсь с проблемами при создании собственного файла компонента из файлов vuejs. Я некоторое время гуглил и обнаружил, что для этого не так много полезного контента.
Создание веб — компонентов с помощью Vue 3.2-это, безусловно, самый полезный блог, который я нашел. Тем не менее, я не могу выполнить производственную сборку своих файлов.
В настоящее время я получаю 2 файла после сборки.
import {
r as c,
c as l,
o as a,
a as u,
b as d,
d as f,
t as m,
u as p,
e as g,
} from "./vendor.21fe8919.js";
const y = function () {
const r = document.createElement("link").relList;
if (r amp;amp; r.supports amp;amp; r.supports("modulepreload")) return;
for (const e of document.querySelectorAll('link[rel="modulepreload"]')) o(e);
new MutationObserver((e) => {
for (const t of e)
if (t.type === "childList")
for (const s of t.addedNodes)
s.tagName === "LINK" amp;amp; s.rel === "modulepreload" amp;amp; o(s);
}).observe(document, { childList: !0, subtree: !0 });
function i(e) {
const t = {};
return (
e.integrity amp;amp; (t.integrity = e.integrity),
e.referrerpolicy amp;amp; (t.referrerPolicy = e.referrerpolicy),
e.crossorigin === "use-credentials"
? (t.credentials = "include")
: e.crossorigin === "anonymous"
? (t.credentials = "omit")
: (t.credentials = "same-origin"),
t
);
}
function o(e) {
if (e.ep) return;
e.ep = !0;
const t = i(e);
fetch(e.href, t);
}
};
y();
const h = {
props: { timeZone: { type: String, default: "America/Los_Angeles" } },
emits: ["datechange"],
setup(n, { emit: r }) {
const i = n,
o = c(new Date()),
e = l(() => o.value.toLocaleString("en-US", { timeZone: i.timeZone }));
return (
setInterval(() => {
(o.value = new Date()), r("datechange", e);
}, 1e3),
(t, s) => (
a(), u("div", null, [d(t.$slots, "prefix"), f(" " m(p(e)), 1)])
)
);
},
},
v = g(h);
customElements.define("current-time", v);
document.querySelector("current-time").addEventListener("datechange", L);
function L(n) {
console.log(n.detail[0].value);
}
Но я хотел бы, чтобы файл сборки был в следующем формате для моего варианта использования.
class CurrentTime extends HTMLElement {
connectedCallback() {
this.innerHTML = new Date();
setInterval(() => this.innerHTML = new Date(), 1000)
}
}
// Define it as a custom element
customElements.define('current-time', CurrentTime);
файл конфигурации vite
import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
export default defineConfig({
plugins: [vue({ customElement: true })],
});
Комментарии:
1. Не могли бы вы, пожалуйста, добавить дополнительную информацию? Дать информацию недостаточно!
2. Я знаю, что это немного сложно объяснить. Я пытаюсь использовать веб-компонент для создания пользовательского компонента веб-дизайнера Google. Для этого мне нужно, чтобы выходной файл был похож на второй фрагмент кода, который я разместил. Первый файл, который я получаю, можно использовать в большинстве случаев, за исключением случаев, когда я использую его в веб-дизайнере Google. Мне нужен файл сборки vite, чтобы получить вывод, аналогичный моему второму фрагменту кода. Я также добавлю свой файл конфигурации vite. Пожалуйста, дайте мне знать, если потребуется что-нибудь еще.