MediaWiki:Node.js:修订间差异
来自东方Project线下活动维基
无编辑摘要 |
无编辑摘要 |
||
第1行: | 第1行: | ||
// 动态加载 | // 动态加载 JavaScript(返回 Promise) | ||
function loadScript(url, | function loadScript(url) { | ||
return new Promise((resolve, reject) => { | |||
var script = document.createElement('script'); | |||
script.src = url; | |||
script.onload = () => { | |||
console.log('加载完成: ' + url); | |||
resolve(); | |||
}; | |||
script.onerror = () => { | |||
console.error('加载失败: ' + url); | |||
reject(); | |||
}; | |||
document.head.appendChild(script); | |||
}); | |||
} | } | ||
第22行: | 第25行: | ||
// 依次加载所有资源(按顺序) | // 依次加载所有资源(按顺序) | ||
function loadDependencies() { | async function loadDependencies() { | ||
var urlObj = new URL(window.location.href); | |||
var title = urlObj.searchParams.get("title"); // 获取 title 参数 | |||
var action = urlObj.searchParams.get("action"); // 获取 action 参数 | |||
var hasJs = title && title.endsWith(".js"); | |||
var hasCSS = title && title.endsWith(".css"); | |||
var hasEditAction = action === "edit"; | |||
console.log('NodeJS 模块加载中...'); | |||
try { | |||
if (hasJs || hasCSS) { | |||
if (hasEditAction) { | |||
await loadScript('/node_modules/oojs/dist/oojs.min.js'); | |||
await loadScript('/node_modules/oojs-ui/dist/oojs-ui.min.js'); | |||
loadCSS('/node_modules/oojs-ui/dist/oojs-ui-wikimediaui.min.css'); | |||
await loadScript('/node_modules/oojs-ui/dist/oojs-ui-wikimediaui.min.js'); | |||
} | |||
} | |||
await loadScript('/node_modules/vue/dist/vue.js'); | |||
console.log('所有资源加载完毕 🎉'); | |||
} catch (e) { | |||
console.error('资源加载失败:', e); | |||
} | |||
} | } | ||
// 确保在页面加载完成后执行 | // 确保在页面加载完成后执行 | ||
document.addEventListener("DOMContentLoaded", loadDependencies); | |||
2025年3月1日 (六) 23:58的版本
// 动态加载 JavaScript(返回 Promise)
function loadScript(url) {
return new Promise((resolve, reject) => {
var script = document.createElement('script');
script.src = url;
script.onload = () => {
console.log('加载完成: ' + url);
resolve();
};
script.onerror = () => {
console.error('加载失败: ' + url);
reject();
};
document.head.appendChild(script);
});
}
// 动态加载 CSS
function loadCSS(url) {
var link = document.createElement('link');
link.rel = 'stylesheet';
link.href = url;
document.head.appendChild(link);
}
// 依次加载所有资源(按顺序)
async function loadDependencies() {
var urlObj = new URL(window.location.href);
var title = urlObj.searchParams.get("title"); // 获取 title 参数
var action = urlObj.searchParams.get("action"); // 获取 action 参数
var hasJs = title && title.endsWith(".js");
var hasCSS = title && title.endsWith(".css");
var hasEditAction = action === "edit";
console.log('NodeJS 模块加载中...');
try {
if (hasJs || hasCSS) {
if (hasEditAction) {
await loadScript('/node_modules/oojs/dist/oojs.min.js');
await loadScript('/node_modules/oojs-ui/dist/oojs-ui.min.js');
loadCSS('/node_modules/oojs-ui/dist/oojs-ui-wikimediaui.min.css');
await loadScript('/node_modules/oojs-ui/dist/oojs-ui-wikimediaui.min.js');
}
}
await loadScript('/node_modules/vue/dist/vue.js');
console.log('所有资源加载完毕 🎉');
} catch (e) {
console.error('资源加载失败:', e);
}
}
// 确保在页面加载完成后执行
document.addEventListener("DOMContentLoaded", loadDependencies);