MediaWiki:Node.js:修订间差异

来自东方Project线下活动维基
无编辑摘要
无编辑摘要
 
(未显示同一用户的5个中间版本)
第21行: 第21行:
}
}


// 依次加载所有资源(按顺序)
function loadDependencies() {
function loadDependencies() {
     var urlObj = new URL(window.location.href);
     var urlObj = new URL(window.location.href);
     var title = urlObj.searchParams.get("title");
     var title = urlObj.searchParams.get("title");
     var action = urlObj.searchParams.get("action");
     var action = urlObj.searchParams.get("action");
     var hasJs = title && title.indexOf(".js") === title.length - 3;
     var isEditingJS = title && title.indexOf(".js") === title.length - 3 && action === "edit";
     var hasCSS = title && title.indexOf(".css") === title.length - 4;
     var isEditingCSS = title && title.indexOf(".css") === title.length - 4 && action === "edit";
    var hasEditAction = action === "edit";


     console.log('NodeJS 模块加载中...');
     console.log('NodeJS 模块加载中...');


    // 按顺序加载资源
     if (isEditingJS || isEditingCSS) {
     if (hasJs || hasCSS) {
        if (!hasEditAction) {
            loadScript('/node_modules/oojs/dist/oojs.min.js', function () {
                loadScript('/node_modules/oojs-ui/dist/oojs-ui.min.js', function () {
                    loadCSS('/node_modules/oojs-ui/dist/oojs-ui-wikimediaui.min.css');
                    loadScript('/node_modules/oojs-ui/dist/oojs-ui-wikimediaui.min.js', function () {
                        loadScript('/node_modules/vue/dist/vue.js', function () {
                            console.log('所有资源加载完毕 🎉');
                            var loaded = true;
                        });
                    });
                });
            });
        } else {
            loadScript('/node_modules/vue/dist/vue.js', function () {
                console.log('所有资源加载完毕 🎉');
                var loaded = true;
            });
        }
    } else {
         loadScript('/node_modules/vue/dist/vue.js', function () {
         loadScript('/node_modules/vue/dist/vue.js', function () {
             console.log('所有资源加载完毕 🎉');
             console.log('所有资源加载完毕 🎉');
             var loaded = true;
             loaded = true;
         });
         });
    } else {
    // loadScript('/node_modules/oojs/dist/oojs.min.js', function () {
    //      loadScript('/node_modules/oojs-ui/dist/oojs-ui.min.js', function () {
    //          // loadCSS('/node_modules/oojs-ui/dist/oojs-ui-wikimediaui.min.css');
    //          loadScript('/node_modules/oojs-ui/dist/oojs-ui-wikimediaui.min.js', function () {
    //              loadScript('/node_modules/vue/dist/vue.js', function () {
    //                  console.log('所有资源加载完毕 🎉');
    //                  loaded = true;
    //              });
    //          });
    //      });
    //  });
        loadScript('/node_modules/vue/dist/vue.js', function () {
                        console.log('所有资源加载完毕 🎉');
                        loaded = true;
                    });
     }
     }
}
}

2025年3月2日 (日) 01:25的最新版本

// 动态加载 JavaScript(使用回调)
function loadScript(url, callback) {
    var script = document.createElement('script');
    script.src = url;
    script.onload = function () {
        console.log('加载完成: ' + url);
        if (callback) callback();
    };
    script.onerror = function () {
        console.error('加载失败: ' + url);
    };
    document.head.appendChild(script);
}

// 动态加载 CSS
function loadCSS(url) {
    var link = document.createElement('link');
    link.rel = 'stylesheet';
    link.href = url;
    document.head.appendChild(link);
}

function loadDependencies() {
    var urlObj = new URL(window.location.href);
    var title = urlObj.searchParams.get("title");
    var action = urlObj.searchParams.get("action");
    var isEditingJS = title && title.indexOf(".js") === title.length - 3 && action === "edit";
    var isEditingCSS = title && title.indexOf(".css") === title.length - 4 && action === "edit";

    console.log('NodeJS 模块加载中...');

    if (isEditingJS || isEditingCSS) {
        loadScript('/node_modules/vue/dist/vue.js', function () {
            console.log('所有资源加载完毕 🎉');
            loaded = true;
        });
    } else {
    	// loadScript('/node_modules/oojs/dist/oojs.min.js', function () {
     //       loadScript('/node_modules/oojs-ui/dist/oojs-ui.min.js', function () {
     //           // loadCSS('/node_modules/oojs-ui/dist/oojs-ui-wikimediaui.min.css');
     //           loadScript('/node_modules/oojs-ui/dist/oojs-ui-wikimediaui.min.js', function () {
     //               loadScript('/node_modules/vue/dist/vue.js', function () {
     //                   console.log('所有资源加载完毕 🎉');
     //                   loaded = true;
     //               });
     //           });
     //       });
     //   });
        loadScript('/node_modules/vue/dist/vue.js', function () {
                        console.log('所有资源加载完毕 🎉');
                        loaded = true;
                    });
    }
}

// 确保在页面加载完成后执行
if (document.readyState === 'complete') {
    loadDependencies();
} else {
    window.addEventListener('load', loadDependencies);
}