...
|
...
|
@@ -2,7 +2,10 @@ const _ = require('lodash'); |
|
|
const config = global.yoho.config;
|
|
|
|
|
|
module.exports = (app) => {
|
|
|
let manifest;
|
|
|
let manifest,
|
|
|
manifestQcdn;
|
|
|
let assetUrl = config.assetUrl,
|
|
|
assetUrlQcdn = assetUrl.replace(/\/\/cdn.yoho.cn/gi, '//qcdn.yoho.cn');
|
|
|
|
|
|
if (!app.locals.devEnv) {
|
|
|
let manifestPath = '../../manifest.json';
|
...
|
...
|
@@ -14,8 +17,20 @@ module.exports = (app) => { |
|
|
manifest = require(manifestPath);
|
|
|
}
|
|
|
|
|
|
function getStatic(path, def) {
|
|
|
return _.get(manifest, path, `${config.assetUrl}${def}`);
|
|
|
if (manifest) {
|
|
|
try {
|
|
|
let strManifest = JSON.stringify(manifest);
|
|
|
|
|
|
strManifest = strManifest.replace(/\/\/cdn.yoho.cn/gi, '//qcdn.yoho.cn');
|
|
|
|
|
|
manifestQcdn = JSON.parse(strManifest);
|
|
|
} catch(e) { // eslint-disable-line
|
|
|
manifestQcdn = manifest;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
function getStatic(path, def, qcdn) {
|
|
|
return _.get(qcdn ? manifestQcdn : manifest, path, `${config.assetUrl}${def}`);
|
|
|
}
|
|
|
|
|
|
function getPreloads(list, type, cross) {
|
...
|
...
|
@@ -31,30 +46,37 @@ module.exports = (app) => { |
|
|
return (req, res, next) => {
|
|
|
res.on('beforeRender', (params) => {
|
|
|
if (params) {
|
|
|
const qcdn = _.get(req.app.locals, 'wap.qcloud_cdn');
|
|
|
const {data} = params;
|
|
|
const {module: moduleName, page, localCss, isFeature, vue} = Object.assign({}, res.locals, data);
|
|
|
|
|
|
const getStaticWithCdn = (path, def) => {
|
|
|
return getStatic(path, def, qcdn);
|
|
|
};
|
|
|
|
|
|
if (moduleName && page) {
|
|
|
const statics = {
|
|
|
name: `${moduleName}.${page}`,
|
|
|
styles: [],
|
|
|
javascripts: [
|
|
|
getStatic('common.vendors.js', 'js/vendors.js'),
|
|
|
getStatic('common.main.js', 'js/main.js'),
|
|
|
getStaticWithCdn('common.vendors.js', 'js/vendors.js'),
|
|
|
getStaticWithCdn('common.main.js', 'js/main.js'),
|
|
|
]
|
|
|
};
|
|
|
|
|
|
if (isFeature || localCss || vue) {
|
|
|
|
|
|
if (!isFeature) {
|
|
|
statics.styles.push(getStatic('common.main.css', 'css/main.css'));
|
|
|
statics.styles.push(getStaticWithCdn('common.main.css', 'css/main.css'));
|
|
|
}
|
|
|
statics.styles.push(
|
|
|
getStatic(`pages.${moduleName}.${page}.css`, `css/page.${moduleName}.${page}.css`));
|
|
|
getStaticWithCdn(`pages.${moduleName}.${page}.css`, `css/page.${moduleName}.${page}.css`));
|
|
|
} else {
|
|
|
statics.styles.push(getStatic('common.index.css', 'css/index.css'));
|
|
|
statics.styles.push(getStaticWithCdn('common.index.css', 'css/index.css'));
|
|
|
}
|
|
|
|
|
|
res.locals.statics = statics;
|
|
|
res.locals.staticAssetUrl = qcdn ? assetUrlQcdn : assetUrl;
|
|
|
res.locals.preloads = _.concat(getPreloads(statics.styles, 'style'),
|
|
|
getPreloads(statics.javascripts, 'script', true));
|
|
|
}
|
...
|
...
|
|