Authored by 沈志敏

merge master to bigdata_burying

Showing 70 changed files with 372 additions and 371 deletions
... ... @@ -24,7 +24,8 @@ const favicon = require('serve-favicon');
const uuid = require('uuid');
const pkg = require('./package.json');
const session = require('cookie-session');
const session = require('client-sessions');
const _ = require('lodash');
const app = express();
... ... @@ -58,7 +59,7 @@ app.use(global.yoho.hbs({
layoutsDir: path.join(__dirname, 'doraemon/views'),
partialsDir: path.join(__dirname, 'doraemon/views/partial'),
views: path.join(__dirname, 'doraemon/views'),
helpers: global.yoho.helpers
helpers: _.assign(global.yoho.helpers, require('./utils/helpers'))
}));
app.use(global.yoho.middleware());
... ... @@ -73,14 +74,19 @@ app.use(cookieParser());
app.use(compression());
app.use(session({
name: 'yohobuy_session_cookie',
secret: '82dd7e724f2c6870472c89dfa43cf48d'
requestKey: 'session',
cookieName: 'yohoblk-session',
secret: '82dd7e724f2c6870472c89dfa43cf48d',
domain: config.cookieDomain
}));
app.use((req, res, next) => {
req.user = {}; // 全局的用户数据
req.yoho = {}; // req和res绑定yoho对象,用于传递全局数据, 如req.yoho.channel等
req.app.locals.wap = app.locals.wap; // zookeper对象赋值
if (!req.session) {
req.session = {};
}
if (!req.session.id) {
req.session.id = uuid.v4();
}
... ... @@ -99,6 +105,7 @@ try {
const errorHanlder = require('./doraemon/middleware/error-handler');
const setPageInfo = require('./doraemon/middleware/set-pageinfo');
const devtools = require('./doraemon/middleware/devtools');
const layoutTools = require('./doraemon/middleware/layout-tools');
const seo = require('./doraemon/middleware/seo');
const pageCache = require('./doraemon/middleware/page-cache');
... ... @@ -114,6 +121,8 @@ try {
app.use(devtools());
}
app.use(layoutTools());
app.use(pageCache());
require('./dispatch')(app);
app.all('*', errorHanlder.notFound()); // 404
... ...
... ... @@ -52,7 +52,9 @@ let _channelPage = (req, res, data) => {
// }
// }].concat(result.content);
// console.log(result.content[9]);
res.render('channel', Object.assign({}, _renderData, data, result));
res.render('channel', Object.assign({}, _renderData, data, result, {
localCss: true
}));
});
};
... ...
... ... @@ -194,7 +194,7 @@ const getBrandByChannel = (channel) => {
name: row.brand_name,
isHot: row.is_hot === 'Y' ? true : false,
isNew: row.is_show_new === 'Y' ? true : false,
url: helpers.urlFormat('', null, row.brand_domain)
url: helpers.urlFormat('/product/index/brand?domain=' + row.brand_domain)
});
});
... ... @@ -222,7 +222,7 @@ const getBrandByChannel = (channel) => {
list.push({
brandName: newList[key].brand_name,
url: helpers.urlFormat('', null, newList[key].brand_domain),
url: helpers.urlFormat('/product/index/brand?domain=' + newList[key].brand_domain),
img: helpers.image(newList[key].brand_ico, 186, 115),
});
... ... @@ -249,7 +249,7 @@ const getBrandByChannel = (channel) => {
list.push({
brandName: hotList[key].brand_name,
url: helpers.urlFormat('', null, hotList[key].brand_domain),
url: helpers.urlFormat('/product/index/brand?domain=' + hotList[key].brand_domain),
img: helpers.image(hotList[key].brand_ico, 186, 115),
});
... ... @@ -487,7 +487,7 @@ const branchSearch = (params) => {
name: row.brand_name,
isHot: row.is_hot === 'Y' ? true : false,
isNew: row.is_show_new === 'Y' ? true : false,
url: helpers.urlFormat('', null, row.brand_domain),
url: helpers.urlFormat('/product/index/brand?domain=' + row.brand_domain),
brandId: row.id,
brandDomain: row.brand_domain,
searchName: row.brand_name_en + row.brand_name_cn
... ...
... ... @@ -5,13 +5,13 @@
{{#if @first}}
<li class="swiper-slide buriedpoint" data-bp-id="shop_bannerarea_{{url}}_0">
<a href="{{url}}">
<img src="{{img}}">
<img src="{{image2 img q=60}}">
</a>
</li>
{{^}}
<li class="swiper-slide buriedpoint" data-bp-id="shop_bannerarea_two_0">
<a href="{{url}}">
<img class="swiper-lazy" data-src="{{img}}">
<img class="swiper-lazy" data-src="{{image2 img q=60}}">
</a>
<div class="swiper-lazy-preloader"></div>
</li>
... ...
... ... @@ -5,7 +5,7 @@
{{# list}}
<li class="swiper-slide">
<a href="{{url}}">
<img src="{{img}}" alt="">
<img src="{{image2 img q=60}}" alt="">
<span class="brands-title">{{textCn}}</span>
</a>
</li>
... ...
... ... @@ -69,7 +69,8 @@ const editor = (req, res, next) => {
infos: build,
isApp: isApp,
authorInfo: authorData.data
}
},
localCss: true
}, parameter));
} else {
return next();
... ... @@ -172,7 +173,9 @@ const index = (req, res, next) => {
res.set('Cache-Control', 'no-cache');
}
}
res.render('guang', Object.assign(responseData, result));
res.render('guang', Object.assign(responseData, result, {
localCss: true
}));
}).catch(next);
};
... ...
... ... @@ -357,7 +357,8 @@ const index = (req, res, next) => {
page: 'info-index',
title: '逛',
gender: gender,
wechatShare: true
wechatShare: true,
localCss: true
}, data, parameter));
});
} else {
... ...
... ... @@ -19,11 +19,7 @@
{{# ../swiper}}
<div class="swiper-slide">
<a href="{{url}}">
{{#if @first}}
<img src="{{img}}">
{{^}}
<img class="swiper-lazy" data-src="{{img}}">
{{/if}}
<img class="swiper-lazy" data-src="{{image2 img width=200 height=100 q=60}}">
</a>
<div class="swiper-lazy-preloader"></div>
</div>
... ...
... ... @@ -36,11 +36,7 @@
</a>
{{/if}}
<a href="{{url}}">
{{#if ../@first}}
<img src="{{img}}" alt="{{alt}}">
{{^}}
<img class="lazy" data-original="{{img}}" alt="{{alt}}">
{{/if}}
</a>
</div>
... ...
... ... @@ -182,7 +182,7 @@ const local = {
})(req, res, next);
},
logout: (req, res) => {
req.session = null;
req.session.reset();
res.clearCookie('_UID', {
domain: 'yohobuy.com'
... ...
... ... @@ -215,14 +215,21 @@ const category = (req, res, next) => {
// 获取第一页数据做服务端渲染
let initialData = _.assign({
gender: params.gender,
sort: parseInt(params.sort),
sort: parseInt(params.sort) || '',
type: 'default',
order: '0',
page: 1,
limit: 6,
limit: 12,
}, params);
searchModel.getSearchData(initialData).then((firstScreenGoodsList) => {
if (firstScreenGoodsList && firstScreenGoodsList.list) {
_.forEach(firstScreenGoodsList.list, function(item) {
if (item && item.default_images) {
item.default_images = item.default_images.replace(/quality\/80/g, 'quality/70');
}
});
}
res.render('search/goods-list', {
_noLazy: true, // 首屏不使用lazyload
module: 'product',
... ...
... ... @@ -39,7 +39,7 @@ const list = (req, res, next) => {
type: 'default',
order: '0',
page: 1,
limit: 6
limit: 12
}, params);
if (query) {
... ... @@ -179,6 +179,7 @@ const search = (req, res, next) => {
let params = Object.assign({}, req.query);
params.isApp = req.yoho.isApp;
params.limit = 24;
searchModel.getSearchData(params).then((result) => {
if (result && result.list && parseInt(params.page) === 1 && parseInt(params.start) > 0) {
... ... @@ -190,7 +191,8 @@ const search = (req, res, next) => {
res.render('search/page', {
layout: false,
new: result.list,
total: result.total
total: result.total,
_noLazy: params.noLazy || false
});
} else {
res.json(result);
... ...
... ... @@ -120,7 +120,7 @@
{{# enterStore}}
<div id="enter-store" class="enter-store page-block tap-hightlight">
<a class="store-logo" href="{{url}}" style="">
<img class="lazy" data-original="{{image img 47 47}}" alt="{{storeName}}">
<img class="lazy" data-original="{{image2 img w=47 h=47 q=60}}" alt="{{storeName}}">
</a>
<a class="store-name" href="{{url}}">{{storeName}}</a>
<a class="store-link" href="{{url}}">进入店铺<span class="iconfont">&#xe604;</span></a>
... ...
... ... @@ -53,7 +53,7 @@
<span class="en-title">{{enTitle}}</span>
</h1>
<div class="detail" style="width:100%">
<img class="lazy" data-original="{{img}}" alt="">
<img class="lazy" data-original="{{image2 img q=60}}" alt="">
</div>
</div>
{{/measurementMethod}}
... ... @@ -110,7 +110,7 @@
{{desc}}
</p>-->
<div class="material-image">
<img src="{{img}}" alt="材质图">
<img src="{{image2 img q=60}}" alt="材质图">
</div>
<div class="material-desc">
{{desc}}
... ... @@ -126,7 +126,7 @@
<div class="detail table clearfix">
{{#list}}
<div class="tip">
<img src="{{img}}" alt="">
<img src="{{image2 img q=60}}" alt="">
<span class="caption">{{caption}}</span>
</div>
{{/list}}
... ... @@ -143,7 +143,7 @@
<div class="pro-detail">
<p>{{{desc}}}</p>
{{#list}}
<img class="lazy" data-original="{{img}}" alt="">
<img class="lazy" data-original="{{image2 img q=60}}" alt="">
{{/list}}
</div>
</div>
... ...
... ... @@ -15,7 +15,7 @@
{{# brandWay}}
<div class="brand-way">
<a href={{url}}>
<img class="brand-thumb" src={{thumb}}>
<img class="brand-thumb" src={{image2 thumb q=60}}>
<span class="brand-name">{{name}}</span>
<span class="entry">
进入店铺
... ... @@ -27,7 +27,7 @@
<!-- 品牌页面 -->
{{# brandHome}}
<div id="brand-header" class="brand-header" data-id={{id}}>
<img src={{banner}}>
<img src={{image2 banner q=60}}>
<a class="btn-intro" href="javascript:void(0);">
品牌介绍
</a>
... ...
... ... @@ -3,7 +3,7 @@
<!-- 基础店铺页面 -->
{{# baseShopHome}}
<div id="brand-header" class="brand-header" data-id={{id}} data-isbaseshop="{{isBaseShop}}">
<img src={{banner}}>
<img src={{image2 banner q=60}}>
<a class="btn-intro" href="javascript:void(0);">
店铺介绍
</a>
... ...
... ... @@ -31,9 +31,9 @@
<!-- /tar modifield 160826 -->
<div class="branner-top">
<img class="shop-back-img" src="{{image branerImg 640 200 1}}">
<img class="shop-back-img" src="{{image2 branerImg w=640 h=200 mode=1 q=60}}">
{{#if logoImg}}
<img class="logo" src="{{image logoImg 500 500}}">
<img class="logo" src="{{image2 logoImg w=500 h=500 q=60}}">
{{/if}}
<p class="store-name">{{storeName}}</p>
<div class="collect">
... ... @@ -66,7 +66,7 @@
<li class="swiper-slide brand-img buriedpoint"
data-bp-id="shop_brand_{{img}}_0">
<a href="{{url}}">
<img src="{{img}}">
<img src="{{image2 img q=60}}">
</a>
<p>{{brandName}}</p>
</li>
... ... @@ -87,11 +87,11 @@
<li class="buriedpoint" data-bp-id="shop_spring_{{url}}_0">
{{#if url}}
<a href="{{url}}">
<img src="{{springType}}">
<img src="{{image2 springType q=60}}">
</a>
{{^}}
<a href="javascript:;">
<img src="{{springType}}">
<img src="{{image2 springType q=60}}">
</a>
{{/if}}
</li>
... ...
{{# shopIndex}}
<div class="shop-index yoho-page scroll-wrapper" id="wrapper">
<div id="scroller">
<div id="nav-top">
{{> header}}
<!-- tar modifield 160826 -->
<input type="hidden" name="app_version" value="{{appVersion}}">
<input type="hidden" name="shop_id" value="{{shopId}}">
<input type="hidden" name="brand" value="{{brand}}">
<input type="hidden" name="favId" value="{{favId}}">
<input type="hidden" name="coverChannel" value="{{coverChannel}}">
<input type="hidden" name="uid" value="{{uid}}">
{{#unless appVersion}}
<div class="search-area">
<div id="search-input" class="search-input">
<form id="search-form" action={{url}} method="get">
<i class="search-icon iconfont">&#xe60f;</i>
<input type="text" placeholder="搜索店铺内潮品" name="query" class="buriedpoint">
<input type="hidden" name="shop_id" value="{{shopId}}">
<input type="hidden" name="coverChannel" value="{{coverChannel}}">
<i class="clear-input iconfont hide">&#xe626;</i>
<button id="search" class="search buriedpoint" type="submit"
data-bp-id="shop_search_btn_0">搜索
</button>
</form>
</div>
</div>
{{/unless}}
<!-- /tar modifield 160826 -->
<div class="branner-top">
<img class="shop-back-img" src="{{image branerImg 640 200 1}}">
{{#if logoImg}}
<img class="logo" src="{{image logoImg 500 500}}">
{{/if}}
<p class="store-name">{{storeName}}</p>
<div class="collect">
<div class="not-collect buriedpoint" id="collect" data-bp-id="shop_branner_collect_1"></div>
</div>
</div>
</div>
<ul id="nav" class="nav">
<li class="active color buriedpoint" tab="home-page" data-bp-id="shop_nav_index_1">首页</li>
<li tab="new-arrival" data-bp-id="shop_nav_new_1" class="buriedpoint">上新</li>
<li tab="popularity" data-bp-id="shop_nav_populary_1" class="buriedpoint">人气</li>
<li data-bp-id="shop_nav_all_1" class="all-goods buriedpoint">
<a href="{{allGoods}}" target="_blank">全部商品</a>
</li>
</ul>
<div id="home-page" class="main">
<div id="nav-main" class="nav-main">
<!-- 优惠卷 -->
{{#if shopCoupons}}
{{> shop/shop-coupon}}
{{/if}}
<!-- 大导航 -->
{{#if brandList}}
<div class="multi-brands first">
<p>品牌一览</p>
<div class="multi-browse">
<ul class="swiper-wrapper">
{{#each brandList.list}}
<li class="swiper-slide brand-img buriedpoint"
data-bp-id="shop_brand_{{img}}_0">
<a href="{{url}}">
<img src="{{img}}">
</a>
<p>{{brandName}}</p>
</li>
{{/each}}
</ul>
</div>
</div>
{{/if}}
<div class="banner-area first">
{{# bannerTop}}
{{> resources/banner-top}}
{{/ bannerTop}}
</div>
<ul class="spring">
{{#each spring}}
<li class="buriedpoint" data-bp-id="shop_spring_{{url}}_0">
{{#if url}}
<a href="{{url}}">
<img src="{{springType}}">
</a>
{{^}}
<a href="javascript:;">
<img src="{{springType}}">
</a>
{{/if}}
</li>
{{/each}}
</ul>
{{! 热门品类}}
<div class="first">
{{# hotCategory}}
{{> shop/hot-category}}
{{/ hotCategory}}
</div>
<div class="popularity-title">
人气单品
<a class="more buriedpoint" href="{{more_url}}" data-bp-id="shop_popularity_{{more_url}}">
&#xe618;</a>
</div>
<div class="product-warp">
<div class="goods-container clearfix">
{{# hotList}}
{{> common/goods}}
{{/ hotList}}
</div>
</div>
</div>
<div class="discount-area first" id="navlist2">
<ul id="list-nav" class="home-sub-nav list-nav pos-list clearfix">
<li data-bp-id="shop_listnav_new_1" class="new active buriedpoint">
<a href="javascript:void(0);">
<span class="spanTest">最新</span>
<span class="iconfont cur">&#xe616;</span>
</a>
</li>
<li class="price buriedpoint" data-bp-id="shop_listnav_price_1">
<a href="javascript:void(0);">
<span class="spanTest">价格</span>
<span class="icon">
<i class="iconfont up cur">&#xe615;</i>
<i class="iconfont down">&#xe616;</i>
</span>
</a>
</li>
<li class="discount buriedpoint" data-bp-id="shop_listnav_discount_1">
<a href="javascript:void(0);">
<span class="spanTest">折扣</span>
<span class="icon">
<i class="iconfont up cur">&#xe615;</i>
<i class="iconfont down">&#xe616;</i>
</span>
</a>
</li>
<li class="filter buriedpoint" data-bp-id="shop_listnav_filter_1">
<a href="javascript:void(0);">
<span class="spanTest">筛选</span>
<span class="iconfont cur">&#xe613;</span>
</a>
</li>
</ul>
</div>
<div class="discount-area first">
<div id="goods-container" class="goods-container">
<div class="new-goods container clearfix">
{{# goods}}
{{> common/goods}}
{{/ goods}}
</div>
<div class="price-goods container hide clearfix"></div>
<div class="discount-goods container hide clearfix"></div>
</div>
</div>
</div>
<div id="new-arrival" class="new-arrival main hide"></div>
<div id="popularity" class="popularity main hide"></div>
</div>
{{#unless appVersion}}
{{> shop/shop-footer}}
{{/unless}}
<ul id="pos-nav" class="nav hide">
<li class="active color buriedpoint" tab="home-page" data-bp-id="shop_posnav_index_1">首页</li>
<li tab="new-arrival" class="buriedpoint" data-bp-id="shop_posnav_new_1">上新</li>
<li tab="popularity" class="buriedpoint" data-bp-id="shop_posnav_populary_1">人气</li>
<li class="all-goods buriedpoint" data-bp-id="shop_posnav_all_1">
<a href="{{allGoods}}" target="_blank">全部商品</a>
</li>
</ul>
<ul id="pos-list" class="home-sub-nav pos-list hide">
<li class="new active buriedpoint" data-bp-id="shop_poslist_new_1">
<a href="javascript:void(0);">
<span class="spanTest">最新</span>
<span class="iconfont cur">&#xe616;</span>
<b></b>
</a>
</li>
<li class="price buriedpoint" data-bp-id="shop_poslist_price_1">
<a href="javascript:void(0);">
<span class="spanTest">价格</span>
<span class="icon">
<i class="iconfont up cur">&#xe615;</i>
<i class="iconfont down">&#xe616;</i>
</span>
<b></b>
</a>
</li>
<li class="discount buriedpoint" data-bp-id="shop_poslist_discount_1">
<a href="javascript:void(0);">
<span class="spanTest">折扣</span>
<span class="icon">
<i class="iconfont up cur">&#xe615;</i>
<i class="iconfont down">&#xe616;</i>
</span>
<b></b>
</a>
</li>
<li class="filter buriedpoint" data-bp-id="shop_poslist_filter_1">
<a href="javascript:void(0);">
<span class="spanTest">筛选</span>
<span class="iconfont cur">&#xe613;</span>
</a>
</li>
</ul>
</div>
{{> common/filter}}
{{/ shopIndex}}
{{> common/query-param}}
<input type="text" class="shopid" style="display:none" value={{shopId}}>
... ... @@ -6,9 +6,9 @@
<li class="swiper-slide">
<a href="javascript:;">
{{#if @first}}
<img src="{{image img 450 600}}" alt="">
<img src="{{image2 img w=450 h=600 q=60}}" alt="">
{{else}}
<img class="swiper-lazy" data-src="{{image img 450 600}}" alt="">
<img class="swiper-lazy" data-src="{{image2 img w=450 h=600 q=60}}" alt="">
{{/if}}
</a>
</li>
... ... @@ -26,7 +26,7 @@
{{^}}
<div class="banner-top-single">
<a href={{url}}>
<img class="img" src="{{image img 450 600}}">
<img class="img" src="{{image2 img w=450 h=600 q=60}}">
</a>
</div>
{{/if}}
... ...
... ... @@ -4,7 +4,7 @@
{{# banner}}
<a class="category-banner" href="{{url}}">
<img class="lazy" data-original="{{src}}">
<img class="lazy" data-original="{{image2 src q=60}}">
</a>
{{/ banner}}
<ul class="category-list clearfix">
... ... @@ -12,7 +12,7 @@
<li>
<a href="{{url}}">
<div class="img-box">
<img class="lazy" data-original="{{image src 140 140}}" alt="">
<img class="lazy" data-original="{{image2 src w=140 h=140 q=60}}" alt="">
</div>
</a>
<div class="img-cover">{{name}}</div>
... ...
// 在这个文件中配置 DNS 预读域名
module.exports = {
hosts: [
'//cdn.yoho.cn',
'//static.yohobuy.com',
'//img10.static.yhbimg.com',
'//img11.static.yhbimg.com',
'//img12.static.yhbimg.com',
'//img13.static.yhbimg.com',
'//analytics.m.yohobuy.com',
'//search.m.yohobuy.com',
'//list.m.yohobuy.com',
'//guang.m.yohobuy.com'
]
};
... ...
... ... @@ -5,8 +5,21 @@
const headerModel = require('../models/header');
const logger = global.yoho.logger;
const forceNoCache = (res) => {
if (res) {
res.set({
'Cache-Control': 'no-cache',
Pragma: 'no-cache',
Expires: (new Date(1900, 0, 1, 0, 0, 0, 0)).toUTCString()
});
}
};
exports.notFound = () => {
return (req, res) => {
forceNoCache(res);
res.status(404);
if (req.xhr) {
... ... @@ -34,6 +47,8 @@ exports.notFound = () => {
*/
exports.serverError = () => {
return (err, req, res, next) => {
forceNoCache(res);
logger.error(`error at path: ${req.url}`);
logger.error(err);
... ...
'use strict';
const dnsPrefetch = require('../../config/dns-prefetch');
module.exports = () => {
return (req, res, next) => {
Object.assign(res.locals, {
dnsPrefetch: dnsPrefetch
});
next();
};
};
... ...
... ... @@ -10,10 +10,9 @@
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
<meta content="telephone=no" name="format-detection" />
<meta content="email=no" name="format-detection" />
<link rel="dns-prefetch" href="//cdn.yoho.cn">
<link rel="dns-prefetch" href="//static.yohobuy.com">
<link rel="dns-prefetch" href="//img12.static.yhbimg.com">
<link rel="dns-prefetch" href="//img13.static.yhbimg.com">
{{#dnsPrefetch.hosts}}
<link rel="dns-prefetch" href="{{this}}">
{{/dnsPrefetch.hosts}}
<script type="text/javascript">
var isWechat = /micromessenger/i.test(navigator.userAgent || '');
... ... @@ -30,37 +29,24 @@
</script>
{{/if}}
{{#if devEnv}}
{{#if localCss}}
<link rel="stylesheet" media="all" href="//{{devHost}}:5001/bundle/common.css">
<link rel="stylesheet" media="all" href="//{{devHost}}:5001/bundle/{{module}}.{{page}}.css">
{{^}}
{{#if shopPage}}
<link rel="stylesheet" media="all" href="//{{devHost}}:5001/bundle/shop.css">
{{^}}
<link rel="stylesheet" media="all" href="//{{devHost}}:5001/bundle/index.css">
{{/if}}
{{/if}}
{{#if vue}}
{{#ifor localCss vue}}
<link rel="stylesheet" media="all" href="//{{devHost}}:5001/bundle/{{module}}.{{page}}.css">
{{/if}}
{{^}}
{{#if shopPage}}
<link rel="stylesheet" media="all" href="//cdn.yoho.cn/m-yohobuy-node/{{version}}/shop.css">
<link rel="stylesheet" media="all" href="//{{devHost}}:5001/bundle/index.css">
{{/ifor}}
{{^}}
<link rel="stylesheet" media="all" href="//cdn.yoho.cn/m-yohobuy-node/{{version}}/index.css">
{{/if}}
{{#if localCss}}
{{#if localCss }}
<link rel="stylesheet" media="all" href="//cdn.yoho.cn/m-yohobuy-node/{{version}}/common.css">
<link rel="stylesheet" media="all" href="//cdn.yoho.cn/m-yohobuy-node/{{version}}/{{module}}.{{page}}.css">
{{/if}}
{{#if vue}}
{{#ifor localCss vue}}
<link rel="stylesheet" media="all" href="//cdn.yoho.cn/m-yohobuy-node/{{version}}/{{module}}.{{page}}.css">
{{/if}}
{{^}}
<link rel="stylesheet" media="all" href="//cdn.yoho.cn/m-yohobuy-node/{{version}}/index.css">
{{/ifor}}
{{/if}}
<link rel="apple-touch-icon-precomposed" href="http://static.yohobuy.com/m/v1/img/touch/apple-touch-icon-144x144-precomposed-new.png">
<link rel="apple-touch-startup-image" sizes="640x920" href="http://static.yohobuy.com/m/v1/img/startup/startup-retina.png" media="screen and (max-device-width: 480px) and (-webkit-min-device-pixel-ratio: 2)">
... ...
... ... @@ -29,9 +29,9 @@
<div class="good-detail-img">
<a class="good-thumb" href="{{url}}">
{{#if @root._noLazy}}
<img src="{{image default_images 235 314}}"/>
<img src="{{image2 default_images w=235 h=314 q=60}}"/>
{{else}}
<img class="lazy" data-original="{{image default_images 235 314}}"/>
<img class="lazy" data-original="{{image2 default_images w=235 h=314 q=60}}"/>
{{/if}}
</a>
{{# is_soon_sold_out}}
... ...
<div class="banner-bottom">
<a href="{{url}}">
<img class="lazy" data-original="{{img}}" alt="">
<img class="lazy" data-original="{{image2 img q=60}}" alt="">
</a>
</div>
... ...
... ... @@ -5,13 +5,13 @@
{{#if @first}}
<li class="swiper-slide">
<a href="{{url}}">
<img src="{{image src 640 240}}">
<img src="{{image2 src w=640 h=240 q=60}}">
</a>
</li>
{{^}}
<li class="swiper-slide">
<a href="{{url}}">
<img class="swiper-lazy" data-src="{{image src 640 240}}">
<img class="swiper-lazy" data-src="{{image2 src w=640 h=240 q=60}}">
</a>
<div class="swiper-lazy-preloader"></div>
</li>
... ...
... ... @@ -2,7 +2,7 @@
{{#data}}
<div class="banner-list">
<a href="{{url}}">
<img src="{{image src 640 200}}" alt="">
<img src="{{image2 src w=640 h=200 q=60}}" alt="">
</a>
</div>
{{/data}}
... ... @@ -12,7 +12,7 @@
{{#data}}
<li class="swiper-slide">
<a href="{{url}}">
<img src="{{image src 640 200}}" alt="">
<img src="{{image2 src w=640 h=200 q=60}}" alt="">
</a>
</li>
{{/data}}
... ...
... ... @@ -3,7 +3,7 @@
<div class="creative-life">
{{# big_image}}
<a class="banner" href="{{url}}">
<img class="lazy" data-original="{{image src 640 403}}">
<img class="lazy" data-original="{{image2 src w=640 h=403 q=60}}">
</a>
{{/ big_image}}
<ul class="classify-list clearfix">
... ... @@ -11,7 +11,7 @@
<li class="classify">
<a href="{{url}}">
<div class="classify-logo">
<img class="lazy" data-original="{{image src 191 191}}">
<img class="lazy" data-original="{{image2 src w=191 h=191 q=60}}">
</div>
<p class="classify-name">{{title}}</p>
</a>
... ...
... ... @@ -6,7 +6,7 @@
{{#list}}
<li>
<a href="/product/sale/discount/detail?id={{id}}&channel={{@root.channel}}">
<img class="lazy" data-original="{{image cover_url 640 250}}" />
<img class="lazy" data-original="{{image2 cover_url w=640 h=250 q=60}}" />
<p class="discount-cont">
<span class="discount-title">{{title}}</span>
<span class="discount-time {{#if warn_color}}red-color{{/if}}">{{time}}</span>
... ...
{{#data}}
<div style="background-image:url({{image src 640 26}})" class="divide-image"></div>
<div style="background-image:url({{image2 src w=640 h=26 q=60}})" class="divide-image"></div>
{{/data}}
... ...
... ... @@ -2,7 +2,7 @@
<div class="fav-brand-swiper">
<a class="swiper-header" href="{{link}}">
<div class="swiper-logo">
<img src="{{brandImg}}" alt=""/>
<img src="{{image2 brandImg q=60}}" alt=""/>
</div>
<div class="brand-info">
<span class="brand-name">{{brandName}}</span>
... ... @@ -23,7 +23,7 @@
{{# productList}}
<li class="swiper-slide">
<a href="{{link}}">
<img class="swiper-lazy" data-src="{{imgUrl}}" alt=""/>
<img class="swiper-lazy" data-src="{{image2 imgUrl q=60}}" alt=""/>
</a>
<div class="brand-product">
<div class="{{# discount}}price-discount{{/ discount}}">
... ...
... ... @@ -2,7 +2,7 @@
<li data-id="{{fav_id}}" class="{{#if invalidGoods}}invalidGoods{{/if}}">
<a href="{{link}}">
<div class="fav-img-box">
<img src="{{imgUrl}}" alt=""/>
<img src="{{iamge2 imgUrl q=60}}" alt=""/>
</div>
<div class="fav-info-list">
<h2>{{title}}</h2>
... ...
... ... @@ -4,7 +4,7 @@
<li class="brand">
<a href="{{url}}">
<div class="brand-logo">
<img class="lazy" data-original="{{img}}">
<img class="lazy" data-original="{{images img q=60}}">
</div>
<p class="brand-name">{{name}}</p>
</a>
... ...
... ... @@ -4,7 +4,7 @@
{{# banner_image}}
<div class="fresh-swiper">
<a href="{{url}}">
<img class="lazy" data-original="{{image src 640 200}}">
<img class="lazy" data-original="{{image2 src w=640 h=200 q=60}}">
</a>
</div>
{{/ banner_image}}
... ... @@ -14,7 +14,7 @@
<li class="swiper-slide">
<div class="img-box">
<a href="{{url}}">
<img class="swiper-lazy" data-src="{{image default_images 235 314}}" alt="">
<img class="swiper-lazy" data-src="{{image2 default_images w=235 h=314 q=60}}" alt="">
</a>
<div class="swiper-lazy-preloader"></div>
</div>
... ...
... ... @@ -8,7 +8,7 @@
{{# bigList}}
<li class="swiper-slide">
<a href="{{url}}">
<img class="lazy" data-original="{{image src 640 403}}" alt="{{title}}">
<img class="lazy" data-original="{{image2 src w=640 h=403 q=60}}" alt="{{title}}">
</a>
</li>
{{/ bigList}}
... ... @@ -21,7 +21,7 @@
{{^}}
<div class="category-swiper">
<a href="{{url}}">
<img class="lazy" data-original="{{image src 640 403}}" alt="{{title}}">
<img class="lazy" data-original="{{image2 src w=640 h=403 q=60}}" alt="{{title}}">
</a>
</div>
{{/if}}
... ... @@ -33,9 +33,9 @@
<a href="{{url}}">
<div class="img-box">
{{#if @first}}
<img class="lazy" data-original="{{image src 258 383}}" alt="">
<img class="lazy" data-original="{{image2 src w=258 h=383 q=60}}" alt="">
{{^}}
<img class="lazy" data-original="{{image src 191 191}}" alt="">
<img class="lazy" data-original="{{image2 src w=191 h=191 q=60}}" alt="">
{{/if}}
</div>
<p class="category-name">{{title}}</p>
... ...
... ... @@ -6,7 +6,7 @@
<a href="{{url}}">
<div class="brand-logo">
{{!--此处不使用 Lazyload 是由于安卓 UC 10 版本加载不出来--}}
<img src="{{image src 158 174}}">
<img src="{{image2 src w=158 h=174 q=60}}">
</div>
<p class="brand-name">{{name}}</p>
</a>
... ... @@ -15,7 +15,7 @@
<li class="more">
<a class="{{#unless image.src}}default{{/unless}}" href="{{image.url}}">
<img class="lazy" data-original="{{image image.src 320 172}}">
<img class="lazy" data-original="{{image2 image.src w=320 h=172 q=60}}">
</a>
</li>
</ul>
... ...
... ... @@ -6,7 +6,7 @@
{{# list}}
<li class="swiper-slide">
<a href="{{url}}">
<img src="{{image src 140 140}}" alt="">
<img src="{{image2 src w=140 h=140 q=60}}" alt="">
<span class="brands-title">{{name}}</span>
</a>
</li>
... ...
... ... @@ -4,7 +4,7 @@
{{# banner}}
<a class="category-banner" href="{{url}}">
<img class="lazy" data-original="{{src}}">
<img class="lazy" data-original="{{image2 src q=60}}">
</a>
{{/ banner}}
<ul class="category-list clearfix">
... ... @@ -12,7 +12,7 @@
<li>
<a href="{{url}}">
<div class="img-box">
<img class="lazy" data-original="{{image src 140 140}}" alt="">
<img class="lazy" data-original="{{image2 src w=140 h=140 q=60}}" alt="">
</div>
</a>
</li>
... ...
... ... @@ -2,12 +2,12 @@
<div class="hot-single">
{{> common/floor-header-more}}
{{> resources/new-floor-banner}}
<div class="hot-single-goods-list" {{#background}}style="background-image: url({{image src 640 330}})"{{/background}}>
<div class="hot-single-goods-list" {{#background}}style="background-image: url({{image2 src w=640 h=330 q=60}})"{{/background}}>
<ul>
{{#list}}
<li class="hot-single-goods">
<a href="//m.yohobuy.com/product/show_{{product_skn}}">
<img src="{{image default_images 153 206}}" alt="goods" class="goods-pic">
<img src="{{image2 default_images w=153 h=206 q=60}}" alt="goods" class="goods-pic">
<div class="goods-info">
<h3 class="price">&yen; {{sales_price}}</h3>
<p class="view-num">{{view_num}}</p>
... ...
{{#appIconList}}
<div class="icons-wrapper" {{#if back_image}} style="background-image:url({{image back_image 640 360}})" {{/if}}>
<div class="icons-wrapper" {{#if back_image}} style="background-image:url({{image2 back_image w=640 h=360 q=60}})" {{/if}}>
<ul class="icons-list clearfix">
{{#data}}
<li class="icons-item item-{{../number}}"><a href="{{url}}" class="imagebar"><img src="{{image src 98 98}}" alt=""></a><a href="{{url}}" class="linkbar">{{title}}</a></li>
<li class="icons-item item-{{../number}}"><a href="{{url}}" class="imagebar"><img src="{{image2 src w=98 h=98 q=60}}" alt=""></a><a href="{{url}}" class="linkbar">{{title}}</a></li>
{{/data}}
</ul>
</div>
... ...
{
"name": "m-yohobuy-node",
"version": "5.2.11",
"version": "5.2.12",
"private": true,
"description": "A New Yohobuy Project With Express",
"repository": {
... ... @@ -22,6 +22,7 @@
"body-parser": "^1.15.2",
"captchapng": "0.0.1",
"cheerio": "^0.22.0",
"client-sessions": "^0.7.0",
"compression": "^1.6.2",
"connect-multiparty": "^2.0.0",
"cookie-parser": "^1.4.3",
... ... @@ -93,7 +94,7 @@
"yoho-handlebars": "^4.0.5",
"yoho-iscroll": "^5.2.0",
"yoho-jquery": "^2.2.4",
"yoho-jquery-lazyload": "^1.9.8",
"yoho-jquery-lazyload": "^1.9.9",
"yoho-jquery-qrcode": "^0.14.0",
"yoho-mlellipsis": "0.0.3",
"yoho-qs": "^1.0.1",
... ...
... ... @@ -4,7 +4,7 @@
<div class="infos {{#if @root.tickets}} tickets-info {{/if}}">
<div class="basic-info" >
{{#each thumbs}}
<img class="thumb {{#unless @first}}hide{{/unless}}" src="{{img}}">
<img class="thumb {{#unless @first}}hide{{/unless}}" src="{{image2 img q=60}}">
{{/each}}
<div class="text-info">
<p class="name">{{name}}</p>
... ...
... ... @@ -5,13 +5,13 @@
{{#if @first}}
<li class="swiper-slide">
<a href="{{url}}">
<img src="{{image src 640 240}}">
<img src="{{image2 src w=640 h=240 q=60}}">
</a>
</li>
{{^}}
<li class="swiper-slide">
<a href="{{url}}">
<img class="swiper-lazy" data-src="{{image src 640 240}}">
<img class="swiper-lazy" data-src="{{image2 src w=640 h=240 q=60}}">
</a>
<div class="swiper-lazy-preloader"></div>
</li>
... ...
... ... @@ -3,7 +3,7 @@
{{#data}}
<div class="banner-list">
<a href="{{url}}">
<img src="{{image src 640 200}}" alt="">
<img src="{{image2 src w=640 h=200 q=60}}" alt="">
</a>
</div>
{{/data}}
... ... @@ -12,7 +12,7 @@
{{#data}}
<li class="swiper-slide">
<a href="{{url}}">
<img src="{{image src 640 200}}" alt="">
<img src="{{image2 src w=640 h=200 q=60}}" alt="">
</a>
</li>
{{/data}}
... ...
... ... @@ -3,7 +3,7 @@
<div class="creative-life">
{{# big_image}}
<a class="banner" href="{{url}}">
<img class="lazy" data-original="{{image src 640 403}}">
<img class="lazy" data-original="{{image2 src w=640 h=403 q=60}}">
</a>
{{/ big_image}}
<ul class="classify-list clearfix">
... ... @@ -11,7 +11,7 @@
<li class="classify">
<a href="{{url}}">
<div class="classify-logo">
<img class="lazy" data-original="{{image src 191 191}}">
<img class="lazy" data-original="{{image2 src w=191 h=191 q=60}}">
</div>
<p class="classify-name">{{title}}</p>
</a>
... ...
{{#data}}
<div style="background-image:url({{image src 640 30}})" class="divide-image"></div>
<div style="background-image:url({{image2 src w=640 h=30 q=60}})" class="divide-image"></div>
{{/data}}
... ...
... ... @@ -4,7 +4,7 @@
{{# banner_image}}
<div class="fresh-swiper">
<a href="{{url}}">
<img class="lazy" data-original="{{image src 640 200}}">
<img class="lazy" data-original="{{image2 src w=640 h=200 q=60}}">
</a>
</div>
{{/ banner_image}}
... ... @@ -14,7 +14,7 @@
<li class="swiper-slide">
<div class="img-box">
<a href="{{url}}">
<img src="{{image default_images 235 314}}" alt="">
<img src="{{image2 default_images w=235 h=314 q=60}}" alt="">
</a>
<div class="swiper-lazy-preloader"></div>
</div>
... ...
... ... @@ -8,7 +8,7 @@
{{# bigList}}
<li class="swiper-slide">
<a href="{{url}}">
<img class="swiper-lazy" data-src="{{image src 640 403}}" alt="{{title}}">
<img class="swiper-lazy" data-src="{{image2 src w=640 h=403 q=60}}" alt="{{title}}">
</a>
</li>
{{/ bigList}}
... ... @@ -21,7 +21,7 @@
{{^}}
<div class="category-swiper">
<a href="{{url}}">
<img src="{{image src 640 403}}" alt="{{title}}">
<img src="{{image2 src w=640 h=403 q=60}}" alt="{{title}}">
</a>
</div>
{{/if}}
... ... @@ -33,9 +33,9 @@
<a href="{{url}}">
<div class="img-box">
{{#if @first}}
<img class="lazy" data-original="{{image src 258 383}}" alt="">
<img class="lazy" data-original="{{image2 src w=258 h=383 q=60}}" alt="">
{{^}}
<img class="lazy" data-original="{{image src 191 191}}" alt="">
<img class="lazy" data-original="{{image2 src w=191 h=191 q=60}}" alt="">
{{/if}}
</div>
<p class="category-name">{{title}}</p>
... ...
... ... @@ -6,7 +6,7 @@
<a href="{{url}}">
<div class="brand-logo">
{{!--此处不使用 Lazyload 是由于安卓 UC 10 版本加载不出来--}}
<img src="{{image src 158 174}}">
<img src="{{image2 src w=158 h=174 q=60}}">
</div>
<p class="brand-name">{{name}}</p>
</a>
... ... @@ -15,7 +15,7 @@
<li class="more">
<a class="{{#unless image.src}}default{{/unless}}" href="{{image.url}}">
<img src="{{image image.src 320 172}}">
<img src="{{image2 image.src w=320 h=172 q=60}}">
</a>
</li>
</ul>
... ...
... ... @@ -6,7 +6,7 @@
{{# list}}
<li class="swiper-slide">
<a href="{{url}}">
<img src="{{image src 140 140}}" alt="">
<img src="{{image2 src w=140 h=140 q=60}}" alt="">
<span class="brands-title">{{name}}</span>
</a>
</li>
... ...
... ... @@ -4,7 +4,7 @@
{{# banner}}
<a class="category-banner" href="{{url}}">
<img class="lazy" data-original="{{src}}">
<img class="lazy" data-original="{{image2 src q=60}}">
</a>
{{/ banner}}
<ul class="category-list clearfix">
... ... @@ -12,7 +12,7 @@
<li>
<a href="{{url}}">
<div class="img-box">
<img class="lazy" data-original="{{image src 140 140}}" alt="">
<img class="lazy" data-original="{{image2 src w=140 h=140 q=60}}" alt="">
</div>
</a>
</li>
... ...
... ... @@ -2,12 +2,12 @@
<div class="hot-single">
{{> ../common/floor-header-more}}
{{> ./new-floor-banner}}
<div class="hot-single-goods-list" {{#background}}style="background-image: url({{image src 640 200}})"{{/background}}>
<div class="hot-single-goods-list" {{#background}}style="background-image: url({{image2 src w=640 h=200 q=60}})"{{/background}}>
<ul>
{{#list}}
<li class="hot-single-goods">
<a href="//m.yohobuy.com/product/show_{{product_skn}}">
<img src="{{image default_images 153 206}}" alt="goods" class="goods-pic">
<img src="{{image2 default_images w=153 h=206 q=60}}" alt="goods" class="goods-pic">
<div class="goods-info">
<h3 class="price">&yen; {{sales_price}}</h3>
<p class="view-num">{{view_num}}</p>
... ...
{{#appIconList}}
<div class="icons-wrapper" {{#if back_image}} style="background-image:url({{back_image}})" {{/if}}>
<div class="icons-wrapper" {{#if back_image}} style="background-image:url({{image2 back_image q=60}})" {{/if}}>
<ul class="icons-list clearfix">
{{#data}}
<li class="icons-item item-{{../number}}"><a href="{{url}}" class="imagebar"><img src="{{image src 98 98}}" alt=""></a><a href="{{url}}" class="linkbar">{{title}}</a></li>
<li class="icons-item item-{{../number}}"><a href="{{url}}" class="imagebar"><img src="{{image2 src w=98 h=98 q=60}}" alt=""></a><a href="{{url}}" class="linkbar">{{title}}</a></li>
{{/data}}
</ul>
</div>
... ...
... ... @@ -3,27 +3,27 @@
{{> ../common/floor-header-more}}
{{#list.[0]}}
<a href="{{url}}" class="float-container">
<img class="lazy left" data-original="{{image src 268 360}}" alt="left">
<img class="lazy left" data-original="{{image2 src w=268 h=360 q=60}}" alt="left">
</a>
{{/list.[0]}}
{{#list.[1]}}
<a href="{{url}}" class="float-container">
<img class="lazy right" data-original="{{image src 186 180}}" alt="right1">
<img class="lazy right" data-original="{{image2 src w=186 h=180 q=60}}" alt="right1">
</a>
{{/list.[1]}}
{{#list.[2]}}
<a href="{{url}}" class="float-container">
<img class="lazy right" data-original="{{image src 186 180}}" alt="right2">
<img class="lazy right" data-original="{{image2 src w=186 h=180 q=60}}" alt="right2">
</a>
{{/list.[2]}}
{{#list.[3]}}
<a href="{{url}}" class="float-container">
<img class="lazy right" data-original="{{image src 186 180}}" alt="right3">
<img class="lazy right" data-original="{{image2 src w=186 h=180 q=60}}" alt="right3">
</a>
{{/list.[3]}}
{{#list.[4]}}
<a href="{{url}}" class="float-container">
<img class="lazy right" data-original="{{image src 186 180}}" alt="right4">
<img class="lazy right" data-original="{{image2 src w=186 h=180 q=60}}" alt="right4">
</a>
{{/list.[4]}}
</div>
... ...
... ... @@ -7,7 +7,7 @@
<li>
<a href="{{url}}">
<div class="img-box">
<img class="lazy" data-original="{{image src 320 154}}" alt="">
<img class="lazy" data-original="{{image2 src w=320 h=154 q=60}}" alt="">
</div>
</a>
</li>
... ...
... ... @@ -3,6 +3,10 @@
* @author: liangzhifeng<zhifeng.liang@yoho.cn>
* @date: 2015/10/12
*/
// 加载css
require('channel/home.page.css');
var $ = require('yoho-jquery'),
Swiper = require('yoho-swiper'),
lazyLoad = require('yoho-jquery-lazyload'),
... ...
module.exports = function(url, opts) {
if (url) {
let params = opts.hash;
let urls = url.split('?');
let query = urls[1] || '';
let uri = urls[0];
if (uri.indexOf('http:') === 0) {
uri = uri.replace('http:', '');
}
if (query) {
query = query.replace(/{width}/g, params.w).replace(/{height}/g, params.h).replace(/{mode}/g, (params.mode || 2));
if (query.indexOf('imageView2') === 0) {
if (params.q && query.indexOf('/q/') > 0) {
query = query.replace(/\/q\/\d+/g, '/q/' + params.q);
} else {
query += '/q/' + params.q;
}
} else if (query.indexOf('imageMogr2') === 0) {
if (params.q && query.indexOf('/quality/') > 0) {
query = query.replace(/\/quality\/\d+/g, '/quality/' + params.q);
} else {
query += '/quality/' + params.q;
}
}
} else {
query = 'imageView2/2/interlace/1/q/' + (params.q || 75);
}
return uri + '?' + query;
} else {
return url;
}
};
... ...
... ... @@ -3,6 +3,8 @@
* @author: xuqi<qi.xu@yoho.cn>
* @date: 2015/10/10
*/
require('guang/index-editor.page.css');
var $ = require('yoho-jquery');
... ...
... ... @@ -3,6 +3,9 @@
* @author: xuqi<qi.xu@yoho.cn>
* @date: 2015/10/10
*/
require('guang/index.page.css');
var $ = require('yoho-jquery');
... ...
... ... @@ -3,6 +3,7 @@
* @author: xuqi<qi.xu@yoho.cn>
* @date: 2015/10/13
*/
require('guang/info-index.page.css');
var $ = require('yoho-jquery'),
ellipsis = require('yoho-mlellipsis'),
... ...
... ... @@ -362,7 +362,8 @@ function search(opt) {
params = {
type: navType,
order: nav.order,
page: page
page: page,
noLazy: true
};
if (shopId) {
... ... @@ -454,8 +455,8 @@ function search(opt) {
}
if (firstScreen) {
// 如果首屏加载了,则去掉6条记录
params.start = 6;
// 如果首屏加载了,则去掉12条记录
params.start = 12;
}
$.extend(setting, defaultOpt, params);
... ... @@ -988,9 +989,9 @@ $listNav.on('touchend touchcancel', function(e) {
function scrollHandler() {
// 当scroll到1/4$goodsContainer高度后继续请求下一页数据
// 当scroll到1/2$goodsContainer高度后继续请求下一页数据
if ($(window).scrollTop() + winH >
$(document).height() - 0.25 * $goodsContainer.height()) {
$(document).height() - 0.5 * $goodsContainer.height()) {
search();
}
}
... ... @@ -1073,10 +1074,15 @@ if ($brandHeader.length > 0) {
});
}
// 初始请求最新第一页数据
setTimeout(function() {
var initialData = false;
$(window).one('scroll', function() {
// 初始请求最新第一页数据
if (!initialData) {
search();
}, 500);
initialData = true;
}
});
$listNav.on('touchstart', 'li', function() {
$listNav.find('li').removeClass('bytouch');
... ...
... ... @@ -40,7 +40,6 @@ shopCoupon = {
$.ajax({
method: 'GET',
url: _url,
async: false,
data: {
shopId: that.common.shopId,
brandId: that.common.brandId,
... ... @@ -126,7 +125,6 @@ shopCoupon = {
$.ajax({
method: 'POST',
url: '/product/index/userCoupon',
async: false,
data: {
couponID: code,
uid: $self.common.uid
... ...
@import "../layout/_loading.css";
@import "../layout/_swiper.css";
@import "../common/_filter.css";
@import "../common/_good.css";
@import "../common/_loading.css";
@import "../common/_suspend-home.css";
@import "_banner-bottom.css";
@import "_banner-center.css";
@import "_banner-top.css";
@import "_brand.css";
@import "_cate.css";
@import "_creative-life.css";
@import "_divide-image.css";
@import "_fine-brands.css";
@import "_floor-header.css";
@import "_footer-tab.css";
@import "_fresh-only.css";
@import "_goods-category.css";
@import "_home-header.css";
@import "_home.css";
@import "_hot-brands.css";
@import "_hot-category.css";
@import "_hot-single.css";
@import "_icons-enter.css";
@import "_index.css";
@import "_left-right.css";
@import "_maybe-like.css";
@import "_new-first.css";
@import "_new-user-floor.css";
@import "_notice.css";
@import "_plus-star.css";
@import "_sale-floor.css";
@import "_search-input.css";
@import "_search.css";
@import "_seckill.css";
@import "_shop-recommand.css";
@import "_side-nav.css";
@import "_six-lines-floor.css";
@import "_three-picture.css";
@import "_thumb-row.css";
@import "_trend-topics.css";
@import "_trend-tops.css";
@import "_trendsetter-collocation.css";
@import "_two-column-goods.css";
@import "_vip-only.css";
... ...
... ... @@ -6,6 +6,7 @@
@import "layout/common";
@import "layout/header";
@import "layout/footer";
@import "layout/utils";
@import "common/data-bind";
@import "common/suspend-cart";
... ...
... ... @@ -38,6 +38,7 @@
img {
display: block;
width: 100%;
min-height: 400px;
}
}
... ...
@import "../layout/_loading.css";
@import "../layout/_swiper.css";
@import "../common/_loading.css";
@import "../common/_suspend-home.css";
@import "_info-list.css";
@import "_info.css";
@import "_tvls.css";
... ...
@import "../layout/_loading.css";
@import "../layout/_swiper.css";
@import "../common/_good.css";
@import "../common/_loading.css";
@import "../common/_suspend-home.css";
@import "../channel/_footer-tab.css";
@import "_info-list.css";
@import "_info.css";
@import "_tvls.css";
... ...
@import "../common/_filter.css";
@import "../common/_good.css";
@import "../common/_loading.css";
@import "../common/_suspend-home.css";
@import "_detail.css";
@import "_tvls.css";
... ...
'use strict';
const url = require('url');
const config = require('../config/common');
const assetUrl = config.assetUrl;
... ... @@ -5,5 +7,58 @@ const assetUrl = config.assetUrl;
module.exports = {
imgSrc: function(imgSrc) {
return url.resolve(assetUrl, imgSrc);
},
image2: function(url, opts) {
if (url) {
let params = opts.hash;
let urls = url.split('?');
let query = urls[1] || '';
let uri = urls[0];
if (uri.indexOf('http:') === 0) {
uri = uri.replace('http:', '');
}
if (query) {
query = query.replace(/{width}/g, params.w).replace(/{height}/g, params.h).replace(/{mode}/g, (params.mode || 2));
if (query.indexOf('imageView2') === 0) {
if (params.q && query.indexOf('/q/') > 0) {
query = query.replace(/\/q\/\d+/g, '/q/' + params.q);
} else {
query += '/q/' + params.q;
}
} else if (query.indexOf('imageMogr2') === 0) {
if (params.q && query.indexOf('/quality/') > 0) {
query = query.replace(/\/quality\/\d+/g, '/quality/' + params.q);
} else {
query += '/quality/' + params.q;
}
}
} else {
query = 'imageView2/2/interlace/1/q/' + (params.q || 75);
}
return uri + '?' + query;
} else {
return url;
}
},
ifor: function() {
var args = Array.prototype.slice.call(arguments);
var opt = args[args.length - 1];
var isTrue = false;
for (var i = 0; i < args.length - 1; i++) {
if (args[i]) {
isTrue = true;
break;
}
}
if (isTrue) {
return opt.fn(this);
} else {
return opt.inverse(this);
}
}
};
... ...