mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-07-19 22:21:32 +02:00
refactor: rename function to app.require
This commit is contained in:
@@ -15,7 +15,6 @@ logs/
|
||||
*.iws
|
||||
/coverage
|
||||
/build
|
||||
/dist
|
||||
.eslintrc
|
||||
test/files
|
||||
*.min.js
|
||||
|
||||
@@ -353,7 +353,7 @@ ajaxify.widgets = { render: render };
|
||||
}
|
||||
if (typeof script === 'string') {
|
||||
return async function (next) {
|
||||
const module = await app.importScript(script);
|
||||
const module = await app.require(script);
|
||||
// Hint: useful if you want to override a loaded library (e.g. replace core client-side logic),
|
||||
// or call a method other than .init()
|
||||
hooks.fire('static:script.init', { tpl_url, name: script, module }).then(() => {
|
||||
|
||||
@@ -47,22 +47,6 @@ app.flags = {};
|
||||
}
|
||||
};
|
||||
|
||||
app.importScript = async function (scriptName) {
|
||||
let pageScript;
|
||||
try {
|
||||
if (scriptName.startsWith('admin')) {
|
||||
pageScript = await import(/* webpackChunkName: "admin/[request]" */ 'admin/' + scriptName.replace(/^admin\//, ''));
|
||||
} else if (scriptName.startsWith('forum')) {
|
||||
pageScript = await import(/* webpackChunkName: "forum/[request]" */ 'forum/' + scriptName.replace(/^forum\//, ''));
|
||||
} else {
|
||||
pageScript = await import(/* webpackChunkName: "modules/[request]" */ 'modules/' + scriptName);
|
||||
}
|
||||
} catch (err) {
|
||||
console.warn('error loading script' + err.stack);
|
||||
}
|
||||
return pageScript && pageScript.default;
|
||||
}
|
||||
|
||||
app.handleEarlyClicks = function () {
|
||||
/**
|
||||
* Occasionally, a button or anchor (not meant to be ajaxified) is clicked before
|
||||
@@ -148,6 +132,30 @@ app.flags = {};
|
||||
});
|
||||
};
|
||||
|
||||
app.require = async function (modules) {
|
||||
const single = !Array.isArray(modules);
|
||||
if (single) {
|
||||
modules = [modules];
|
||||
}
|
||||
async function requireModule(moduleName) {
|
||||
let _module;
|
||||
try {
|
||||
if (moduleName.startsWith('admin')) {
|
||||
_module = await import(/* webpackChunkName: "admin/[request]" */ 'admin/' + moduleName.replace(/^admin\//, ''));
|
||||
} else if (moduleName.startsWith('forum')) {
|
||||
_module = await import(/* webpackChunkName: "forum/[request]" */ 'forum/' + moduleName.replace(/^forum\//, ''));
|
||||
} else {
|
||||
_module = await import(/* webpackChunkName: "modules/[request]" */ 'modules/' + moduleName);
|
||||
}
|
||||
} catch (err) {
|
||||
console.warn(`error loading ${moduleName}\n${err.stack}`);
|
||||
}
|
||||
return _module && _module.default;
|
||||
}
|
||||
const result = await Promise.all(modules.map(requireModule));
|
||||
return single ? result.pop() : result;
|
||||
}
|
||||
|
||||
app.logout = function (redirect) {
|
||||
console.warn('[deprecated] app.logout is deprecated, please use logout module directly');
|
||||
require(['logout'], function (logout) {
|
||||
|
||||
@@ -17,7 +17,7 @@ define('taskbar', ['benchpress', 'translator', 'hooks'], function (Benchpress, t
|
||||
const moduleName = $btn.attr('data-module');
|
||||
const uuid = $btn.attr('data-uuid');
|
||||
|
||||
const module = await app.importScript(moduleName);
|
||||
const module = await app.require(moduleName);
|
||||
if (!$btn.hasClass('active')) {
|
||||
minimizeAll();
|
||||
module.load(uuid);
|
||||
@@ -48,7 +48,7 @@ define('taskbar', ['benchpress', 'translator', 'hooks'], function (Benchpress, t
|
||||
}
|
||||
|
||||
if (btnEl.length) {
|
||||
const module = await app.importScript(moduleName);
|
||||
const module = await app.require(moduleName);
|
||||
if (module && typeof module[fnName] === 'function') {
|
||||
module[fnName](uuid);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user