Authored by biao

optimise code

/**
* 异常处理中间件
* @author: bikai<bikai@yoho.cn>
* @date: 2016/4/25
*/
'use strict';
const headerModel = require('../models/header');
const logger = global.yoho.logger;
... ... @@ -18,7 +25,7 @@ exports.notFound = () => {
return res.display('error/404', {
module: 'common',
page: 'error',
title: '页面不存在 | Yoho!Buy有货 | 潮流购物逛不停'
title: '页面不存在 | Yoho!BLK | 潮流购物逛不停'
});
};
... ... @@ -33,6 +40,8 @@ exports.serverError = () => {
logger.error(`error at path: ${req.url}`);
logger.error(err);
if (!res.headersSent) {
let renderErrPage;
if (req.xhr) {
return res.status(500).json({
code: 500,
... ... @@ -40,7 +49,7 @@ exports.serverError = () => {
});
}
const renderErrPage = (result) => {
renderErrPage = (result) => {
res.display('error/500', {
module: 'common',
page: 'error',
... ...
/**
* 手机访问检测
* 手机访问检测
* @author:
* @date:
*/
'use strict';
module.exports = () => {
return (req, res, next) => {
let isMobile = /(nokia|iphone|android|ipad|motorola|^mot\-|softbank|foma|docomo|kddi|up\.browser|up\.link|htc|dopod|blazer|netfront|helio|hosin|huawei|novarra|CoolPad|webos|techfaith|palmsource|blackberry|alcatel|amoi|ktouch|nexian|samsung|^sam\-|s[cg]h|^lge|ericsson|philips|sagem|wellcom|bunjalloo|maui|symbian|smartphone|midp|wap|phone|windows ce|iemobile|^spice|^bird|^zte\-|longcos|pantech|gionee|^sie\-|portalmmm|jig\s browser|hiptop|^ucweb|^benq|haier|^lct|opera\s*mobi|opera\*mini|320x320|240x320|176x220)/i.test(req.get('user-agent')); // eslint-disable-line
... ...
'use strict';
// 页面seo相关属性的配置文件
const seoMap = require('./seoConfig');
const seoMap = require('./seo-config');
/**
* 设置seo相关的数据,包括title, keywords, description
... ...
/**
* seo设置
* @author: 赵彪<bill.zhao@yoho.cn>
* @date: 2016/07/26
*/
'use strict';
const seoMap = {
/* eslint-disable */
'/': {
title: 'YOHO!BLK',
keywords: 'Yoho! 有货官网,潮流志,潮流男装,潮牌,美国潮牌,日本潮牌,香港潮牌,潮牌店,新品首发,欧美潮流,全球购,代购,时尚,流行,特卖,B2C,正品,购物网站,网上购物,货到付款',
description: 'YOHO!BLK,年轻人潮流购物中心,中国最大的潮流商品购物网站。100%品牌正品保证,支持货到付款。作为YOHO!旗下的购物平台,汇集了全球潮流时尚商品和中国最流行的商品,也是国内最大的原创文化商品平台,也是香港,台湾地区流行商品的集中地。同时包含日本、韩国等众多国外潮流品牌,带给您全新潮流购物体验。'
},
'/women': {
title: 'YOHO!BLK',
keywords: '女生服饰,时尚潮流女装,日韩女装,女装正品购物网站,女装全球购',
description: 'YOHO!BLK 有货官网女生频道汇集了全球女装潮流时尚,提供时尚潮流女装,日版女装,韩版女装,潮牌女装正品全球购。YOHO!BLK有货购物100%正品保证,支持货到付款。'
},
'/lifestyle': {
title: 'YOHO!BLK',
keywords: '创意生活,创意生活馆,潮流家居,潮流创意家居,家居生活用品,YOHO!有货',
description: 'YOHO!BLK官网创意生活频道汇集了创意生活馆,潮流创意家居,家居生活用品等正品网购,给您的生活带来更多创意。YOHO!BLK有货购物100%正品保证,支持货到付款。'
}
/* eslint-enable */
};
module.exports = seoMap;
... ...
const seoMap = {
/* eslint-disable */
'/': {
title: 'YOHO!有货 | 年轻人潮流购物中心,中国潮流购物风向标,官方授权正品保证',
keywords: 'Yoho! 有货官网,潮流志,潮流男装,潮牌,美国潮牌,日本潮牌,香港潮牌,潮牌店,新品首发,欧美潮流,全球购,代购,时尚,流行,特卖,B2C,正品,购物网站,网上购物,货到付款',
description: 'YOHO! 有货,年轻人潮流购物中心,中国最大的潮流商品购物网站。100%品牌正品保证,支持货到付款。作为YOHO!旗下的购物平台,汇集了全球潮流时尚商品和中国最流行的商品,也是国内最大的原创文化商品平台,也是香港,台湾地区流行商品的集中地。同时包含日本、韩国等众多国外潮流品牌,带给您全新潮流购物体验。'
},
'/woman': {
title: '女生|时尚潮流女装,日韩女装,潮牌女装全球购|YOHO!BUY有货 100%正品保证',
keywords: '女生服饰,时尚潮流女装,日韩女装,女装正品购物网站,女装全球购',
description: 'YOHO!BUY有货官网女生频道汇集了全球女装潮流时尚,提供时尚潮流女装,日版女装,韩版女装,潮牌女装正品全球购。YOHO!BUY有货购物100%正品保证,支持货到付款。'
},
'/kids': {
title: '潮童|男童装,女童装,韩版童装,儿童服装服饰|YOHO!BUY有货 100%正品保证',
keywords: '潮童,男童装,女童装,韩版童装,儿童服装服饰',
description: 'YOHO!BUY有货官网潮童频道汇集了全球潮童潮流时尚,提供新款男童装,女童装,韩版童装,儿童服装服饰正品全球购。YOHO!BUY有货购物100%正品保证,支持货到付款。'
},
'/lifestyle': {
title: '创意生活|创意生活馆,潮流创意家居,家居生活用品|YOHO!BUY有货 100%正品保证',
keywords: '创意生活,创意生活馆,潮流家居,潮流创意家居,家居生活用品,YOHO!有货',
description: 'YOHO!BUY有货官网创意生活频道汇集了创意生活馆,潮流创意家居,家居生活用品等正品网购,给您的生活带来更多创意。YOHO!BUY有货购物100%正品保证,支持货到付款。'
}
/* eslint-enable */
};
module.exports = seoMap;
... ... @@ -8,33 +8,45 @@
const _ = require('lodash');
const // domain = '.static.yhbimg.com',
defaultImage = '/2015/08/25/02/01dd632a6e07bfef457ce4beda21dd6413.png',
qiniuDomain = 'yhfair.qiniudn.com',
domainList = {
'01': ['img10.static.yhbimg.com', 'img11.static.yhbimg.com'],
'02': ['img12.static.yhbimg.com', 'img13.static.yhbimg.com'],
'yhb-head': 'head.static.yhbimg.com'
};
const defaultImage = '/2015/08/25/02/01dd632a6e07bfef457ce4beda21dd6413.png';
const qiniuDomain = 'yhfair.qiniudn.com';
const domainList = {
'01': ['img10.static.yhbimg.com', 'img11.static.yhbimg.com'],
'02': ['img12.static.yhbimg.com', 'img13.static.yhbimg.com'],
'yhb-head': 'head.static.yhbimg.com'
};
const regexp = /(?:\{)([a-zA-z][^\s\}]+)(?:\})/g;
/**
* 替换数据
*/
const myReplace = (tem, data) => {
return tem.replace(regexp, function(fullMatch, capture) {
return tem.replace(regexp, (fullMatch, capture) => {
if (data[capture]) {
return data[capture];
} else {
return fullMatch;
}
});
};
/**
* 获取url
* @param { string } domain 主机
* @param { string } key 路径
* @return { string } url
*/
const makeBaseUrl = (domain, key) =>{
encodeURIComponent(key).replace('%2F', '/');
return `http://${domain}/${key}`;
};
/**
* 设置url路径中变量的值
* @param { string } url
* @return { string } 处理后的url
*/
const makeTemplateRequest = url => {
let ops = ['{mode}', 'w/{width}', 'h/{height}'];
... ... @@ -45,7 +57,16 @@ const makeTemplateRequest = url => {
return url + '?imageView/' + ops.join('/');
};
/**
* 获取图片url模板
* @param { string } fileName 文件名
* @param { string } mode 模式
* @param { string } domain 主机名
* @return { string } 处理后的url
*/
const getImgTemplateUrl = (fileName, mode, domain) =>{
let baseUrl;
// 默认值
if (!mode) {
mode = 1;
... ... @@ -58,11 +79,17 @@ const getImgTemplateUrl = (fileName, mode, domain) =>{
domain = qiniuDomain;
}
let baseUrl = makeBaseUrl(domain, fileName);
baseUrl = makeBaseUrl(domain, fileName);
return makeTemplateRequest(baseUrl);
};
/**
* 获取图片url中的主机名
* @param { Object } bucket 对象
* @param { string } fileName 文件名
* @return { string } 主机名
*/
const getDomain = (bucket, fileName) => {
let domain = '';
... ... @@ -82,6 +109,13 @@ const getDomain = (bucket, fileName) => {
return domain;
};
/**
* 获取图片url模板
* @param { string } fileName 文件名
* @param { Object } bucket 对象
* @param { string } mode 模式
* @return { string } url模板
*/
const url = (fileName, bucket, mode) =>{
// 默认值
if (!mode) {
... ... @@ -96,6 +130,13 @@ const url = (fileName, bucket, mode) =>{
return getImgTemplateUrl(bucket + fileName, mode, domain);
};
/**
* url的结构设置
* @param { string } fileName 文件名
* @param { object } bucket 对象
* @param { string } mode 模式
* @return { string } url
*/
const template = (fileName, bucket, mode) => {
// 默认值
if (!mode) {
... ... @@ -109,7 +150,16 @@ const template = (fileName, bucket, mode) => {
};
exports.getImageUrl = (fileName, width, height, mode, bucket) => {
/**
* 获取图片url
* @param { string } fileName 文件名
* @param { number } width 图片宽度
* @param { number } height 图片高度
* @param { string } mode 模式
* @param { object } bucket 对象
* @return { string } url
*/
const getImageUrl = (fileName, width, height, mode, bucket) => {
// 默认值
if (!mode) {
mode = 2;
... ... @@ -126,3 +176,7 @@ exports.getImageUrl = (fileName, width, height, mode, bucket) => {
}
return myReplace(fileName, {width: width, height: height, mode: mode});
};
module.exports = {
getImageUrl
}
... ...
'use strict';
const _ = require('lodash');
module.exports = seoData => {
const defaultSeoData = {
/* eslint-disable */
title: 'YOHO!有货 | 年轻人潮流购物中心,中国潮流购物风向标,官方授权正品保证',
keywords: 'Yoho! 有货官网,潮流志,潮流男装,潮牌,美国潮牌,日本潮牌,香港潮牌,潮牌店,新品首发,欧美潮流,全球购,代购,时尚,流行,特卖,B2C,正品,购物网站,网上购物,货到付款',
description: 'YOHO! 有货,年轻人潮流购物中心,中国最大的潮流商品购物网站。100%品牌正品保证,支持货到付款。作为YOHO!旗下的购物平台,汇集了全球潮流时尚商品和中国最流行的商品,也是国内最大的原创文化商品平台,也是香港,台湾地区流行商品的集中地。同时包含日本、韩国等众多国外潮流品牌,带给您全新潮流购物体验。'
/* eslint-enable */
};
_.merge(defaultSeoData, seoData);
return (req, res, next) => {
if (!req.xhr) {
res.locals.title = seoData.title;
res.locals.keywords = seoData.keywords;
res.locals.description = seoData.description;
}
next();
};
};