MediaWiki:Node.js

来自东方Project线下活动维基
稀神灵梦留言 | 贡献2025年3月1日 (六) 23:58的版本

注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的变更的影响。

  • Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5Ctrl-R(Mac为⌘-R
  • Google Chrome:Ctrl-Shift-R(Mac为⌘-Shift-R
  • Internet Explorer或Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5
  • Opera:Ctrl-F5
// 动态加载 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);