merge master to bigdata_burying
Showing
70 changed files
with
400 additions
and
399 deletions
@@ -24,7 +24,8 @@ const favicon = require('serve-favicon'); | @@ -24,7 +24,8 @@ const favicon = require('serve-favicon'); | ||
24 | const uuid = require('uuid'); | 24 | const uuid = require('uuid'); |
25 | 25 | ||
26 | const pkg = require('./package.json'); | 26 | const pkg = require('./package.json'); |
27 | -const session = require('cookie-session'); | 27 | +const session = require('client-sessions'); |
28 | +const _ = require('lodash'); | ||
28 | 29 | ||
29 | const app = express(); | 30 | const app = express(); |
30 | 31 | ||
@@ -58,7 +59,7 @@ app.use(global.yoho.hbs({ | @@ -58,7 +59,7 @@ app.use(global.yoho.hbs({ | ||
58 | layoutsDir: path.join(__dirname, 'doraemon/views'), | 59 | layoutsDir: path.join(__dirname, 'doraemon/views'), |
59 | partialsDir: path.join(__dirname, 'doraemon/views/partial'), | 60 | partialsDir: path.join(__dirname, 'doraemon/views/partial'), |
60 | views: path.join(__dirname, 'doraemon/views'), | 61 | views: path.join(__dirname, 'doraemon/views'), |
61 | - helpers: global.yoho.helpers | 62 | + helpers: _.assign(global.yoho.helpers, require('./utils/helpers')) |
62 | })); | 63 | })); |
63 | 64 | ||
64 | app.use(global.yoho.middleware()); | 65 | app.use(global.yoho.middleware()); |
@@ -73,14 +74,19 @@ app.use(cookieParser()); | @@ -73,14 +74,19 @@ app.use(cookieParser()); | ||
73 | app.use(compression()); | 74 | app.use(compression()); |
74 | 75 | ||
75 | app.use(session({ | 76 | app.use(session({ |
76 | - name: 'yohobuy_session_cookie', | ||
77 | - secret: '82dd7e724f2c6870472c89dfa43cf48d' | 77 | + requestKey: 'session', |
78 | + cookieName: 'yohoblk-session', | ||
79 | + secret: '82dd7e724f2c6870472c89dfa43cf48d', | ||
80 | + domain: config.cookieDomain | ||
78 | })); | 81 | })); |
79 | 82 | ||
80 | app.use((req, res, next) => { | 83 | app.use((req, res, next) => { |
81 | req.user = {}; // 全局的用户数据 | 84 | req.user = {}; // 全局的用户数据 |
82 | req.yoho = {}; // req和res绑定yoho对象,用于传递全局数据, 如req.yoho.channel等 | 85 | req.yoho = {}; // req和res绑定yoho对象,用于传递全局数据, 如req.yoho.channel等 |
83 | req.app.locals.wap = app.locals.wap; // zookeper对象赋值 | 86 | req.app.locals.wap = app.locals.wap; // zookeper对象赋值 |
87 | + if (!req.session) { | ||
88 | + req.session = {}; | ||
89 | + } | ||
84 | if (!req.session.id) { | 90 | if (!req.session.id) { |
85 | req.session.id = uuid.v4(); | 91 | req.session.id = uuid.v4(); |
86 | } | 92 | } |
@@ -99,6 +105,7 @@ try { | @@ -99,6 +105,7 @@ try { | ||
99 | const errorHanlder = require('./doraemon/middleware/error-handler'); | 105 | const errorHanlder = require('./doraemon/middleware/error-handler'); |
100 | const setPageInfo = require('./doraemon/middleware/set-pageinfo'); | 106 | const setPageInfo = require('./doraemon/middleware/set-pageinfo'); |
101 | const devtools = require('./doraemon/middleware/devtools'); | 107 | const devtools = require('./doraemon/middleware/devtools'); |
108 | + const layoutTools = require('./doraemon/middleware/layout-tools'); | ||
102 | const seo = require('./doraemon/middleware/seo'); | 109 | const seo = require('./doraemon/middleware/seo'); |
103 | const pageCache = require('./doraemon/middleware/page-cache'); | 110 | const pageCache = require('./doraemon/middleware/page-cache'); |
104 | 111 | ||
@@ -114,6 +121,8 @@ try { | @@ -114,6 +121,8 @@ try { | ||
114 | app.use(devtools()); | 121 | app.use(devtools()); |
115 | } | 122 | } |
116 | 123 | ||
124 | + app.use(layoutTools()); | ||
125 | + | ||
117 | app.use(pageCache()); | 126 | app.use(pageCache()); |
118 | require('./dispatch')(app); | 127 | require('./dispatch')(app); |
119 | app.all('*', errorHanlder.notFound()); // 404 | 128 | app.all('*', errorHanlder.notFound()); // 404 |
@@ -52,7 +52,9 @@ let _channelPage = (req, res, data) => { | @@ -52,7 +52,9 @@ let _channelPage = (req, res, data) => { | ||
52 | // } | 52 | // } |
53 | // }].concat(result.content); | 53 | // }].concat(result.content); |
54 | // console.log(result.content[9]); | 54 | // console.log(result.content[9]); |
55 | - res.render('channel', Object.assign({}, _renderData, data, result)); | 55 | + res.render('channel', Object.assign({}, _renderData, data, result, { |
56 | + localCss: true | ||
57 | + })); | ||
56 | }); | 58 | }); |
57 | }; | 59 | }; |
58 | 60 |
@@ -194,7 +194,7 @@ const getBrandByChannel = (channel) => { | @@ -194,7 +194,7 @@ const getBrandByChannel = (channel) => { | ||
194 | name: row.brand_name, | 194 | name: row.brand_name, |
195 | isHot: row.is_hot === 'Y' ? true : false, | 195 | isHot: row.is_hot === 'Y' ? true : false, |
196 | isNew: row.is_show_new === 'Y' ? true : false, | 196 | isNew: row.is_show_new === 'Y' ? true : false, |
197 | - url: helpers.urlFormat('', null, row.brand_domain) | 197 | + url: helpers.urlFormat('/product/index/brand?domain=' + row.brand_domain) |
198 | }); | 198 | }); |
199 | 199 | ||
200 | }); | 200 | }); |
@@ -222,7 +222,7 @@ const getBrandByChannel = (channel) => { | @@ -222,7 +222,7 @@ const getBrandByChannel = (channel) => { | ||
222 | 222 | ||
223 | list.push({ | 223 | list.push({ |
224 | brandName: newList[key].brand_name, | 224 | brandName: newList[key].brand_name, |
225 | - url: helpers.urlFormat('', null, newList[key].brand_domain), | 225 | + url: helpers.urlFormat('/product/index/brand?domain=' + newList[key].brand_domain), |
226 | img: helpers.image(newList[key].brand_ico, 186, 115), | 226 | img: helpers.image(newList[key].brand_ico, 186, 115), |
227 | }); | 227 | }); |
228 | 228 | ||
@@ -249,7 +249,7 @@ const getBrandByChannel = (channel) => { | @@ -249,7 +249,7 @@ const getBrandByChannel = (channel) => { | ||
249 | 249 | ||
250 | list.push({ | 250 | list.push({ |
251 | brandName: hotList[key].brand_name, | 251 | brandName: hotList[key].brand_name, |
252 | - url: helpers.urlFormat('', null, hotList[key].brand_domain), | 252 | + url: helpers.urlFormat('/product/index/brand?domain=' + hotList[key].brand_domain), |
253 | img: helpers.image(hotList[key].brand_ico, 186, 115), | 253 | img: helpers.image(hotList[key].brand_ico, 186, 115), |
254 | }); | 254 | }); |
255 | 255 | ||
@@ -487,7 +487,7 @@ const branchSearch = (params) => { | @@ -487,7 +487,7 @@ const branchSearch = (params) => { | ||
487 | name: row.brand_name, | 487 | name: row.brand_name, |
488 | isHot: row.is_hot === 'Y' ? true : false, | 488 | isHot: row.is_hot === 'Y' ? true : false, |
489 | isNew: row.is_show_new === 'Y' ? true : false, | 489 | isNew: row.is_show_new === 'Y' ? true : false, |
490 | - url: helpers.urlFormat('', null, row.brand_domain), | 490 | + url: helpers.urlFormat('/product/index/brand?domain=' + row.brand_domain), |
491 | brandId: row.id, | 491 | brandId: row.id, |
492 | brandDomain: row.brand_domain, | 492 | brandDomain: row.brand_domain, |
493 | searchName: row.brand_name_en + row.brand_name_cn | 493 | searchName: row.brand_name_en + row.brand_name_cn |
@@ -5,13 +5,13 @@ | @@ -5,13 +5,13 @@ | ||
5 | {{#if @first}} | 5 | {{#if @first}} |
6 | <li class="swiper-slide buriedpoint" data-bp-id="shop_bannerarea_{{url}}_0"> | 6 | <li class="swiper-slide buriedpoint" data-bp-id="shop_bannerarea_{{url}}_0"> |
7 | <a href="{{url}}"> | 7 | <a href="{{url}}"> |
8 | - <img src="{{img}}"> | 8 | + <img src="{{image2 img q=60}}"> |
9 | </a> | 9 | </a> |
10 | </li> | 10 | </li> |
11 | {{^}} | 11 | {{^}} |
12 | <li class="swiper-slide buriedpoint" data-bp-id="shop_bannerarea_two_0"> | 12 | <li class="swiper-slide buriedpoint" data-bp-id="shop_bannerarea_two_0"> |
13 | <a href="{{url}}"> | 13 | <a href="{{url}}"> |
14 | - <img class="swiper-lazy" data-src="{{img}}"> | 14 | + <img class="swiper-lazy" data-src="{{image2 img q=60}}"> |
15 | </a> | 15 | </a> |
16 | <div class="swiper-lazy-preloader"></div> | 16 | <div class="swiper-lazy-preloader"></div> |
17 | </li> | 17 | </li> |
@@ -23,4 +23,4 @@ | @@ -23,4 +23,4 @@ | ||
23 | <div class="pagination-inner"> | 23 | <div class="pagination-inner"> |
24 | </div> | 24 | </div> |
25 | </div> | 25 | </div> |
26 | -</div> | ||
26 | +</div> |
@@ -5,7 +5,7 @@ | @@ -5,7 +5,7 @@ | ||
5 | {{# list}} | 5 | {{# list}} |
6 | <li class="swiper-slide"> | 6 | <li class="swiper-slide"> |
7 | <a href="{{url}}"> | 7 | <a href="{{url}}"> |
8 | - <img src="{{img}}" alt=""> | 8 | + <img src="{{image2 img q=60}}" alt=""> |
9 | <span class="brands-title">{{textCn}}</span> | 9 | <span class="brands-title">{{textCn}}</span> |
10 | </a> | 10 | </a> |
11 | </li> | 11 | </li> |
@@ -69,7 +69,8 @@ const editor = (req, res, next) => { | @@ -69,7 +69,8 @@ const editor = (req, res, next) => { | ||
69 | infos: build, | 69 | infos: build, |
70 | isApp: isApp, | 70 | isApp: isApp, |
71 | authorInfo: authorData.data | 71 | authorInfo: authorData.data |
72 | - } | 72 | + }, |
73 | + localCss: true | ||
73 | }, parameter)); | 74 | }, parameter)); |
74 | } else { | 75 | } else { |
75 | return next(); | 76 | return next(); |
@@ -172,7 +173,9 @@ const index = (req, res, next) => { | @@ -172,7 +173,9 @@ const index = (req, res, next) => { | ||
172 | res.set('Cache-Control', 'no-cache'); | 173 | res.set('Cache-Control', 'no-cache'); |
173 | } | 174 | } |
174 | } | 175 | } |
175 | - res.render('guang', Object.assign(responseData, result)); | 176 | + res.render('guang', Object.assign(responseData, result, { |
177 | + localCss: true | ||
178 | + })); | ||
176 | }).catch(next); | 179 | }).catch(next); |
177 | }; | 180 | }; |
178 | 181 |
@@ -357,7 +357,8 @@ const index = (req, res, next) => { | @@ -357,7 +357,8 @@ const index = (req, res, next) => { | ||
357 | page: 'info-index', | 357 | page: 'info-index', |
358 | title: '逛', | 358 | title: '逛', |
359 | gender: gender, | 359 | gender: gender, |
360 | - wechatShare: true | 360 | + wechatShare: true, |
361 | + localCss: true | ||
361 | }, data, parameter)); | 362 | }, data, parameter)); |
362 | }); | 363 | }); |
363 | } else { | 364 | } else { |
@@ -19,11 +19,7 @@ | @@ -19,11 +19,7 @@ | ||
19 | {{# ../swiper}} | 19 | {{# ../swiper}} |
20 | <div class="swiper-slide"> | 20 | <div class="swiper-slide"> |
21 | <a href="{{url}}"> | 21 | <a href="{{url}}"> |
22 | - {{#if @first}} | ||
23 | - <img src="{{img}}"> | ||
24 | - {{^}} | ||
25 | - <img class="swiper-lazy" data-src="{{img}}"> | ||
26 | - {{/if}} | 22 | + <img class="swiper-lazy" data-src="{{image2 img width=200 height=100 q=60}}"> |
27 | </a> | 23 | </a> |
28 | <div class="swiper-lazy-preloader"></div> | 24 | <div class="swiper-lazy-preloader"></div> |
29 | </div> | 25 | </div> |
@@ -36,11 +36,7 @@ | @@ -36,11 +36,7 @@ | ||
36 | </a> | 36 | </a> |
37 | {{/if}} | 37 | {{/if}} |
38 | <a href="{{url}}"> | 38 | <a href="{{url}}"> |
39 | - {{#if ../@first}} | ||
40 | - <img src="{{img}}" alt="{{alt}}"> | ||
41 | - {{^}} | ||
42 | - <img class="lazy" data-original="{{img}}" alt="{{alt}}"> | ||
43 | - {{/if}} | 39 | + <img class="lazy" data-original="{{img}}" alt="{{alt}}"> |
44 | </a> | 40 | </a> |
45 | </div> | 41 | </div> |
46 | 42 |
@@ -182,7 +182,7 @@ const local = { | @@ -182,7 +182,7 @@ const local = { | ||
182 | })(req, res, next); | 182 | })(req, res, next); |
183 | }, | 183 | }, |
184 | logout: (req, res) => { | 184 | logout: (req, res) => { |
185 | - req.session = null; | 185 | + req.session.reset(); |
186 | 186 | ||
187 | res.clearCookie('_UID', { | 187 | res.clearCookie('_UID', { |
188 | domain: 'yohobuy.com' | 188 | domain: 'yohobuy.com' |
@@ -215,14 +215,21 @@ const category = (req, res, next) => { | @@ -215,14 +215,21 @@ const category = (req, res, next) => { | ||
215 | // 获取第一页数据做服务端渲染 | 215 | // 获取第一页数据做服务端渲染 |
216 | let initialData = _.assign({ | 216 | let initialData = _.assign({ |
217 | gender: params.gender, | 217 | gender: params.gender, |
218 | - sort: parseInt(params.sort), | 218 | + sort: parseInt(params.sort) || '', |
219 | type: 'default', | 219 | type: 'default', |
220 | order: '0', | 220 | order: '0', |
221 | page: 1, | 221 | page: 1, |
222 | - limit: 6, | 222 | + limit: 12, |
223 | }, params); | 223 | }, params); |
224 | 224 | ||
225 | searchModel.getSearchData(initialData).then((firstScreenGoodsList) => { | 225 | searchModel.getSearchData(initialData).then((firstScreenGoodsList) => { |
226 | + if (firstScreenGoodsList && firstScreenGoodsList.list) { | ||
227 | + _.forEach(firstScreenGoodsList.list, function(item) { | ||
228 | + if (item && item.default_images) { | ||
229 | + item.default_images = item.default_images.replace(/quality\/80/g, 'quality/70'); | ||
230 | + } | ||
231 | + }); | ||
232 | + } | ||
226 | res.render('search/goods-list', { | 233 | res.render('search/goods-list', { |
227 | _noLazy: true, // 首屏不使用lazyload | 234 | _noLazy: true, // 首屏不使用lazyload |
228 | module: 'product', | 235 | module: 'product', |
@@ -39,7 +39,7 @@ const list = (req, res, next) => { | @@ -39,7 +39,7 @@ const list = (req, res, next) => { | ||
39 | type: 'default', | 39 | type: 'default', |
40 | order: '0', | 40 | order: '0', |
41 | page: 1, | 41 | page: 1, |
42 | - limit: 6 | 42 | + limit: 12 |
43 | }, params); | 43 | }, params); |
44 | 44 | ||
45 | if (query) { | 45 | if (query) { |
@@ -179,6 +179,7 @@ const search = (req, res, next) => { | @@ -179,6 +179,7 @@ const search = (req, res, next) => { | ||
179 | let params = Object.assign({}, req.query); | 179 | let params = Object.assign({}, req.query); |
180 | 180 | ||
181 | params.isApp = req.yoho.isApp; | 181 | params.isApp = req.yoho.isApp; |
182 | + params.limit = 24; | ||
182 | searchModel.getSearchData(params).then((result) => { | 183 | searchModel.getSearchData(params).then((result) => { |
183 | 184 | ||
184 | if (result && result.list && parseInt(params.page) === 1 && parseInt(params.start) > 0) { | 185 | if (result && result.list && parseInt(params.page) === 1 && parseInt(params.start) > 0) { |
@@ -190,7 +191,8 @@ const search = (req, res, next) => { | @@ -190,7 +191,8 @@ const search = (req, res, next) => { | ||
190 | res.render('search/page', { | 191 | res.render('search/page', { |
191 | layout: false, | 192 | layout: false, |
192 | new: result.list, | 193 | new: result.list, |
193 | - total: result.total | 194 | + total: result.total, |
195 | + _noLazy: params.noLazy || false | ||
194 | }); | 196 | }); |
195 | } else { | 197 | } else { |
196 | res.json(result); | 198 | res.json(result); |
@@ -120,7 +120,7 @@ | @@ -120,7 +120,7 @@ | ||
120 | {{# enterStore}} | 120 | {{# enterStore}} |
121 | <div id="enter-store" class="enter-store page-block tap-hightlight"> | 121 | <div id="enter-store" class="enter-store page-block tap-hightlight"> |
122 | <a class="store-logo" href="{{url}}" style=""> | 122 | <a class="store-logo" href="{{url}}" style=""> |
123 | - <img class="lazy" data-original="{{image img 47 47}}" alt="{{storeName}}"> | 123 | + <img class="lazy" data-original="{{image2 img w=47 h=47 q=60}}" alt="{{storeName}}"> |
124 | </a> | 124 | </a> |
125 | <a class="store-name" href="{{url}}">{{storeName}}</a> | 125 | <a class="store-name" href="{{url}}">{{storeName}}</a> |
126 | <a class="store-link" href="{{url}}">进入店铺<span class="iconfont"></span></a> | 126 | <a class="store-link" href="{{url}}">进入店铺<span class="iconfont"></span></a> |
@@ -53,7 +53,7 @@ | @@ -53,7 +53,7 @@ | ||
53 | <span class="en-title">{{enTitle}}</span> | 53 | <span class="en-title">{{enTitle}}</span> |
54 | </h1> | 54 | </h1> |
55 | <div class="detail" style="width:100%"> | 55 | <div class="detail" style="width:100%"> |
56 | - <img class="lazy" data-original="{{img}}" alt=""> | 56 | + <img class="lazy" data-original="{{image2 img q=60}}" alt=""> |
57 | </div> | 57 | </div> |
58 | </div> | 58 | </div> |
59 | {{/measurementMethod}} | 59 | {{/measurementMethod}} |
@@ -110,7 +110,7 @@ | @@ -110,7 +110,7 @@ | ||
110 | {{desc}} | 110 | {{desc}} |
111 | </p>--> | 111 | </p>--> |
112 | <div class="material-image"> | 112 | <div class="material-image"> |
113 | - <img src="{{img}}" alt="材质图"> | 113 | + <img src="{{image2 img q=60}}" alt="材质图"> |
114 | </div> | 114 | </div> |
115 | <div class="material-desc"> | 115 | <div class="material-desc"> |
116 | {{desc}} | 116 | {{desc}} |
@@ -126,7 +126,7 @@ | @@ -126,7 +126,7 @@ | ||
126 | <div class="detail table clearfix"> | 126 | <div class="detail table clearfix"> |
127 | {{#list}} | 127 | {{#list}} |
128 | <div class="tip"> | 128 | <div class="tip"> |
129 | - <img src="{{img}}" alt=""> | 129 | + <img src="{{image2 img q=60}}" alt=""> |
130 | <span class="caption">{{caption}}</span> | 130 | <span class="caption">{{caption}}</span> |
131 | </div> | 131 | </div> |
132 | {{/list}} | 132 | {{/list}} |
@@ -143,7 +143,7 @@ | @@ -143,7 +143,7 @@ | ||
143 | <div class="pro-detail"> | 143 | <div class="pro-detail"> |
144 | <p>{{{desc}}}</p> | 144 | <p>{{{desc}}}</p> |
145 | {{#list}} | 145 | {{#list}} |
146 | - <img class="lazy" data-original="{{img}}" alt=""> | 146 | + <img class="lazy" data-original="{{image2 img q=60}}" alt=""> |
147 | {{/list}} | 147 | {{/list}} |
148 | </div> | 148 | </div> |
149 | </div> | 149 | </div> |
@@ -15,7 +15,7 @@ | @@ -15,7 +15,7 @@ | ||
15 | {{# brandWay}} | 15 | {{# brandWay}} |
16 | <div class="brand-way"> | 16 | <div class="brand-way"> |
17 | <a href={{url}}> | 17 | <a href={{url}}> |
18 | - <img class="brand-thumb" src={{thumb}}> | 18 | + <img class="brand-thumb" src={{image2 thumb q=60}}> |
19 | <span class="brand-name">{{name}}</span> | 19 | <span class="brand-name">{{name}}</span> |
20 | <span class="entry"> | 20 | <span class="entry"> |
21 | 进入店铺 | 21 | 进入店铺 |
@@ -27,7 +27,7 @@ | @@ -27,7 +27,7 @@ | ||
27 | <!-- 品牌页面 --> | 27 | <!-- 品牌页面 --> |
28 | {{# brandHome}} | 28 | {{# brandHome}} |
29 | <div id="brand-header" class="brand-header" data-id={{id}}> | 29 | <div id="brand-header" class="brand-header" data-id={{id}}> |
30 | - <img src={{banner}}> | 30 | + <img src={{image2 banner q=60}}> |
31 | <a class="btn-intro" href="javascript:void(0);"> | 31 | <a class="btn-intro" href="javascript:void(0);"> |
32 | 品牌介绍 | 32 | 品牌介绍 |
33 | </a> | 33 | </a> |
@@ -3,7 +3,7 @@ | @@ -3,7 +3,7 @@ | ||
3 | <!-- 基础店铺页面 --> | 3 | <!-- 基础店铺页面 --> |
4 | {{# baseShopHome}} | 4 | {{# baseShopHome}} |
5 | <div id="brand-header" class="brand-header" data-id={{id}} data-isbaseshop="{{isBaseShop}}"> | 5 | <div id="brand-header" class="brand-header" data-id={{id}} data-isbaseshop="{{isBaseShop}}"> |
6 | - <img src={{banner}}> | 6 | + <img src={{image2 banner q=60}}> |
7 | <a class="btn-intro" href="javascript:void(0);"> | 7 | <a class="btn-intro" href="javascript:void(0);"> |
8 | 店铺介绍 | 8 | 店铺介绍 |
9 | </a> | 9 | </a> |
@@ -31,9 +31,9 @@ | @@ -31,9 +31,9 @@ | ||
31 | 31 | ||
32 | <!-- /tar modifield 160826 --> | 32 | <!-- /tar modifield 160826 --> |
33 | <div class="branner-top"> | 33 | <div class="branner-top"> |
34 | - <img class="shop-back-img" src="{{image branerImg 640 200 1}}"> | 34 | + <img class="shop-back-img" src="{{image2 branerImg w=640 h=200 mode=1 q=60}}"> |
35 | {{#if logoImg}} | 35 | {{#if logoImg}} |
36 | - <img class="logo" src="{{image logoImg 500 500}}"> | 36 | + <img class="logo" src="{{image2 logoImg w=500 h=500 q=60}}"> |
37 | {{/if}} | 37 | {{/if}} |
38 | <p class="store-name">{{storeName}}</p> | 38 | <p class="store-name">{{storeName}}</p> |
39 | <div class="collect"> | 39 | <div class="collect"> |
@@ -66,7 +66,7 @@ | @@ -66,7 +66,7 @@ | ||
66 | <li class="swiper-slide brand-img buriedpoint" | 66 | <li class="swiper-slide brand-img buriedpoint" |
67 | data-bp-id="shop_brand_{{img}}_0"> | 67 | data-bp-id="shop_brand_{{img}}_0"> |
68 | <a href="{{url}}"> | 68 | <a href="{{url}}"> |
69 | - <img src="{{img}}"> | 69 | + <img src="{{image2 img q=60}}"> |
70 | </a> | 70 | </a> |
71 | <p>{{brandName}}</p> | 71 | <p>{{brandName}}</p> |
72 | </li> | 72 | </li> |
@@ -87,11 +87,11 @@ | @@ -87,11 +87,11 @@ | ||
87 | <li class="buriedpoint" data-bp-id="shop_spring_{{url}}_0"> | 87 | <li class="buriedpoint" data-bp-id="shop_spring_{{url}}_0"> |
88 | {{#if url}} | 88 | {{#if url}} |
89 | <a href="{{url}}"> | 89 | <a href="{{url}}"> |
90 | - <img src="{{springType}}"> | 90 | + <img src="{{image2 springType q=60}}"> |
91 | </a> | 91 | </a> |
92 | {{^}} | 92 | {{^}} |
93 | <a href="javascript:;"> | 93 | <a href="javascript:;"> |
94 | - <img src="{{springType}}"> | 94 | + <img src="{{image2 springType q=60}}"> |
95 | </a> | 95 | </a> |
96 | {{/if}} | 96 | {{/if}} |
97 | </li> | 97 | </li> |
@@ -112,7 +112,7 @@ | @@ -112,7 +112,7 @@ | ||
112 | </div> | 112 | </div> |
113 | <div class="product-warp"> | 113 | <div class="product-warp"> |
114 | <div class="goods-container clearfix"> | 114 | <div class="goods-container clearfix"> |
115 | - | 115 | + |
116 | </div> | 116 | </div> |
117 | </div> | 117 | </div> |
118 | </div> | 118 | </div> |
1 | -{{# shopIndex}} | ||
2 | - <div class="shop-index yoho-page scroll-wrapper" id="wrapper"> | ||
3 | - | ||
4 | - <div id="scroller"> | ||
5 | - <div id="nav-top"> | ||
6 | - {{> header}} | ||
7 | - <!-- tar modifield 160826 --> | ||
8 | - <input type="hidden" name="app_version" value="{{appVersion}}"> | ||
9 | - <input type="hidden" name="shop_id" value="{{shopId}}"> | ||
10 | - <input type="hidden" name="brand" value="{{brand}}"> | ||
11 | - <input type="hidden" name="favId" value="{{favId}}"> | ||
12 | - <input type="hidden" name="coverChannel" value="{{coverChannel}}"> | ||
13 | - <input type="hidden" name="uid" value="{{uid}}"> | ||
14 | - | ||
15 | - {{#unless appVersion}} | ||
16 | - <div class="search-area"> | ||
17 | - <div id="search-input" class="search-input"> | ||
18 | - <form id="search-form" action={{url}} method="get"> | ||
19 | - <i class="search-icon iconfont"></i> | ||
20 | - <input type="text" placeholder="搜索店铺内潮品" name="query" class="buriedpoint"> | ||
21 | - <input type="hidden" name="shop_id" value="{{shopId}}"> | ||
22 | - <input type="hidden" name="coverChannel" value="{{coverChannel}}"> | ||
23 | - <i class="clear-input iconfont hide"></i> | ||
24 | - <button id="search" class="search buriedpoint" type="submit" | ||
25 | - data-bp-id="shop_search_btn_0">搜索 | ||
26 | - </button> | ||
27 | - </form> | ||
28 | - </div> | ||
29 | - </div> | ||
30 | - {{/unless}} | ||
31 | - | ||
32 | - <!-- /tar modifield 160826 --> | ||
33 | - <div class="branner-top"> | ||
34 | - <img class="shop-back-img" src="{{image branerImg 640 200 1}}"> | ||
35 | - {{#if logoImg}} | ||
36 | - <img class="logo" src="{{image logoImg 500 500}}"> | ||
37 | - {{/if}} | ||
38 | - <p class="store-name">{{storeName}}</p> | ||
39 | - <div class="collect"> | ||
40 | - <div class="not-collect buriedpoint" id="collect" data-bp-id="shop_branner_collect_1"></div> | ||
41 | - </div> | ||
42 | - </div> | ||
43 | - </div> | ||
44 | - | ||
45 | - <ul id="nav" class="nav"> | ||
46 | - <li class="active color buriedpoint" tab="home-page" data-bp-id="shop_nav_index_1">首页</li> | ||
47 | - <li tab="new-arrival" data-bp-id="shop_nav_new_1" class="buriedpoint">上新</li> | ||
48 | - <li tab="popularity" data-bp-id="shop_nav_populary_1" class="buriedpoint">人气</li> | ||
49 | - <li data-bp-id="shop_nav_all_1" class="all-goods buriedpoint"> | ||
50 | - <a href="{{allGoods}}" target="_blank">全部商品</a> | ||
51 | - </li> | ||
52 | - </ul> | ||
53 | - | ||
54 | - <div id="home-page" class="main"> | ||
55 | - <div id="nav-main" class="nav-main"> | ||
56 | - <!-- 优惠卷 --> | ||
57 | - {{#if shopCoupons}} | ||
58 | - {{> shop/shop-coupon}} | ||
59 | - {{/if}} | ||
60 | - | ||
61 | - <!-- 大导航 --> | ||
62 | - {{#if brandList}} | ||
63 | - <div class="multi-brands first"> | ||
64 | - <p>品牌一览</p> | ||
65 | - <div class="multi-browse"> | ||
66 | - <ul class="swiper-wrapper"> | ||
67 | - {{#each brandList.list}} | ||
68 | - <li class="swiper-slide brand-img buriedpoint" | ||
69 | - data-bp-id="shop_brand_{{img}}_0"> | ||
70 | - <a href="{{url}}"> | ||
71 | - <img src="{{img}}"> | ||
72 | - </a> | ||
73 | - <p>{{brandName}}</p> | ||
74 | - </li> | ||
75 | - {{/each}} | ||
76 | - </ul> | ||
77 | - </div> | ||
78 | - </div> | ||
79 | - {{/if}} | ||
80 | - | ||
81 | - <div class="banner-area first"> | ||
82 | - {{# bannerTop}} | ||
83 | - {{> resources/banner-top}} | ||
84 | - {{/ bannerTop}} | ||
85 | - </div> | ||
86 | - | ||
87 | - <ul class="spring"> | ||
88 | - {{#each spring}} | ||
89 | - <li class="buriedpoint" data-bp-id="shop_spring_{{url}}_0"> | ||
90 | - {{#if url}} | ||
91 | - <a href="{{url}}"> | ||
92 | - <img src="{{springType}}"> | ||
93 | - </a> | ||
94 | - {{^}} | ||
95 | - <a href="javascript:;"> | ||
96 | - <img src="{{springType}}"> | ||
97 | - </a> | ||
98 | - {{/if}} | ||
99 | - </li> | ||
100 | - {{/each}} | ||
101 | - </ul> | ||
102 | - | ||
103 | - {{! 热门品类}} | ||
104 | - <div class="first"> | ||
105 | - {{# hotCategory}} | ||
106 | - {{> shop/hot-category}} | ||
107 | - {{/ hotCategory}} | ||
108 | - </div> | ||
109 | - | ||
110 | - <div class="popularity-title"> | ||
111 | - 人气单品 | ||
112 | - <a class="more buriedpoint" href="{{more_url}}" data-bp-id="shop_popularity_{{more_url}}"> | ||
113 | - </a> | ||
114 | - </div> | ||
115 | - <div class="product-warp"> | ||
116 | - <div class="goods-container clearfix"> | ||
117 | - {{# hotList}} | ||
118 | - {{> common/goods}} | ||
119 | - {{/ hotList}} | ||
120 | - </div> | ||
121 | - </div> | ||
122 | - </div> | ||
123 | - | ||
124 | - <div class="discount-area first" id="navlist2"> | ||
125 | - <ul id="list-nav" class="home-sub-nav list-nav pos-list clearfix"> | ||
126 | - <li data-bp-id="shop_listnav_new_1" class="new active buriedpoint"> | ||
127 | - <a href="javascript:void(0);"> | ||
128 | - <span class="spanTest">最新</span> | ||
129 | - <span class="iconfont cur"></span> | ||
130 | - </a> | ||
131 | - </li> | ||
132 | - <li class="price buriedpoint" data-bp-id="shop_listnav_price_1"> | ||
133 | - <a href="javascript:void(0);"> | ||
134 | - <span class="spanTest">价格</span> | ||
135 | - <span class="icon"> | ||
136 | - <i class="iconfont up cur"></i> | ||
137 | - <i class="iconfont down"></i> | ||
138 | - </span> | ||
139 | - </a> | ||
140 | - </li> | ||
141 | - <li class="discount buriedpoint" data-bp-id="shop_listnav_discount_1"> | ||
142 | - <a href="javascript:void(0);"> | ||
143 | - <span class="spanTest">折扣</span> | ||
144 | - <span class="icon"> | ||
145 | - <i class="iconfont up cur"></i> | ||
146 | - <i class="iconfont down"></i> | ||
147 | - </span> | ||
148 | - </a> | ||
149 | - </li> | ||
150 | - <li class="filter buriedpoint" data-bp-id="shop_listnav_filter_1"> | ||
151 | - <a href="javascript:void(0);"> | ||
152 | - <span class="spanTest">筛选</span> | ||
153 | - <span class="iconfont cur"></span> | ||
154 | - </a> | ||
155 | - </li> | ||
156 | - </ul> | ||
157 | - </div> | ||
158 | - | ||
159 | - <div class="discount-area first"> | ||
160 | - <div id="goods-container" class="goods-container"> | ||
161 | - <div class="new-goods container clearfix"> | ||
162 | - {{# goods}} | ||
163 | - {{> common/goods}} | ||
164 | - {{/ goods}} | ||
165 | - </div> | ||
166 | - <div class="price-goods container hide clearfix"></div> | ||
167 | - <div class="discount-goods container hide clearfix"></div> | ||
168 | - | ||
169 | - | ||
170 | - </div> | ||
171 | - </div> | ||
172 | - </div> | ||
173 | - <div id="new-arrival" class="new-arrival main hide"></div> | ||
174 | - <div id="popularity" class="popularity main hide"></div> | ||
175 | - </div> | ||
176 | - {{#unless appVersion}} | ||
177 | - {{> shop/shop-footer}} | ||
178 | - {{/unless}} | ||
179 | - <ul id="pos-nav" class="nav hide"> | ||
180 | - <li class="active color buriedpoint" tab="home-page" data-bp-id="shop_posnav_index_1">首页</li> | ||
181 | - <li tab="new-arrival" class="buriedpoint" data-bp-id="shop_posnav_new_1">上新</li> | ||
182 | - <li tab="popularity" class="buriedpoint" data-bp-id="shop_posnav_populary_1">人气</li> | ||
183 | - <li class="all-goods buriedpoint" data-bp-id="shop_posnav_all_1"> | ||
184 | - <a href="{{allGoods}}" target="_blank">全部商品</a> | ||
185 | - </li> | ||
186 | - </ul> | ||
187 | - | ||
188 | - <ul id="pos-list" class="home-sub-nav pos-list hide"> | ||
189 | - <li class="new active buriedpoint" data-bp-id="shop_poslist_new_1"> | ||
190 | - <a href="javascript:void(0);"> | ||
191 | - <span class="spanTest">最新</span> | ||
192 | - <span class="iconfont cur"></span> | ||
193 | - <b></b> | ||
194 | - </a> | ||
195 | - </li> | ||
196 | - <li class="price buriedpoint" data-bp-id="shop_poslist_price_1"> | ||
197 | - <a href="javascript:void(0);"> | ||
198 | - <span class="spanTest">价格</span> | ||
199 | - <span class="icon"> | ||
200 | - <i class="iconfont up cur"></i> | ||
201 | - <i class="iconfont down"></i> | ||
202 | - </span> | ||
203 | - <b></b> | ||
204 | - </a> | ||
205 | - </li> | ||
206 | - <li class="discount buriedpoint" data-bp-id="shop_poslist_discount_1"> | ||
207 | - <a href="javascript:void(0);"> | ||
208 | - <span class="spanTest">折扣</span> | ||
209 | - <span class="icon"> | ||
210 | - <i class="iconfont up cur"></i> | ||
211 | - <i class="iconfont down"></i> | ||
212 | - </span> | ||
213 | - <b></b> | ||
214 | - </a> | ||
215 | - </li> | ||
216 | - <li class="filter buriedpoint" data-bp-id="shop_poslist_filter_1"> | ||
217 | - <a href="javascript:void(0);"> | ||
218 | - <span class="spanTest">筛选</span> | ||
219 | - <span class="iconfont cur"></span> | ||
220 | - </a> | ||
221 | - </li> | ||
222 | - </ul> | ||
223 | - </div> | ||
224 | - {{> common/filter}} | ||
225 | -{{/ shopIndex}} | ||
226 | -{{> common/query-param}} | ||
227 | - | ||
228 | -<input type="text" class="shopid" style="display:none" value={{shopId}}> |
@@ -6,9 +6,9 @@ | @@ -6,9 +6,9 @@ | ||
6 | <li class="swiper-slide"> | 6 | <li class="swiper-slide"> |
7 | <a href="javascript:;"> | 7 | <a href="javascript:;"> |
8 | {{#if @first}} | 8 | {{#if @first}} |
9 | - <img src="{{image img 450 600}}" alt=""> | 9 | + <img src="{{image2 img w=450 h=600 q=60}}" alt=""> |
10 | {{else}} | 10 | {{else}} |
11 | - <img class="swiper-lazy" data-src="{{image img 450 600}}" alt=""> | 11 | + <img class="swiper-lazy" data-src="{{image2 img w=450 h=600 q=60}}" alt=""> |
12 | {{/if}} | 12 | {{/if}} |
13 | </a> | 13 | </a> |
14 | </li> | 14 | </li> |
@@ -26,7 +26,7 @@ | @@ -26,7 +26,7 @@ | ||
26 | {{^}} | 26 | {{^}} |
27 | <div class="banner-top-single"> | 27 | <div class="banner-top-single"> |
28 | <a href={{url}}> | 28 | <a href={{url}}> |
29 | - <img class="img" src="{{image img 450 600}}"> | 29 | + <img class="img" src="{{image2 img w=450 h=600 q=60}}"> |
30 | </a> | 30 | </a> |
31 | </div> | 31 | </div> |
32 | {{/if}} | 32 | {{/if}} |
1 | {{#data}} | 1 | {{#data}} |
2 | <div class="hot-category"> | 2 | <div class="hot-category"> |
3 | {{> common/floor-header}} | 3 | {{> common/floor-header}} |
4 | - | 4 | + |
5 | {{# banner}} | 5 | {{# banner}} |
6 | <a class="category-banner" href="{{url}}"> | 6 | <a class="category-banner" href="{{url}}"> |
7 | - <img class="lazy" data-original="{{src}}"> | 7 | + <img class="lazy" data-original="{{image2 src q=60}}"> |
8 | </a> | 8 | </a> |
9 | {{/ banner}} | 9 | {{/ banner}} |
10 | <ul class="category-list clearfix"> | 10 | <ul class="category-list clearfix"> |
@@ -12,7 +12,7 @@ | @@ -12,7 +12,7 @@ | ||
12 | <li> | 12 | <li> |
13 | <a href="{{url}}"> | 13 | <a href="{{url}}"> |
14 | <div class="img-box"> | 14 | <div class="img-box"> |
15 | - <img class="lazy" data-original="{{image src 140 140}}" alt=""> | 15 | + <img class="lazy" data-original="{{image2 src w=140 h=140 q=60}}" alt=""> |
16 | </div> | 16 | </div> |
17 | </a> | 17 | </a> |
18 | <div class="img-cover">{{name}}</div> | 18 | <div class="img-cover">{{name}}</div> |
@@ -20,4 +20,4 @@ | @@ -20,4 +20,4 @@ | ||
20 | {{/ list}} | 20 | {{/ list}} |
21 | </ul> | 21 | </ul> |
22 | </div> | 22 | </div> |
23 | -{{/data}} | ||
23 | +{{/data}} |
config/dns-prefetch.js
0 → 100644
1 | +// 在这个文件中配置 DNS 预读域名 | ||
2 | + | ||
3 | +module.exports = { | ||
4 | + hosts: [ | ||
5 | + '//cdn.yoho.cn', | ||
6 | + '//static.yohobuy.com', | ||
7 | + '//img10.static.yhbimg.com', | ||
8 | + '//img11.static.yhbimg.com', | ||
9 | + '//img12.static.yhbimg.com', | ||
10 | + '//img13.static.yhbimg.com', | ||
11 | + '//analytics.m.yohobuy.com', | ||
12 | + '//search.m.yohobuy.com', | ||
13 | + '//list.m.yohobuy.com', | ||
14 | + '//guang.m.yohobuy.com' | ||
15 | + ] | ||
16 | +}; | ||
17 | + |
@@ -5,8 +5,21 @@ | @@ -5,8 +5,21 @@ | ||
5 | const headerModel = require('../models/header'); | 5 | const headerModel = require('../models/header'); |
6 | const logger = global.yoho.logger; | 6 | const logger = global.yoho.logger; |
7 | 7 | ||
8 | +const forceNoCache = (res) => { | ||
9 | + if (res) { | ||
10 | + res.set({ | ||
11 | + 'Cache-Control': 'no-cache', | ||
12 | + Pragma: 'no-cache', | ||
13 | + Expires: (new Date(1900, 0, 1, 0, 0, 0, 0)).toUTCString() | ||
14 | + }); | ||
15 | + } | ||
16 | +}; | ||
17 | + | ||
18 | + | ||
8 | exports.notFound = () => { | 19 | exports.notFound = () => { |
9 | return (req, res) => { | 20 | return (req, res) => { |
21 | + forceNoCache(res); | ||
22 | + | ||
10 | res.status(404); | 23 | res.status(404); |
11 | 24 | ||
12 | if (req.xhr) { | 25 | if (req.xhr) { |
@@ -34,6 +47,8 @@ exports.notFound = () => { | @@ -34,6 +47,8 @@ exports.notFound = () => { | ||
34 | */ | 47 | */ |
35 | exports.serverError = () => { | 48 | exports.serverError = () => { |
36 | return (err, req, res, next) => { | 49 | return (err, req, res, next) => { |
50 | + forceNoCache(res); | ||
51 | + | ||
37 | logger.error(`error at path: ${req.url}`); | 52 | logger.error(`error at path: ${req.url}`); |
38 | logger.error(err); | 53 | logger.error(err); |
39 | 54 |
doraemon/middleware/layout-tools.js
0 → 100644
@@ -10,10 +10,9 @@ | @@ -10,10 +10,9 @@ | ||
10 | <meta name="apple-mobile-web-app-status-bar-style" content="black" /> | 10 | <meta name="apple-mobile-web-app-status-bar-style" content="black" /> |
11 | <meta content="telephone=no" name="format-detection" /> | 11 | <meta content="telephone=no" name="format-detection" /> |
12 | <meta content="email=no" name="format-detection" /> | 12 | <meta content="email=no" name="format-detection" /> |
13 | - <link rel="dns-prefetch" href="//cdn.yoho.cn"> | ||
14 | - <link rel="dns-prefetch" href="//static.yohobuy.com"> | ||
15 | - <link rel="dns-prefetch" href="//img12.static.yhbimg.com"> | ||
16 | - <link rel="dns-prefetch" href="//img13.static.yhbimg.com"> | 13 | + {{#dnsPrefetch.hosts}} |
14 | + <link rel="dns-prefetch" href="{{this}}"> | ||
15 | + {{/dnsPrefetch.hosts}} | ||
17 | 16 | ||
18 | <script type="text/javascript"> | 17 | <script type="text/javascript"> |
19 | var isWechat = /micromessenger/i.test(navigator.userAgent || ''); | 18 | var isWechat = /micromessenger/i.test(navigator.userAgent || ''); |
@@ -30,37 +29,24 @@ | @@ -30,37 +29,24 @@ | ||
30 | </script> | 29 | </script> |
31 | {{/if}} | 30 | {{/if}} |
32 | {{#if devEnv}} | 31 | {{#if devEnv}} |
33 | - | ||
34 | - | ||
35 | {{#if localCss}} | 32 | {{#if localCss}} |
36 | <link rel="stylesheet" media="all" href="//{{devHost}}:5001/bundle/common.css"> | 33 | <link rel="stylesheet" media="all" href="//{{devHost}}:5001/bundle/common.css"> |
37 | - <link rel="stylesheet" media="all" href="//{{devHost}}:5001/bundle/{{module}}.{{page}}.css"> | ||
38 | - {{^}} | ||
39 | - {{#if shopPage}} | ||
40 | - <link rel="stylesheet" media="all" href="//{{devHost}}:5001/bundle/shop.css"> | ||
41 | - {{^}} | ||
42 | - <link rel="stylesheet" media="all" href="//{{devHost}}:5001/bundle/index.css"> | ||
43 | {{/if}} | 34 | {{/if}} |
44 | - {{/if}} | ||
45 | - | ||
46 | - {{#if vue}} | 35 | + {{#ifor localCss vue}} |
47 | <link rel="stylesheet" media="all" href="//{{devHost}}:5001/bundle/{{module}}.{{page}}.css"> | 36 | <link rel="stylesheet" media="all" href="//{{devHost}}:5001/bundle/{{module}}.{{page}}.css"> |
48 | - {{/if}} | ||
49 | - {{^}} | ||
50 | - {{#if shopPage}} | ||
51 | - <link rel="stylesheet" media="all" href="//cdn.yoho.cn/m-yohobuy-node/{{version}}/shop.css"> | ||
52 | {{^}} | 37 | {{^}} |
53 | - <link rel="stylesheet" media="all" href="//cdn.yoho.cn/m-yohobuy-node/{{version}}/index.css"> | ||
54 | - {{/if}} | 38 | + <link rel="stylesheet" media="all" href="//{{devHost}}:5001/bundle/index.css"> |
39 | + {{/ifor}} | ||
40 | + {{^}} | ||
55 | 41 | ||
56 | - {{#if localCss}} | 42 | + {{#if localCss }} |
57 | <link rel="stylesheet" media="all" href="//cdn.yoho.cn/m-yohobuy-node/{{version}}/common.css"> | 43 | <link rel="stylesheet" media="all" href="//cdn.yoho.cn/m-yohobuy-node/{{version}}/common.css"> |
58 | - <link rel="stylesheet" media="all" href="//cdn.yoho.cn/m-yohobuy-node/{{version}}/{{module}}.{{page}}.css"> | ||
59 | {{/if}} | 44 | {{/if}} |
60 | - | ||
61 | - {{#if vue}} | 45 | + {{#ifor localCss vue}} |
62 | <link rel="stylesheet" media="all" href="//cdn.yoho.cn/m-yohobuy-node/{{version}}/{{module}}.{{page}}.css"> | 46 | <link rel="stylesheet" media="all" href="//cdn.yoho.cn/m-yohobuy-node/{{version}}/{{module}}.{{page}}.css"> |
63 | - {{/if}} | 47 | + {{^}} |
48 | + <link rel="stylesheet" media="all" href="//cdn.yoho.cn/m-yohobuy-node/{{version}}/index.css"> | ||
49 | + {{/ifor}} | ||
64 | {{/if}} | 50 | {{/if}} |
65 | <link rel="apple-touch-icon-precomposed" href="http://static.yohobuy.com/m/v1/img/touch/apple-touch-icon-144x144-precomposed-new.png"> | 51 | <link rel="apple-touch-icon-precomposed" href="http://static.yohobuy.com/m/v1/img/touch/apple-touch-icon-144x144-precomposed-new.png"> |
66 | <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)"> | 52 | <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 @@ | @@ -29,9 +29,9 @@ | ||
29 | <div class="good-detail-img"> | 29 | <div class="good-detail-img"> |
30 | <a class="good-thumb" href="{{url}}"> | 30 | <a class="good-thumb" href="{{url}}"> |
31 | {{#if @root._noLazy}} | 31 | {{#if @root._noLazy}} |
32 | - <img src="{{image default_images 235 314}}"/> | 32 | + <img src="{{image2 default_images w=235 h=314 q=60}}"/> |
33 | {{else}} | 33 | {{else}} |
34 | - <img class="lazy" data-original="{{image default_images 235 314}}"/> | 34 | + <img class="lazy" data-original="{{image2 default_images w=235 h=314 q=60}}"/> |
35 | {{/if}} | 35 | {{/if}} |
36 | </a> | 36 | </a> |
37 | {{# is_soon_sold_out}} | 37 | {{# is_soon_sold_out}} |
@@ -5,13 +5,13 @@ | @@ -5,13 +5,13 @@ | ||
5 | {{#if @first}} | 5 | {{#if @first}} |
6 | <li class="swiper-slide"> | 6 | <li class="swiper-slide"> |
7 | <a href="{{url}}"> | 7 | <a href="{{url}}"> |
8 | - <img src="{{image src 640 240}}"> | 8 | + <img src="{{image2 src w=640 h=240 q=60}}"> |
9 | </a> | 9 | </a> |
10 | </li> | 10 | </li> |
11 | {{^}} | 11 | {{^}} |
12 | <li class="swiper-slide"> | 12 | <li class="swiper-slide"> |
13 | <a href="{{url}}"> | 13 | <a href="{{url}}"> |
14 | - <img class="swiper-lazy" data-src="{{image src 640 240}}"> | 14 | + <img class="swiper-lazy" data-src="{{image2 src w=640 h=240 q=60}}"> |
15 | </a> | 15 | </a> |
16 | <div class="swiper-lazy-preloader"></div> | 16 | <div class="swiper-lazy-preloader"></div> |
17 | </li> | 17 | </li> |
@@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
2 | {{#data}} | 2 | {{#data}} |
3 | <div class="banner-list"> | 3 | <div class="banner-list"> |
4 | <a href="{{url}}"> | 4 | <a href="{{url}}"> |
5 | - <img src="{{image src 640 200}}" alt=""> | 5 | + <img src="{{image2 src w=640 h=200 q=60}}" alt=""> |
6 | </a> | 6 | </a> |
7 | </div> | 7 | </div> |
8 | {{/data}} | 8 | {{/data}} |
@@ -12,7 +12,7 @@ | @@ -12,7 +12,7 @@ | ||
12 | {{#data}} | 12 | {{#data}} |
13 | <li class="swiper-slide"> | 13 | <li class="swiper-slide"> |
14 | <a href="{{url}}"> | 14 | <a href="{{url}}"> |
15 | - <img src="{{image src 640 200}}" alt=""> | 15 | + <img src="{{image2 src w=640 h=200 q=60}}" alt=""> |
16 | </a> | 16 | </a> |
17 | </li> | 17 | </li> |
18 | {{/data}} | 18 | {{/data}} |
@@ -3,7 +3,7 @@ | @@ -3,7 +3,7 @@ | ||
3 | <div class="creative-life"> | 3 | <div class="creative-life"> |
4 | {{# big_image}} | 4 | {{# big_image}} |
5 | <a class="banner" href="{{url}}"> | 5 | <a class="banner" href="{{url}}"> |
6 | - <img class="lazy" data-original="{{image src 640 403}}"> | 6 | + <img class="lazy" data-original="{{image2 src w=640 h=403 q=60}}"> |
7 | </a> | 7 | </a> |
8 | {{/ big_image}} | 8 | {{/ big_image}} |
9 | <ul class="classify-list clearfix"> | 9 | <ul class="classify-list clearfix"> |
@@ -11,7 +11,7 @@ | @@ -11,7 +11,7 @@ | ||
11 | <li class="classify"> | 11 | <li class="classify"> |
12 | <a href="{{url}}"> | 12 | <a href="{{url}}"> |
13 | <div class="classify-logo"> | 13 | <div class="classify-logo"> |
14 | - <img class="lazy" data-original="{{image src 191 191}}"> | 14 | + <img class="lazy" data-original="{{image2 src w=191 h=191 q=60}}"> |
15 | </div> | 15 | </div> |
16 | <p class="classify-name">{{title}}</p> | 16 | <p class="classify-name">{{title}}</p> |
17 | </a> | 17 | </a> |
@@ -6,7 +6,7 @@ | @@ -6,7 +6,7 @@ | ||
6 | {{#list}} | 6 | {{#list}} |
7 | <li> | 7 | <li> |
8 | <a href="/product/sale/discount/detail?id={{id}}&channel={{@root.channel}}"> | 8 | <a href="/product/sale/discount/detail?id={{id}}&channel={{@root.channel}}"> |
9 | - <img class="lazy" data-original="{{image cover_url 640 250}}" /> | 9 | + <img class="lazy" data-original="{{image2 cover_url w=640 h=250 q=60}}" /> |
10 | <p class="discount-cont"> | 10 | <p class="discount-cont"> |
11 | <span class="discount-title">{{title}}</span> | 11 | <span class="discount-title">{{title}}</span> |
12 | <span class="discount-time {{#if warn_color}}red-color{{/if}}">{{time}}</span> | 12 | <span class="discount-time {{#if warn_color}}red-color{{/if}}">{{time}}</span> |
@@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
2 | <div class="fav-brand-swiper"> | 2 | <div class="fav-brand-swiper"> |
3 | <a class="swiper-header" href="{{link}}"> | 3 | <a class="swiper-header" href="{{link}}"> |
4 | <div class="swiper-logo"> | 4 | <div class="swiper-logo"> |
5 | - <img src="{{brandImg}}" alt=""/> | 5 | + <img src="{{image2 brandImg q=60}}" alt=""/> |
6 | </div> | 6 | </div> |
7 | <div class="brand-info"> | 7 | <div class="brand-info"> |
8 | <span class="brand-name">{{brandName}}</span> | 8 | <span class="brand-name">{{brandName}}</span> |
@@ -23,7 +23,7 @@ | @@ -23,7 +23,7 @@ | ||
23 | {{# productList}} | 23 | {{# productList}} |
24 | <li class="swiper-slide"> | 24 | <li class="swiper-slide"> |
25 | <a href="{{link}}"> | 25 | <a href="{{link}}"> |
26 | - <img class="swiper-lazy" data-src="{{imgUrl}}" alt=""/> | 26 | + <img class="swiper-lazy" data-src="{{image2 imgUrl q=60}}" alt=""/> |
27 | </a> | 27 | </a> |
28 | <div class="brand-product"> | 28 | <div class="brand-product"> |
29 | <div class="{{# discount}}price-discount{{/ discount}}"> | 29 | <div class="{{# discount}}price-discount{{/ discount}}"> |
@@ -38,4 +38,4 @@ | @@ -38,4 +38,4 @@ | ||
38 | </div> | 38 | </div> |
39 | {{/if}} | 39 | {{/if}} |
40 | </div> | 40 | </div> |
41 | -{{/ hasFavBrand}} | ||
41 | +{{/ hasFavBrand}} |
@@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
2 | <li data-id="{{fav_id}}" class="{{#if invalidGoods}}invalidGoods{{/if}}"> | 2 | <li data-id="{{fav_id}}" class="{{#if invalidGoods}}invalidGoods{{/if}}"> |
3 | <a href="{{link}}"> | 3 | <a href="{{link}}"> |
4 | <div class="fav-img-box"> | 4 | <div class="fav-img-box"> |
5 | - <img src="{{imgUrl}}" alt=""/> | 5 | + <img src="{{iamge2 imgUrl q=60}}" alt=""/> |
6 | </div> | 6 | </div> |
7 | <div class="fav-info-list"> | 7 | <div class="fav-info-list"> |
8 | <h2>{{title}}</h2> | 8 | <h2>{{title}}</h2> |
@@ -30,4 +30,4 @@ | @@ -30,4 +30,4 @@ | ||
30 | </div> | 30 | </div> |
31 | </a> | 31 | </a> |
32 | </li> | 32 | </li> |
33 | -{{/ hasFavProduct}} | ||
33 | +{{/ hasFavProduct}} |
1 | {{> common/floor-header}} | 1 | {{> common/floor-header}} |
2 | <ul class="fine-brands clearfix"> | 2 | <ul class="fine-brands clearfix"> |
3 | - {{# brands}} | 3 | + {{# brands}} |
4 | <li class="brand"> | 4 | <li class="brand"> |
5 | <a href="{{url}}"> | 5 | <a href="{{url}}"> |
6 | <div class="brand-logo"> | 6 | <div class="brand-logo"> |
7 | - <img class="lazy" data-original="{{img}}"> | 7 | + <img class="lazy" data-original="{{images img q=60}}"> |
8 | </div> | 8 | </div> |
9 | <p class="brand-name">{{name}}</p> | 9 | <p class="brand-name">{{name}}</p> |
10 | </a> | 10 | </a> |
11 | </li> | 11 | </li> |
12 | {{/ brands}} | 12 | {{/ brands}} |
13 | -</ul> | ||
13 | +</ul> |
@@ -4,7 +4,7 @@ | @@ -4,7 +4,7 @@ | ||
4 | {{# banner_image}} | 4 | {{# banner_image}} |
5 | <div class="fresh-swiper"> | 5 | <div class="fresh-swiper"> |
6 | <a href="{{url}}"> | 6 | <a href="{{url}}"> |
7 | - <img class="lazy" data-original="{{image src 640 200}}"> | 7 | + <img class="lazy" data-original="{{image2 src w=640 h=200 q=60}}"> |
8 | </a> | 8 | </a> |
9 | </div> | 9 | </div> |
10 | {{/ banner_image}} | 10 | {{/ banner_image}} |
@@ -14,7 +14,7 @@ | @@ -14,7 +14,7 @@ | ||
14 | <li class="swiper-slide"> | 14 | <li class="swiper-slide"> |
15 | <div class="img-box"> | 15 | <div class="img-box"> |
16 | <a href="{{url}}"> | 16 | <a href="{{url}}"> |
17 | - <img class="swiper-lazy" data-src="{{image default_images 235 314}}" alt=""> | 17 | + <img class="swiper-lazy" data-src="{{image2 default_images w=235 h=314 q=60}}" alt=""> |
18 | </a> | 18 | </a> |
19 | <div class="swiper-lazy-preloader"></div> | 19 | <div class="swiper-lazy-preloader"></div> |
20 | </div> | 20 | </div> |
@@ -8,7 +8,7 @@ | @@ -8,7 +8,7 @@ | ||
8 | {{# bigList}} | 8 | {{# bigList}} |
9 | <li class="swiper-slide"> | 9 | <li class="swiper-slide"> |
10 | <a href="{{url}}"> | 10 | <a href="{{url}}"> |
11 | - <img class="lazy" data-original="{{image src 640 403}}" alt="{{title}}"> | 11 | + <img class="lazy" data-original="{{image2 src w=640 h=403 q=60}}" alt="{{title}}"> |
12 | </a> | 12 | </a> |
13 | </li> | 13 | </li> |
14 | {{/ bigList}} | 14 | {{/ bigList}} |
@@ -21,7 +21,7 @@ | @@ -21,7 +21,7 @@ | ||
21 | {{^}} | 21 | {{^}} |
22 | <div class="category-swiper"> | 22 | <div class="category-swiper"> |
23 | <a href="{{url}}"> | 23 | <a href="{{url}}"> |
24 | - <img class="lazy" data-original="{{image src 640 403}}" alt="{{title}}"> | 24 | + <img class="lazy" data-original="{{image2 src w=640 h=403 q=60}}" alt="{{title}}"> |
25 | </a> | 25 | </a> |
26 | </div> | 26 | </div> |
27 | {{/if}} | 27 | {{/if}} |
@@ -33,9 +33,9 @@ | @@ -33,9 +33,9 @@ | ||
33 | <a href="{{url}}"> | 33 | <a href="{{url}}"> |
34 | <div class="img-box"> | 34 | <div class="img-box"> |
35 | {{#if @first}} | 35 | {{#if @first}} |
36 | - <img class="lazy" data-original="{{image src 258 383}}" alt=""> | 36 | + <img class="lazy" data-original="{{image2 src w=258 h=383 q=60}}" alt=""> |
37 | {{^}} | 37 | {{^}} |
38 | - <img class="lazy" data-original="{{image src 191 191}}" alt=""> | 38 | + <img class="lazy" data-original="{{image2 src w=191 h=191 q=60}}" alt=""> |
39 | {{/if}} | 39 | {{/if}} |
40 | </div> | 40 | </div> |
41 | <p class="category-name">{{title}}</p> | 41 | <p class="category-name">{{title}}</p> |
@@ -6,7 +6,7 @@ | @@ -6,7 +6,7 @@ | ||
6 | <a href="{{url}}"> | 6 | <a href="{{url}}"> |
7 | <div class="brand-logo"> | 7 | <div class="brand-logo"> |
8 | {{!--此处不使用 Lazyload 是由于安卓 UC 10 版本加载不出来--}} | 8 | {{!--此处不使用 Lazyload 是由于安卓 UC 10 版本加载不出来--}} |
9 | - <img src="{{image src 158 174}}"> | 9 | + <img src="{{image2 src w=158 h=174 q=60}}"> |
10 | </div> | 10 | </div> |
11 | <p class="brand-name">{{name}}</p> | 11 | <p class="brand-name">{{name}}</p> |
12 | </a> | 12 | </a> |
@@ -15,7 +15,7 @@ | @@ -15,7 +15,7 @@ | ||
15 | 15 | ||
16 | <li class="more"> | 16 | <li class="more"> |
17 | <a class="{{#unless image.src}}default{{/unless}}" href="{{image.url}}"> | 17 | <a class="{{#unless image.src}}default{{/unless}}" href="{{image.url}}"> |
18 | - <img class="lazy" data-original="{{image image.src 320 172}}"> | 18 | + <img class="lazy" data-original="{{image2 image.src w=320 h=172 q=60}}"> |
19 | </a> | 19 | </a> |
20 | </li> | 20 | </li> |
21 | </ul> | 21 | </ul> |
@@ -6,7 +6,7 @@ | @@ -6,7 +6,7 @@ | ||
6 | {{# list}} | 6 | {{# list}} |
7 | <li class="swiper-slide"> | 7 | <li class="swiper-slide"> |
8 | <a href="{{url}}"> | 8 | <a href="{{url}}"> |
9 | - <img src="{{image src 140 140}}" alt=""> | 9 | + <img src="{{image2 src w=140 h=140 q=60}}" alt=""> |
10 | <span class="brands-title">{{name}}</span> | 10 | <span class="brands-title">{{name}}</span> |
11 | </a> | 11 | </a> |
12 | </li> | 12 | </li> |
@@ -14,4 +14,4 @@ | @@ -14,4 +14,4 @@ | ||
14 | </ul> | 14 | </ul> |
15 | </div> | 15 | </div> |
16 | </div> | 16 | </div> |
17 | -{{/data}} | ||
17 | +{{/data}} |
1 | {{#data}} | 1 | {{#data}} |
2 | <div class="hot-category"> | 2 | <div class="hot-category"> |
3 | {{> common/floor-header-more}} | 3 | {{> common/floor-header-more}} |
4 | - | 4 | + |
5 | {{# banner}} | 5 | {{# banner}} |
6 | <a class="category-banner" href="{{url}}"> | 6 | <a class="category-banner" href="{{url}}"> |
7 | - <img class="lazy" data-original="{{src}}"> | 7 | + <img class="lazy" data-original="{{image2 src q=60}}"> |
8 | </a> | 8 | </a> |
9 | {{/ banner}} | 9 | {{/ banner}} |
10 | <ul class="category-list clearfix"> | 10 | <ul class="category-list clearfix"> |
@@ -12,11 +12,11 @@ | @@ -12,11 +12,11 @@ | ||
12 | <li> | 12 | <li> |
13 | <a href="{{url}}"> | 13 | <a href="{{url}}"> |
14 | <div class="img-box"> | 14 | <div class="img-box"> |
15 | - <img class="lazy" data-original="{{image src 140 140}}" alt=""> | 15 | + <img class="lazy" data-original="{{image2 src w=140 h=140 q=60}}" alt=""> |
16 | </div> | 16 | </div> |
17 | </a> | 17 | </a> |
18 | </li> | 18 | </li> |
19 | {{/ list}} | 19 | {{/ list}} |
20 | </ul> | 20 | </ul> |
21 | </div> | 21 | </div> |
22 | -{{/data}} | ||
22 | +{{/data}} |
@@ -2,12 +2,12 @@ | @@ -2,12 +2,12 @@ | ||
2 | <div class="hot-single"> | 2 | <div class="hot-single"> |
3 | {{> common/floor-header-more}} | 3 | {{> common/floor-header-more}} |
4 | {{> resources/new-floor-banner}} | 4 | {{> resources/new-floor-banner}} |
5 | - <div class="hot-single-goods-list" {{#background}}style="background-image: url({{image src 640 330}})"{{/background}}> | 5 | + <div class="hot-single-goods-list" {{#background}}style="background-image: url({{image2 src w=640 h=330 q=60}})"{{/background}}> |
6 | <ul> | 6 | <ul> |
7 | {{#list}} | 7 | {{#list}} |
8 | <li class="hot-single-goods"> | 8 | <li class="hot-single-goods"> |
9 | <a href="//m.yohobuy.com/product/show_{{product_skn}}"> | 9 | <a href="//m.yohobuy.com/product/show_{{product_skn}}"> |
10 | - <img src="{{image default_images 153 206}}" alt="goods" class="goods-pic"> | 10 | + <img src="{{image2 default_images w=153 h=206 q=60}}" alt="goods" class="goods-pic"> |
11 | <div class="goods-info"> | 11 | <div class="goods-info"> |
12 | <h3 class="price">¥ {{sales_price}}</h3> | 12 | <h3 class="price">¥ {{sales_price}}</h3> |
13 | <p class="view-num">{{view_num}}人</p> | 13 | <p class="view-num">{{view_num}}人</p> |
@@ -19,4 +19,4 @@ | @@ -19,4 +19,4 @@ | ||
19 | </ul> | 19 | </ul> |
20 | </div> | 20 | </div> |
21 | </div> | 21 | </div> |
22 | -{{/data}} | ||
22 | +{{/data}} |
1 | {{#appIconList}} | 1 | {{#appIconList}} |
2 | -<div class="icons-wrapper" {{#if back_image}} style="background-image:url({{image back_image 640 360}})" {{/if}}> | 2 | +<div class="icons-wrapper" {{#if back_image}} style="background-image:url({{image2 back_image w=640 h=360 q=60}})" {{/if}}> |
3 | <ul class="icons-list clearfix"> | 3 | <ul class="icons-list clearfix"> |
4 | {{#data}} | 4 | {{#data}} |
5 | - <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> | 5 | + <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> |
6 | {{/data}} | 6 | {{/data}} |
7 | </ul> | 7 | </ul> |
8 | </div> | 8 | </div> |
1 | { | 1 | { |
2 | "name": "m-yohobuy-node", | 2 | "name": "m-yohobuy-node", |
3 | - "version": "5.2.11", | 3 | + "version": "5.2.12", |
4 | "private": true, | 4 | "private": true, |
5 | "description": "A New Yohobuy Project With Express", | 5 | "description": "A New Yohobuy Project With Express", |
6 | "repository": { | 6 | "repository": { |
@@ -22,6 +22,7 @@ | @@ -22,6 +22,7 @@ | ||
22 | "body-parser": "^1.15.2", | 22 | "body-parser": "^1.15.2", |
23 | "captchapng": "0.0.1", | 23 | "captchapng": "0.0.1", |
24 | "cheerio": "^0.22.0", | 24 | "cheerio": "^0.22.0", |
25 | + "client-sessions": "^0.7.0", | ||
25 | "compression": "^1.6.2", | 26 | "compression": "^1.6.2", |
26 | "connect-multiparty": "^2.0.0", | 27 | "connect-multiparty": "^2.0.0", |
27 | "cookie-parser": "^1.4.3", | 28 | "cookie-parser": "^1.4.3", |
@@ -93,7 +94,7 @@ | @@ -93,7 +94,7 @@ | ||
93 | "yoho-handlebars": "^4.0.5", | 94 | "yoho-handlebars": "^4.0.5", |
94 | "yoho-iscroll": "^5.2.0", | 95 | "yoho-iscroll": "^5.2.0", |
95 | "yoho-jquery": "^2.2.4", | 96 | "yoho-jquery": "^2.2.4", |
96 | - "yoho-jquery-lazyload": "^1.9.8", | 97 | + "yoho-jquery-lazyload": "^1.9.9", |
97 | "yoho-jquery-qrcode": "^0.14.0", | 98 | "yoho-jquery-qrcode": "^0.14.0", |
98 | "yoho-mlellipsis": "0.0.3", | 99 | "yoho-mlellipsis": "0.0.3", |
99 | "yoho-qs": "^1.0.1", | 100 | "yoho-qs": "^1.0.1", |
@@ -4,7 +4,7 @@ | @@ -4,7 +4,7 @@ | ||
4 | <div class="infos {{#if @root.tickets}} tickets-info {{/if}}"> | 4 | <div class="infos {{#if @root.tickets}} tickets-info {{/if}}"> |
5 | <div class="basic-info" > | 5 | <div class="basic-info" > |
6 | {{#each thumbs}} | 6 | {{#each thumbs}} |
7 | - <img class="thumb {{#unless @first}}hide{{/unless}}" src="{{img}}"> | 7 | + <img class="thumb {{#unless @first}}hide{{/unless}}" src="{{image2 img q=60}}"> |
8 | {{/each}} | 8 | {{/each}} |
9 | <div class="text-info"> | 9 | <div class="text-info"> |
10 | <p class="name">{{name}}</p> | 10 | <p class="name">{{name}}</p> |
@@ -30,7 +30,7 @@ | @@ -30,7 +30,7 @@ | ||
30 | <ul id="{{id}}" data-index="{{@index}}" class="size-row clearfix {{#unless @first}}hide{{/unless}}"> | 30 | <ul id="{{id}}" data-index="{{@index}}" class="size-row clearfix {{#unless @first}}hide{{/unless}}"> |
31 | {{#each color}} | 31 | {{#each color}} |
32 | <li class="block {{#if chosed}} chosed{{/if}} {{#unless colorNum}} zero-stock{{/unless}}" data-num="{{colorNum}}">{{name}}</li> | 32 | <li class="block {{#if chosed}} chosed{{/if}} {{#unless colorNum}} zero-stock{{/unless}}" data-num="{{colorNum}}">{{name}}</li> |
33 | - {{/each}} | 33 | + {{/each}} |
34 | </ul> | 34 | </ul> |
35 | {{/each}} | 35 | {{/each}} |
36 | </div> | 36 | </div> |
@@ -116,4 +116,4 @@ | @@ -116,4 +116,4 @@ | ||
116 | <input type="hidden" name="productSku" id="productSku"> | 116 | <input type="hidden" name="productSku" id="productSku"> |
117 | <input type="hidden" name="buyNumber" id="buyNumber"> | 117 | <input type="hidden" name="buyNumber" id="buyNumber"> |
118 | </form> | 118 | </form> |
119 | -{{/ tickets}} | ||
119 | +{{/ tickets}} |
@@ -5,13 +5,13 @@ | @@ -5,13 +5,13 @@ | ||
5 | {{#if @first}} | 5 | {{#if @first}} |
6 | <li class="swiper-slide"> | 6 | <li class="swiper-slide"> |
7 | <a href="{{url}}"> | 7 | <a href="{{url}}"> |
8 | - <img src="{{image src 640 240}}"> | 8 | + <img src="{{image2 src w=640 h=240 q=60}}"> |
9 | </a> | 9 | </a> |
10 | </li> | 10 | </li> |
11 | {{^}} | 11 | {{^}} |
12 | <li class="swiper-slide"> | 12 | <li class="swiper-slide"> |
13 | <a href="{{url}}"> | 13 | <a href="{{url}}"> |
14 | - <img class="swiper-lazy" data-src="{{image src 640 240}}"> | 14 | + <img class="swiper-lazy" data-src="{{image2 src w=640 h=240 q=60}}"> |
15 | </a> | 15 | </a> |
16 | <div class="swiper-lazy-preloader"></div> | 16 | <div class="swiper-lazy-preloader"></div> |
17 | </li> | 17 | </li> |
@@ -3,7 +3,7 @@ | @@ -3,7 +3,7 @@ | ||
3 | {{#data}} | 3 | {{#data}} |
4 | <div class="banner-list"> | 4 | <div class="banner-list"> |
5 | <a href="{{url}}"> | 5 | <a href="{{url}}"> |
6 | - <img src="{{image src 640 200}}" alt=""> | 6 | + <img src="{{image2 src w=640 h=200 q=60}}" alt=""> |
7 | </a> | 7 | </a> |
8 | </div> | 8 | </div> |
9 | {{/data}} | 9 | {{/data}} |
@@ -12,7 +12,7 @@ | @@ -12,7 +12,7 @@ | ||
12 | {{#data}} | 12 | {{#data}} |
13 | <li class="swiper-slide"> | 13 | <li class="swiper-slide"> |
14 | <a href="{{url}}"> | 14 | <a href="{{url}}"> |
15 | - <img src="{{image src 640 200}}" alt=""> | 15 | + <img src="{{image2 src w=640 h=200 q=60}}" alt=""> |
16 | </a> | 16 | </a> |
17 | </li> | 17 | </li> |
18 | {{/data}} | 18 | {{/data}} |
@@ -3,7 +3,7 @@ | @@ -3,7 +3,7 @@ | ||
3 | <div class="creative-life"> | 3 | <div class="creative-life"> |
4 | {{# big_image}} | 4 | {{# big_image}} |
5 | <a class="banner" href="{{url}}"> | 5 | <a class="banner" href="{{url}}"> |
6 | - <img class="lazy" data-original="{{image src 640 403}}"> | 6 | + <img class="lazy" data-original="{{image2 src w=640 h=403 q=60}}"> |
7 | </a> | 7 | </a> |
8 | {{/ big_image}} | 8 | {{/ big_image}} |
9 | <ul class="classify-list clearfix"> | 9 | <ul class="classify-list clearfix"> |
@@ -11,7 +11,7 @@ | @@ -11,7 +11,7 @@ | ||
11 | <li class="classify"> | 11 | <li class="classify"> |
12 | <a href="{{url}}"> | 12 | <a href="{{url}}"> |
13 | <div class="classify-logo"> | 13 | <div class="classify-logo"> |
14 | - <img class="lazy" data-original="{{image src 191 191}}"> | 14 | + <img class="lazy" data-original="{{image2 src w=191 h=191 q=60}}"> |
15 | </div> | 15 | </div> |
16 | <p class="classify-name">{{title}}</p> | 16 | <p class="classify-name">{{title}}</p> |
17 | </a> | 17 | </a> |
@@ -4,7 +4,7 @@ | @@ -4,7 +4,7 @@ | ||
4 | {{# banner_image}} | 4 | {{# banner_image}} |
5 | <div class="fresh-swiper"> | 5 | <div class="fresh-swiper"> |
6 | <a href="{{url}}"> | 6 | <a href="{{url}}"> |
7 | - <img class="lazy" data-original="{{image src 640 200}}"> | 7 | + <img class="lazy" data-original="{{image2 src w=640 h=200 q=60}}"> |
8 | </a> | 8 | </a> |
9 | </div> | 9 | </div> |
10 | {{/ banner_image}} | 10 | {{/ banner_image}} |
@@ -14,7 +14,7 @@ | @@ -14,7 +14,7 @@ | ||
14 | <li class="swiper-slide"> | 14 | <li class="swiper-slide"> |
15 | <div class="img-box"> | 15 | <div class="img-box"> |
16 | <a href="{{url}}"> | 16 | <a href="{{url}}"> |
17 | - <img src="{{image default_images 235 314}}" alt=""> | 17 | + <img src="{{image2 default_images w=235 h=314 q=60}}" alt=""> |
18 | </a> | 18 | </a> |
19 | <div class="swiper-lazy-preloader"></div> | 19 | <div class="swiper-lazy-preloader"></div> |
20 | </div> | 20 | </div> |
@@ -8,7 +8,7 @@ | @@ -8,7 +8,7 @@ | ||
8 | {{# bigList}} | 8 | {{# bigList}} |
9 | <li class="swiper-slide"> | 9 | <li class="swiper-slide"> |
10 | <a href="{{url}}"> | 10 | <a href="{{url}}"> |
11 | - <img class="swiper-lazy" data-src="{{image src 640 403}}" alt="{{title}}"> | 11 | + <img class="swiper-lazy" data-src="{{image2 src w=640 h=403 q=60}}" alt="{{title}}"> |
12 | </a> | 12 | </a> |
13 | </li> | 13 | </li> |
14 | {{/ bigList}} | 14 | {{/ bigList}} |
@@ -21,7 +21,7 @@ | @@ -21,7 +21,7 @@ | ||
21 | {{^}} | 21 | {{^}} |
22 | <div class="category-swiper"> | 22 | <div class="category-swiper"> |
23 | <a href="{{url}}"> | 23 | <a href="{{url}}"> |
24 | - <img src="{{image src 640 403}}" alt="{{title}}"> | 24 | + <img src="{{image2 src w=640 h=403 q=60}}" alt="{{title}}"> |
25 | </a> | 25 | </a> |
26 | </div> | 26 | </div> |
27 | {{/if}} | 27 | {{/if}} |
@@ -33,9 +33,9 @@ | @@ -33,9 +33,9 @@ | ||
33 | <a href="{{url}}"> | 33 | <a href="{{url}}"> |
34 | <div class="img-box"> | 34 | <div class="img-box"> |
35 | {{#if @first}} | 35 | {{#if @first}} |
36 | - <img class="lazy" data-original="{{image src 258 383}}" alt=""> | 36 | + <img class="lazy" data-original="{{image2 src w=258 h=383 q=60}}" alt=""> |
37 | {{^}} | 37 | {{^}} |
38 | - <img class="lazy" data-original="{{image src 191 191}}" alt=""> | 38 | + <img class="lazy" data-original="{{image2 src w=191 h=191 q=60}}" alt=""> |
39 | {{/if}} | 39 | {{/if}} |
40 | </div> | 40 | </div> |
41 | <p class="category-name">{{title}}</p> | 41 | <p class="category-name">{{title}}</p> |
@@ -6,7 +6,7 @@ | @@ -6,7 +6,7 @@ | ||
6 | <a href="{{url}}"> | 6 | <a href="{{url}}"> |
7 | <div class="brand-logo"> | 7 | <div class="brand-logo"> |
8 | {{!--此处不使用 Lazyload 是由于安卓 UC 10 版本加载不出来--}} | 8 | {{!--此处不使用 Lazyload 是由于安卓 UC 10 版本加载不出来--}} |
9 | - <img src="{{image src 158 174}}"> | 9 | + <img src="{{image2 src w=158 h=174 q=60}}"> |
10 | </div> | 10 | </div> |
11 | <p class="brand-name">{{name}}</p> | 11 | <p class="brand-name">{{name}}</p> |
12 | </a> | 12 | </a> |
@@ -15,7 +15,7 @@ | @@ -15,7 +15,7 @@ | ||
15 | 15 | ||
16 | <li class="more"> | 16 | <li class="more"> |
17 | <a class="{{#unless image.src}}default{{/unless}}" href="{{image.url}}"> | 17 | <a class="{{#unless image.src}}default{{/unless}}" href="{{image.url}}"> |
18 | - <img src="{{image image.src 320 172}}"> | 18 | + <img src="{{image2 image.src w=320 h=172 q=60}}"> |
19 | </a> | 19 | </a> |
20 | </li> | 20 | </li> |
21 | </ul> | 21 | </ul> |
@@ -6,7 +6,7 @@ | @@ -6,7 +6,7 @@ | ||
6 | {{# list}} | 6 | {{# list}} |
7 | <li class="swiper-slide"> | 7 | <li class="swiper-slide"> |
8 | <a href="{{url}}"> | 8 | <a href="{{url}}"> |
9 | - <img src="{{image src 140 140}}" alt=""> | 9 | + <img src="{{image2 src w=140 h=140 q=60}}" alt=""> |
10 | <span class="brands-title">{{name}}</span> | 10 | <span class="brands-title">{{name}}</span> |
11 | </a> | 11 | </a> |
12 | </li> | 12 | </li> |
@@ -14,4 +14,4 @@ | @@ -14,4 +14,4 @@ | ||
14 | </ul> | 14 | </ul> |
15 | </div> | 15 | </div> |
16 | </div> | 16 | </div> |
17 | -{{/data}} | ||
17 | +{{/data}} |
1 | {{#data}} | 1 | {{#data}} |
2 | <div class="hot-category"> | 2 | <div class="hot-category"> |
3 | {{> ../common/floor-header-more}} | 3 | {{> ../common/floor-header-more}} |
4 | - | 4 | + |
5 | {{# banner}} | 5 | {{# banner}} |
6 | <a class="category-banner" href="{{url}}"> | 6 | <a class="category-banner" href="{{url}}"> |
7 | - <img class="lazy" data-original="{{src}}"> | 7 | + <img class="lazy" data-original="{{image2 src q=60}}"> |
8 | </a> | 8 | </a> |
9 | {{/ banner}} | 9 | {{/ banner}} |
10 | <ul class="category-list clearfix"> | 10 | <ul class="category-list clearfix"> |
@@ -12,11 +12,11 @@ | @@ -12,11 +12,11 @@ | ||
12 | <li> | 12 | <li> |
13 | <a href="{{url}}"> | 13 | <a href="{{url}}"> |
14 | <div class="img-box"> | 14 | <div class="img-box"> |
15 | - <img class="lazy" data-original="{{image src 140 140}}" alt=""> | 15 | + <img class="lazy" data-original="{{image2 src w=140 h=140 q=60}}" alt=""> |
16 | </div> | 16 | </div> |
17 | </a> | 17 | </a> |
18 | </li> | 18 | </li> |
19 | {{/ list}} | 19 | {{/ list}} |
20 | </ul> | 20 | </ul> |
21 | </div> | 21 | </div> |
22 | -{{/data}} | ||
22 | +{{/data}} |
@@ -2,12 +2,12 @@ | @@ -2,12 +2,12 @@ | ||
2 | <div class="hot-single"> | 2 | <div class="hot-single"> |
3 | {{> ../common/floor-header-more}} | 3 | {{> ../common/floor-header-more}} |
4 | {{> ./new-floor-banner}} | 4 | {{> ./new-floor-banner}} |
5 | - <div class="hot-single-goods-list" {{#background}}style="background-image: url({{image src 640 200}})"{{/background}}> | 5 | + <div class="hot-single-goods-list" {{#background}}style="background-image: url({{image2 src w=640 h=200 q=60}})"{{/background}}> |
6 | <ul> | 6 | <ul> |
7 | {{#list}} | 7 | {{#list}} |
8 | <li class="hot-single-goods"> | 8 | <li class="hot-single-goods"> |
9 | <a href="//m.yohobuy.com/product/show_{{product_skn}}"> | 9 | <a href="//m.yohobuy.com/product/show_{{product_skn}}"> |
10 | - <img src="{{image default_images 153 206}}" alt="goods" class="goods-pic"> | 10 | + <img src="{{image2 default_images w=153 h=206 q=60}}" alt="goods" class="goods-pic"> |
11 | <div class="goods-info"> | 11 | <div class="goods-info"> |
12 | <h3 class="price">¥ {{sales_price}}</h3> | 12 | <h3 class="price">¥ {{sales_price}}</h3> |
13 | <p class="view-num">{{view_num}}人</p> | 13 | <p class="view-num">{{view_num}}人</p> |
@@ -19,4 +19,4 @@ | @@ -19,4 +19,4 @@ | ||
19 | </ul> | 19 | </ul> |
20 | </div> | 20 | </div> |
21 | </div> | 21 | </div> |
22 | -{{/data}} | ||
22 | +{{/data}} |
1 | {{#appIconList}} | 1 | {{#appIconList}} |
2 | -<div class="icons-wrapper" {{#if back_image}} style="background-image:url({{back_image}})" {{/if}}> | 2 | +<div class="icons-wrapper" {{#if back_image}} style="background-image:url({{image2 back_image q=60}})" {{/if}}> |
3 | <ul class="icons-list clearfix"> | 3 | <ul class="icons-list clearfix"> |
4 | {{#data}} | 4 | {{#data}} |
5 | - <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> | 5 | + <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> |
6 | {{/data}} | 6 | {{/data}} |
7 | </ul> | 7 | </ul> |
8 | </div> | 8 | </div> |
@@ -3,28 +3,28 @@ | @@ -3,28 +3,28 @@ | ||
3 | {{> ../common/floor-header-more}} | 3 | {{> ../common/floor-header-more}} |
4 | {{#list.[0]}} | 4 | {{#list.[0]}} |
5 | <a href="{{url}}" class="float-container"> | 5 | <a href="{{url}}" class="float-container"> |
6 | - <img class="lazy left" data-original="{{image src 268 360}}" alt="left"> | 6 | + <img class="lazy left" data-original="{{image2 src w=268 h=360 q=60}}" alt="left"> |
7 | </a> | 7 | </a> |
8 | {{/list.[0]}} | 8 | {{/list.[0]}} |
9 | {{#list.[1]}} | 9 | {{#list.[1]}} |
10 | <a href="{{url}}" class="float-container"> | 10 | <a href="{{url}}" class="float-container"> |
11 | - <img class="lazy right" data-original="{{image src 186 180}}" alt="right1"> | 11 | + <img class="lazy right" data-original="{{image2 src w=186 h=180 q=60}}" alt="right1"> |
12 | </a> | 12 | </a> |
13 | {{/list.[1]}} | 13 | {{/list.[1]}} |
14 | {{#list.[2]}} | 14 | {{#list.[2]}} |
15 | <a href="{{url}}" class="float-container"> | 15 | <a href="{{url}}" class="float-container"> |
16 | - <img class="lazy right" data-original="{{image src 186 180}}" alt="right2"> | 16 | + <img class="lazy right" data-original="{{image2 src w=186 h=180 q=60}}" alt="right2"> |
17 | </a> | 17 | </a> |
18 | {{/list.[2]}} | 18 | {{/list.[2]}} |
19 | {{#list.[3]}} | 19 | {{#list.[3]}} |
20 | <a href="{{url}}" class="float-container"> | 20 | <a href="{{url}}" class="float-container"> |
21 | - <img class="lazy right" data-original="{{image src 186 180}}" alt="right3"> | 21 | + <img class="lazy right" data-original="{{image2 src w=186 h=180 q=60}}" alt="right3"> |
22 | </a> | 22 | </a> |
23 | {{/list.[3]}} | 23 | {{/list.[3]}} |
24 | {{#list.[4]}} | 24 | {{#list.[4]}} |
25 | <a href="{{url}}" class="float-container"> | 25 | <a href="{{url}}" class="float-container"> |
26 | - <img class="lazy right" data-original="{{image src 186 180}}" alt="right4"> | 26 | + <img class="lazy right" data-original="{{image2 src w=186 h=180 q=60}}" alt="right4"> |
27 | </a> | 27 | </a> |
28 | {{/list.[4]}} | 28 | {{/list.[4]}} |
29 | </div> | 29 | </div> |
30 | -{{/data}} | ||
30 | +{{/data}} |
1 | {{#data}} | 1 | {{#data}} |
2 | <div class="best-week"> | 2 | <div class="best-week"> |
3 | {{> ../common/floor-header-more}} | 3 | {{> ../common/floor-header-more}} |
4 | - | 4 | + |
5 | <ul class="six-lines-floor clearfix"> | 5 | <ul class="six-lines-floor clearfix"> |
6 | {{# list}} | 6 | {{# list}} |
7 | <li> | 7 | <li> |
8 | <a href="{{url}}"> | 8 | <a href="{{url}}"> |
9 | <div class="img-box"> | 9 | <div class="img-box"> |
10 | - <img class="lazy" data-original="{{image src 320 154}}" alt=""> | 10 | + <img class="lazy" data-original="{{image2 src w=320 h=154 q=60}}" alt=""> |
11 | </div> | 11 | </div> |
12 | </a> | 12 | </a> |
13 | </li> | 13 | </li> |
14 | {{/ list}} | 14 | {{/ list}} |
15 | </ul> | 15 | </ul> |
16 | </div> | 16 | </div> |
17 | -{{/data}} | ||
17 | +{{/data}} |
@@ -3,6 +3,10 @@ | @@ -3,6 +3,10 @@ | ||
3 | * @author: liangzhifeng<zhifeng.liang@yoho.cn> | 3 | * @author: liangzhifeng<zhifeng.liang@yoho.cn> |
4 | * @date: 2015/10/12 | 4 | * @date: 2015/10/12 |
5 | */ | 5 | */ |
6 | +// 加载css | ||
7 | +require('channel/home.page.css'); | ||
8 | + | ||
9 | + | ||
6 | var $ = require('yoho-jquery'), | 10 | var $ = require('yoho-jquery'), |
7 | Swiper = require('yoho-swiper'), | 11 | Swiper = require('yoho-swiper'), |
8 | lazyLoad = require('yoho-jquery-lazyload'), | 12 | lazyLoad = require('yoho-jquery-lazyload'), |
public/js/common/helpers/image2.js
0 → 100644
1 | +module.exports = function(url, opts) { | ||
2 | + if (url) { | ||
3 | + let params = opts.hash; | ||
4 | + let urls = url.split('?'); | ||
5 | + let query = urls[1] || ''; | ||
6 | + let uri = urls[0]; | ||
7 | + | ||
8 | + if (uri.indexOf('http:') === 0) { | ||
9 | + uri = uri.replace('http:', ''); | ||
10 | + } | ||
11 | + | ||
12 | + if (query) { | ||
13 | + query = query.replace(/{width}/g, params.w).replace(/{height}/g, params.h).replace(/{mode}/g, (params.mode || 2)); | ||
14 | + | ||
15 | + if (query.indexOf('imageView2') === 0) { | ||
16 | + if (params.q && query.indexOf('/q/') > 0) { | ||
17 | + query = query.replace(/\/q\/\d+/g, '/q/' + params.q); | ||
18 | + } else { | ||
19 | + query += '/q/' + params.q; | ||
20 | + } | ||
21 | + } else if (query.indexOf('imageMogr2') === 0) { | ||
22 | + if (params.q && query.indexOf('/quality/') > 0) { | ||
23 | + query = query.replace(/\/quality\/\d+/g, '/quality/' + params.q); | ||
24 | + } else { | ||
25 | + query += '/quality/' + params.q; | ||
26 | + } | ||
27 | + } | ||
28 | + } else { | ||
29 | + query = 'imageView2/2/interlace/1/q/' + (params.q || 75); | ||
30 | + } | ||
31 | + return uri + '?' + query; | ||
32 | + } else { | ||
33 | + return url; | ||
34 | + } | ||
35 | +}; |
@@ -3,6 +3,7 @@ | @@ -3,6 +3,7 @@ | ||
3 | * @author: xuqi<qi.xu@yoho.cn> | 3 | * @author: xuqi<qi.xu@yoho.cn> |
4 | * @date: 2015/10/13 | 4 | * @date: 2015/10/13 |
5 | */ | 5 | */ |
6 | +require('guang/info-index.page.css'); | ||
6 | 7 | ||
7 | var $ = require('yoho-jquery'), | 8 | var $ = require('yoho-jquery'), |
8 | ellipsis = require('yoho-mlellipsis'), | 9 | ellipsis = require('yoho-mlellipsis'), |
@@ -362,7 +362,8 @@ function search(opt) { | @@ -362,7 +362,8 @@ function search(opt) { | ||
362 | params = { | 362 | params = { |
363 | type: navType, | 363 | type: navType, |
364 | order: nav.order, | 364 | order: nav.order, |
365 | - page: page | 365 | + page: page, |
366 | + noLazy: true | ||
366 | }; | 367 | }; |
367 | 368 | ||
368 | if (shopId) { | 369 | if (shopId) { |
@@ -454,8 +455,8 @@ function search(opt) { | @@ -454,8 +455,8 @@ function search(opt) { | ||
454 | } | 455 | } |
455 | 456 | ||
456 | if (firstScreen) { | 457 | if (firstScreen) { |
457 | - // 如果首屏加载了,则去掉6条记录 | ||
458 | - params.start = 6; | 458 | + // 如果首屏加载了,则去掉12条记录 |
459 | + params.start = 12; | ||
459 | } | 460 | } |
460 | 461 | ||
461 | $.extend(setting, defaultOpt, params); | 462 | $.extend(setting, defaultOpt, params); |
@@ -988,9 +989,9 @@ $listNav.on('touchend touchcancel', function(e) { | @@ -988,9 +989,9 @@ $listNav.on('touchend touchcancel', function(e) { | ||
988 | 989 | ||
989 | function scrollHandler() { | 990 | function scrollHandler() { |
990 | 991 | ||
991 | - // 当scroll到1/4$goodsContainer高度后继续请求下一页数据 | 992 | + // 当scroll到1/2$goodsContainer高度后继续请求下一页数据 |
992 | if ($(window).scrollTop() + winH > | 993 | if ($(window).scrollTop() + winH > |
993 | - $(document).height() - 0.25 * $goodsContainer.height()) { | 994 | + $(document).height() - 0.5 * $goodsContainer.height()) { |
994 | search(); | 995 | search(); |
995 | } | 996 | } |
996 | } | 997 | } |
@@ -1073,10 +1074,15 @@ if ($brandHeader.length > 0) { | @@ -1073,10 +1074,15 @@ if ($brandHeader.length > 0) { | ||
1073 | }); | 1074 | }); |
1074 | } | 1075 | } |
1075 | 1076 | ||
1076 | -// 初始请求最新第一页数据 | ||
1077 | -setTimeout(function() { | ||
1078 | - search(); | ||
1079 | -}, 500); | 1077 | +var initialData = false; |
1078 | + | ||
1079 | +$(window).one('scroll', function() { | ||
1080 | + // 初始请求最新第一页数据 | ||
1081 | + if (!initialData) { | ||
1082 | + search(); | ||
1083 | + initialData = true; | ||
1084 | + } | ||
1085 | +}); | ||
1080 | 1086 | ||
1081 | $listNav.on('touchstart', 'li', function() { | 1087 | $listNav.on('touchstart', 'li', function() { |
1082 | $listNav.find('li').removeClass('bytouch'); | 1088 | $listNav.find('li').removeClass('bytouch'); |
@@ -40,7 +40,6 @@ shopCoupon = { | @@ -40,7 +40,6 @@ shopCoupon = { | ||
40 | $.ajax({ | 40 | $.ajax({ |
41 | method: 'GET', | 41 | method: 'GET', |
42 | url: _url, | 42 | url: _url, |
43 | - async: false, | ||
44 | data: { | 43 | data: { |
45 | shopId: that.common.shopId, | 44 | shopId: that.common.shopId, |
46 | brandId: that.common.brandId, | 45 | brandId: that.common.brandId, |
@@ -126,7 +125,6 @@ shopCoupon = { | @@ -126,7 +125,6 @@ shopCoupon = { | ||
126 | $.ajax({ | 125 | $.ajax({ |
127 | method: 'POST', | 126 | method: 'POST', |
128 | url: '/product/index/userCoupon', | 127 | url: '/product/index/userCoupon', |
129 | - async: false, | ||
130 | data: { | 128 | data: { |
131 | couponID: code, | 129 | couponID: code, |
132 | uid: $self.common.uid | 130 | uid: $self.common.uid |
public/scss/channel/home.page.css
0 → 100644
1 | + @import "../layout/_loading.css"; | ||
2 | + @import "../layout/_swiper.css"; | ||
3 | + | ||
4 | + @import "../common/_filter.css"; | ||
5 | + @import "../common/_good.css"; | ||
6 | + @import "../common/_loading.css"; | ||
7 | + @import "../common/_suspend-home.css"; | ||
8 | + | ||
9 | + @import "_banner-bottom.css"; | ||
10 | + @import "_banner-center.css"; | ||
11 | + @import "_banner-top.css"; | ||
12 | + @import "_brand.css"; | ||
13 | + @import "_cate.css"; | ||
14 | + @import "_creative-life.css"; | ||
15 | + @import "_divide-image.css"; | ||
16 | + @import "_fine-brands.css"; | ||
17 | + @import "_floor-header.css"; | ||
18 | + @import "_footer-tab.css"; | ||
19 | + @import "_fresh-only.css"; | ||
20 | + @import "_goods-category.css"; | ||
21 | + @import "_home-header.css"; | ||
22 | + @import "_home.css"; | ||
23 | + @import "_hot-brands.css"; | ||
24 | + @import "_hot-category.css"; | ||
25 | + @import "_hot-single.css"; | ||
26 | + @import "_icons-enter.css"; | ||
27 | + @import "_index.css"; | ||
28 | + @import "_left-right.css"; | ||
29 | + @import "_maybe-like.css"; | ||
30 | + @import "_new-first.css"; | ||
31 | + @import "_new-user-floor.css"; | ||
32 | + @import "_notice.css"; | ||
33 | + @import "_plus-star.css"; | ||
34 | + @import "_sale-floor.css"; | ||
35 | + @import "_search-input.css"; | ||
36 | + @import "_search.css"; | ||
37 | + @import "_seckill.css"; | ||
38 | + @import "_shop-recommand.css"; | ||
39 | + @import "_side-nav.css"; | ||
40 | + @import "_six-lines-floor.css"; | ||
41 | + @import "_three-picture.css"; | ||
42 | + @import "_thumb-row.css"; | ||
43 | + @import "_trend-topics.css"; | ||
44 | + @import "_trend-tops.css"; | ||
45 | + @import "_trendsetter-collocation.css"; | ||
46 | + @import "_two-column-goods.css"; | ||
47 | + @import "_vip-only.css"; |
@@ -6,6 +6,7 @@ | @@ -6,6 +6,7 @@ | ||
6 | @import "layout/common"; | 6 | @import "layout/common"; |
7 | @import "layout/header"; | 7 | @import "layout/header"; |
8 | @import "layout/footer"; | 8 | @import "layout/footer"; |
9 | +@import "layout/utils"; | ||
9 | 10 | ||
10 | @import "common/data-bind"; | 11 | @import "common/data-bind"; |
11 | @import "common/suspend-cart"; | 12 | @import "common/suspend-cart"; |
@@ -38,6 +38,7 @@ | @@ -38,6 +38,7 @@ | ||
38 | img { | 38 | img { |
39 | display: block; | 39 | display: block; |
40 | width: 100%; | 40 | width: 100%; |
41 | + min-height: 400px; | ||
41 | } | 42 | } |
42 | } | 43 | } |
43 | 44 | ||
@@ -78,7 +79,7 @@ | @@ -78,7 +79,7 @@ | ||
78 | &.tip, &.special-topic { | 79 | &.tip, &.special-topic { |
79 | background-image: url('/guang/info/tip.png'); | 80 | background-image: url('/guang/info/tip.png'); |
80 | } | 81 | } |
81 | - | 82 | + |
82 | &.topic { | 83 | &.topic { |
83 | background-image: url('/guang/info/topic.png'); | 84 | background-image: url('/guang/info/topic.png'); |
84 | } | 85 | } |
public/scss/guang/index-editor.page.css
0 → 100644
public/scss/guang/index.page.css
0 → 100644
1 | +@import "../layout/_loading.css"; | ||
2 | +@import "../layout/_swiper.css"; | ||
3 | + | ||
4 | +@import "../common/_good.css"; | ||
5 | +@import "../common/_loading.css"; | ||
6 | +@import "../common/_suspend-home.css"; | ||
7 | + | ||
8 | +@import "../channel/_footer-tab.css"; | ||
9 | + | ||
10 | +@import "_info-list.css"; | ||
11 | +@import "_info.css"; | ||
12 | +@import "_tvls.css"; |
public/scss/guang/info-index.page.css
0 → 100644
1 | +'use strict'; | ||
2 | + | ||
1 | const url = require('url'); | 3 | const url = require('url'); |
2 | const config = require('../config/common'); | 4 | const config = require('../config/common'); |
3 | const assetUrl = config.assetUrl; | 5 | const assetUrl = config.assetUrl; |
@@ -5,5 +7,58 @@ const assetUrl = config.assetUrl; | @@ -5,5 +7,58 @@ const assetUrl = config.assetUrl; | ||
5 | module.exports = { | 7 | module.exports = { |
6 | imgSrc: function(imgSrc) { | 8 | imgSrc: function(imgSrc) { |
7 | return url.resolve(assetUrl, imgSrc); | 9 | return url.resolve(assetUrl, imgSrc); |
10 | + }, | ||
11 | + image2: function(url, opts) { | ||
12 | + if (url) { | ||
13 | + let params = opts.hash; | ||
14 | + let urls = url.split('?'); | ||
15 | + let query = urls[1] || ''; | ||
16 | + let uri = urls[0]; | ||
17 | + | ||
18 | + if (uri.indexOf('http:') === 0) { | ||
19 | + uri = uri.replace('http:', ''); | ||
20 | + } | ||
21 | + | ||
22 | + if (query) { | ||
23 | + query = query.replace(/{width}/g, params.w).replace(/{height}/g, params.h).replace(/{mode}/g, (params.mode || 2)); | ||
24 | + | ||
25 | + if (query.indexOf('imageView2') === 0) { | ||
26 | + if (params.q && query.indexOf('/q/') > 0) { | ||
27 | + query = query.replace(/\/q\/\d+/g, '/q/' + params.q); | ||
28 | + } else { | ||
29 | + query += '/q/' + params.q; | ||
30 | + } | ||
31 | + } else if (query.indexOf('imageMogr2') === 0) { | ||
32 | + if (params.q && query.indexOf('/quality/') > 0) { | ||
33 | + query = query.replace(/\/quality\/\d+/g, '/quality/' + params.q); | ||
34 | + } else { | ||
35 | + query += '/quality/' + params.q; | ||
36 | + } | ||
37 | + } | ||
38 | + } else { | ||
39 | + query = 'imageView2/2/interlace/1/q/' + (params.q || 75); | ||
40 | + } | ||
41 | + return uri + '?' + query; | ||
42 | + } else { | ||
43 | + return url; | ||
44 | + } | ||
45 | + }, | ||
46 | + ifor: function() { | ||
47 | + var args = Array.prototype.slice.call(arguments); | ||
48 | + var opt = args[args.length - 1]; | ||
49 | + var isTrue = false; | ||
50 | + | ||
51 | + for (var i = 0; i < args.length - 1; i++) { | ||
52 | + if (args[i]) { | ||
53 | + isTrue = true; | ||
54 | + break; | ||
55 | + } | ||
56 | + } | ||
57 | + | ||
58 | + if (isTrue) { | ||
59 | + return opt.fn(this); | ||
60 | + } else { | ||
61 | + return opt.inverse(this); | ||
62 | + } | ||
8 | } | 63 | } |
9 | }; | 64 | }; |
-
Please register or login to post a comment