Authored by 周少峰

Merge branch 'feature/headHtmlCache' into feature/qps

... ... @@ -11,9 +11,11 @@ const _ = require('lodash');
const api = global.yoho.API;
const serviceApi = global.yoho.ServiceAPI;
const helpers = global.yoho.helpers;
const keyPrefix = 'COMMON_HEADER_';
const cache = global.yoho.cache;
const logger = global.yoho.logger;
const Handlebars = require('handlebars');
const path = require('path');
const headerHtml = require('fs').readFileSync(path.resolve(__dirname, '../views/partial/headerNew.hbs')).toString();
const template = Handlebars.compile(headerHtml);
/**
* 获取菜单
* @param undefined
... ... @@ -216,18 +218,12 @@ const getHeaderNavAsync = () => {
* @param {String} 频道类型
* @return {promise}
*/
let cacheHeaderHtml = '';
async function requestHeaderData(type) {
let resData = {};
type = type || 'boys';
let headerKey = `${keyPrefix}${type}`;
let header = await cache.get(headerKey).catch(() => {
logger.error(`header data get cache error`);
return {};
});
if (_.isEmpty(header)) {
if (_.isEmpty(cacheHeaderHtml)) {
let channelNum = (function() {
switch (type) {
case 'boys':
... ... @@ -268,16 +264,23 @@ async function requestHeaderData(type) {
});
}
resData = template(resData);
if (res[0] && res[0].data && res[1] && res[1].data) {
cache.set(headerKey, resData, 300);
cacheHeaderHtml = resData;
}
} else {
resData = JSON.parse(header);
resData = cacheHeaderHtml;
}
return resData;
};
return Promise.resolve({headerData: resData});
}
setInterval(function() {
cacheHeaderHtml = '';
}, 60 * 10 * 1000);
module.exports = {
requestHeaderData
}
};
... ...
{{# headerData}}
<div id="yoho-header" class="yoho-header" data-type="{{headType}}">
<div class="tool-wrapper clearfix" data-role="tool-wrapper">
<div class="center-content">
<!--<div class="yoho-group-map left">
<span class="icon-hamburger"></span>
<a href="//www.yohobuy.com"{{#if @root.pageNoFollow}} rel="nofollow"{{/if}}>YOHO!BUY 有货</a>
{{#if yohoGroup}}
<ul class="yoho-group-list">
{{# yohoGroup}}
<li>
<a href="{{link}}" class="yoho-group"{{#if @root.pageNoFollow}} rel="nofollow"{{/if}} data-en="{{en}}" data-cn="{{cn}}">{{en}}</a>
</li>
{{/ yohoGroup}}
</ul>
{{/if}}
</div>-->
<div class="left swindle-info">
<span class="icon-note"></span>
<a href="//www.yohobuy.com/help/detail?id=103&contId=147"{{#if @root.pageNoFollow}} rel="nofollow"{{/if}} target="_blank">
关于防诈骗的重要提醒
</a>
</div>
{{#unless @root.pc.common.removeCertTip}}
<div class="left yoho-cert-tip"></div>
{{/unless}}
<div class="yoho-buy-tools right">
<ul>
<li id="loginBox">
<span class="hi">Hi~</span>
[ <a id="signin-url" href="//www.yohobuy.com/signin.html" class="loginbar" rel="nofollow">请登录</a> ]
[ <a id="reg-url" href="//www.yohobuy.com/reg.html" class="registbar" rel="nofollow">免费注册</a> ]
</li>
<li class="myyoho" id="myYohoBox">
<span class="tag-seprate"></span>
<a href="//www.yohobuy.com/home?t=1453340799.4986" rel="nofollow">MY有货</a>
<span class="icon-bottomarrow"></span>
{{#unless @root.pc.common.disMyYohoHover}}
<div class="simple-user-center"></div>
{{/unless}}
</li>
<li class="myorder">
<span class="tag-seprate"></span>
<span class="icon-papers"></span>
<a href="//www.yohobuy.com/home/orders?t=1453168898.0176" rel="nofollow">我的订单</a>
</li>
<li class="mycollect">
<span class="tag-seprate"></span>
<span class="icon-heart"></span>
<a href="//www.yohobuy.com/home/favorite?t=1453168898.0176" rel="nofollow">我的收藏</a>
</li>
<li class="message">
<span class="tag-seprate"></span>
<span class="icon-mail"></span>
<a href="//www.yohobuy.com/home/message?t=1453168898.0176" rel="nofollow">消息</a>
</li>
<li class="help nav-drop-down-container">
<span class="tag-seprate"></span>
<span class="iconfont">&#xe702;</span>
<a href="#">客户服务</a>
<ul class="nav-drop-down">
<li>
<a href="{{#if @root.pc.clientService.new}}http://chat8.live800.com/live800/chatClient/chatbox.jsp?companyID=620092&configID=149091&jid=8732423409{{else}}//www.yohobuy.com/service/client{{/if}}"{{#if @root.pageNoFollow}} rel="nofollow"{{/if}} target="_blank">在线客服</a>
</li>
<li>
<a href="//www.yohobuy.com/help"{{#if @root.pageNoFollow}} rel="nofollow"{{/if}}>帮助中心</a>
</li>
</ul>
</li>
<li class="we-chat download-code">
<span class="tag-seprate"></span>
<span class="iconfont">&#xe704;</span>
<a href="">关注有货</a>
<div class="download-app-box">
<div class="we-chat-img code-img"></div>
<h5 class="qr-words">微信扫一扫</h5>
<h5 class="qr-words">关注公众号,赢免单</h5>
</div>
</li>
<li class="phoneapp download-code" id="phoneApp">
<span class="tag-seprate"></span>
<span class="icon-phone"></span>
<a href="//www.yohobuy.com/download/app"{{#if @root.pageNoFollow}} rel="nofollow"{{/if}}>手机版</a>
<div class="download-app-box">
<div class="qr-img code-img"></div>
<h5 class="qr-words">下载手机客户端</h5>
<h5 class="qr-more">
<a href="javascript:void(0);">更多客户端</a>
</h5>
</div>
</li>
</ul>
</div>
</div>
</div>
<div class="head-wrapper clearfix">
<div class="center-content">
<div class="outlets-logo"></div>
<div class="main-logo"><a href="//www.yohobuy.com/" class="main-link"></a></div>
<ul class="main-nav-list">
{{# navbars}}
<li class="{{type}}"{{#if ico}}
style="background: url({{image2 ico w=54 h=32}}) no-repeat center center"{{/if}}>
{{#if ico}}
<a href="{{link}}"{{#if isNewPage}} target="_blank"{{/if}} class="menu-ico"{{#if @root.pageNoFollow}} rel="nofollow"{{/if}}></a>
{{^}}
<h5 class="name-cn">
<a href="{{link}}"{{#if isNewPage}} target="_blank"{{/if}}{{#if @root.pageNoFollow}} rel="nofollow"{{/if}}>{{cn}}</a>
</h5>
<h5 class="name-en">
<a href="{{link}}"{{#if isNewPage}} target="_blank"{{/if}}{{#if @root.pageNoFollow}} rel="nofollow"{{/if}}>{{en}}</a>
</h5>
{{/if}}
</li>
{{/ navbars}}
</ul>
<div class="func-area hide">
{{#unless @root.pc.common.disSearchAssociation}}
<ul class="search-suggest"></ul>
{{/unless}}
<ul class="search-suggest-history"></ul>
<div class="search-2016">
<form action="//search.yohobuy.com" method="get" id="search-form">
<input type="hidden" id="defaultsearch" value="{{defaultSearch}}">
<input class="search-key" type="text" name="query" id="query-key" autocomplete="off" x-webkit-speech="" lang="zh-CN" x-webkit-grammar="builtin:translate" value="" maxlength="30">
<a class="search-btn" href="javascript:submitSearch();"></a>
</form>
<ul class="search-hot">
{{#hotTerms}}
<li>
<a style="display: block;" href="{{href}}" title="{{content}}"
act="{{href}}"{{#if @root.pageNoFollow}} rel="nofollow"{{/if}} target="_blank">
<span class="searchvalue">{{content}}</span>
</a>
</li>
{{/hotTerms}}
</ul>
</div>
<div class="go-cart">
<a href="//www.yohobuy.com/cart/cart">
<span class="iconfont ">&#xe600;</span>
{{#unless @root.pc.common.removeCartCount}}
<span class="goods-num-tip hide">0</span>
{{/unless}}
</a>
{{#unless @root.pc.common.disCartHover}}
<div class="mini-cart-wrapper">
<div class="loading-cart">
<h3>加载中,请稍后</h3>
</div>
<div class="empty-cart">
<h3>您的购物车暂无商品</h3>
</div>
</div>
{{/unless}}
</div>
</div>
</div>
</div>
<div class="nav-wrapper clearfix">
<div class="center-content">
{{# subNavGroup}}
<ul class="sub-nav-list {{subType}}">
{{# subNav}}
<li {{#if thirdNav}}class="contain-third"{{/if}}>
<a href="{{link}}"{{#if @root.pageNoFollow}} rel="nofollow"{{/if}}>{{name}}
{{#if isNew}}
<span class="newlogo"></span>
{{/if}}
</a>
{{#if thirdNav}}
<div class="third-nav-wrapper">
<div class="center-content">
<dl class="hide-list hide">
{{# thirdNav}}
<dt>
<h3 class=""><a href="{{link}}"{{#if @root.pageNoFollow}} rel="nofollow"{{/if}}>{{title}}</a></h3>
</dt>
{{#brandItems}}
<dd>
<a href="{{link}}"{{#if hot}}
class="hot"{{/if}}{{#if @root.pageNoFollow}} rel="nofollow"{{/if}}>{{brandName}}</a>
</dd>
{{/brandItems}}
{{/thirdNav}}
</dl>
<div class="show-detail" data-code="{{imgCode}}">
<a{{#if @root.pageNoFollow}} rel="nofollow"{{/if}}><img src="data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP///93d3f///yH5BAEAAAMALAAAAAABAAEAAAICVAEAOw=="></a>
<a class="title">热门小物优选</a>
</div>
</div>
</div>
{{/if}}
</li>
{{/ subNav}}
</ul>
{{/ subNavGroup}}
</div>
</div>
</div>
<div id="hide-template">
<script type="text/html" id="header-login-info-tpl">
<span>Hi~ <a href="\{{usercenter}}" class="nick-name">\{{nickname}}</a></span>
&nbsp;[ <a href="\{{signout}}">退出</a> ]
</script>
<script type="text/html" id="simple-account-info-tpl">
<div class="account-info-header">
<div class="user-img">
\{{#if headIco}}
<img src="\{{headIco}}">
\{{/if}}
</div>
<div class="user-name">
<a href="//www.yohobuy.com/home?t=\{{random}}">\{{profileName}}</a>
</div>
<h4 class="user-level">
VIP: <span>\{{curTitle}}</span>
</h4>
\{{#unless vip3}}
<div class="level-detail">
<div class="level-view-bar">
<div class="text-span">
\{{curYearCost}}/\{{nextVipNeedCost}}
</div>
<p class="\{{#if curYearCostPer}}integrate\{{/if}}" style="width: \{{curYearCostPer}}%;"></p>
</div>
<span>\{{nextVipTitle}}</span>
</div>
\{{/unless}}
</div>
<ul class="account-info-content">
<li>
<a href="//www.yohobuy.com/home/orders?t=\{{timestamp}}">待处理的订单</a>
<span class="right">\{{order}}</span>
</li>
<li>
<a href="//www.yohobuy.com/home/favorite?t=\{{timestamp}}">我的收藏</a>
<span class="right"></span>
</li>
<li>
<a href="//www.yohobuy.com/home/coupons?t=\{{timestamp}}">我的优惠券</a>
<span class="right">\{{coupon}}</span>
</li>
<li>
<a href="//www.yohobuy.com/home/currency?t=\{{timestamp}}">我的有货币</a>
<span class="right">\{{coin}}</span>
</li>
<li>
<a href="//www.yohobuy.com/home/returns?t=\{{timestamp}}">我的退货换货</a>
<span class="right">\{{return}}</span>
</li>
</ul>
<div class="account-info-footer">
<a href="//www.yohobuy.com/home/user?t=\{{timestamp}}">完善资料
{{#unless @root.pc.user.removeStudentIdentification}}
<span>(学生认证)</span>
{{/unless}}
</a>
</div>
</script>
<script type="text/html" id="search-suggest-tml">
\{{#data}}
<li>
<a style="display: block;" href="\{{href}}" class="clearfix clear search-item" title="\{{keyword}}"
act="\{{href}}">
<span class="searchvalue">\{{keyword}}</span>
<span class="valuenum">约\{{count}}个商品</span>
</a>
</li>
\{{/data}}
</script>
<script type="text/html" id="search-suggest-history">
\{{#if data}}<p class="search-suggest-title">最近搜过<a class="search-del" href="#">清空</a></p>
\{{#data}}
<li>
<a style="display: block;" href="\{{href}}" class="clearfix clear search-item" title="\{{keyword}}"
act="\{{href}}">
<span class="searchvalue">\{{keyword}}</span>
</a>
</li>
\{{/data}}
\{{/if}}
</script>
</div>
<input id="api-domain" type="hidden" value="{{apiDomain}}">
<div class="code-down-box">
<div class="code-img"></div>
<h5 class="code-title">下载手机客户端</h5>
<i class="iconfont icon-del"></i>
</div>
{{/ headerData}}
{{{headerData}}}
... ...
{{# headerData}}
<div id="yoho-header" class="yoho-header" data-type="{{headType}}">
<div class="tool-wrapper clearfix" data-role="tool-wrapper">
<div class="center-content">
<!--<div class="yoho-group-map left">
<span class="icon-hamburger"></span>
<a href="//www.yohobuy.com"{{#if @root.pageNoFollow}} rel="nofollow"{{/if}}>YOHO!BUY 有货</a>
{{#if yohoGroup}}
<ul class="yoho-group-list">
{{# yohoGroup}}
<li>
<a href="{{link}}" class="yoho-group"{{#if @root.pageNoFollow}} rel="nofollow"{{/if}} data-en="{{en}}" data-cn="{{cn}}">{{en}}</a>
</li>
{{/ yohoGroup}}
</ul>
{{/if}}
</div>-->
<div class="left swindle-info">
<span class="icon-note"></span>
<a href="//www.yohobuy.com/help/detail?id=103&contId=147"{{#if @root.pageNoFollow}} rel="nofollow"{{/if}} target="_blank">
关于防诈骗的重要提醒
</a>
</div>
{{#unless @root.pc.common.removeCertTip}}
<div class="left yoho-cert-tip"></div>
{{/unless}}
<div class="yoho-buy-tools right">
<ul>
<li id="loginBox">
<span class="hi">Hi~</span>
[ <a id="signin-url" href="//www.yohobuy.com/signin.html" class="loginbar" rel="nofollow">请登录</a> ]
[ <a id="reg-url" href="//www.yohobuy.com/reg.html" class="registbar" rel="nofollow">免费注册</a> ]
</li>
<li class="myyoho" id="myYohoBox">
<span class="tag-seprate"></span>
<a href="//www.yohobuy.com/home?t=1453340799.4986" rel="nofollow">MY有货</a>
<span class="icon-bottomarrow"></span>
{{#unless @root.pc.common.disMyYohoHover}}
<div class="simple-user-center"></div>
{{/unless}}
</li>
<li class="myorder">
<span class="tag-seprate"></span>
<span class="icon-papers"></span>
<a href="//www.yohobuy.com/home/orders?t=1453168898.0176" rel="nofollow">我的订单</a>
</li>
<li class="mycollect">
<span class="tag-seprate"></span>
<span class="icon-heart"></span>
<a href="//www.yohobuy.com/home/favorite?t=1453168898.0176" rel="nofollow">我的收藏</a>
</li>
<li class="message">
<span class="tag-seprate"></span>
<span class="icon-mail"></span>
<a href="//www.yohobuy.com/home/message?t=1453168898.0176" rel="nofollow">消息</a>
</li>
<li class="help nav-drop-down-container">
<span class="tag-seprate"></span>
<span class="iconfont">&#xe702;</span>
<a href="#">客户服务</a>
<ul class="nav-drop-down">
<li>
<a href="{{#if @root.pc.clientService.new}}http://chat8.live800.com/live800/chatClient/chatbox.jsp?companyID=620092&configID=149091&jid=8732423409{{else}}//www.yohobuy.com/service/client{{/if}}"{{#if @root.pageNoFollow}} rel="nofollow"{{/if}} target="_blank">在线客服</a>
</li>
<li>
<a href="//www.yohobuy.com/help"{{#if @root.pageNoFollow}} rel="nofollow"{{/if}}>帮助中心</a>
</li>
</ul>
</li>
<li class="we-chat download-code">
<span class="tag-seprate"></span>
<span class="iconfont">&#xe704;</span>
<a href="">关注有货</a>
<div class="download-app-box">
<div class="we-chat-img code-img"></div>
<h5 class="qr-words">微信扫一扫</h5>
<h5 class="qr-words">关注公众号,赢免单</h5>
</div>
</li>
<li class="phoneapp download-code" id="phoneApp">
<span class="tag-seprate"></span>
<span class="icon-phone"></span>
<a href="//www.yohobuy.com/download/app"{{#if @root.pageNoFollow}} rel="nofollow"{{/if}}>手机版</a>
<div class="download-app-box">
<div class="qr-img code-img"></div>
<h5 class="qr-words">下载手机客户端</h5>
<h5 class="qr-more">
<a href="javascript:void(0);">更多客户端</a>
</h5>
</div>
</li>
</ul>
</div>
</div>
</div>
<div class="head-wrapper clearfix">
<div class="center-content">
<div class="outlets-logo"></div>
<div class="main-logo"><a href="//www.yohobuy.com/" class="main-link"></a></div>
<ul class="main-nav-list">
{{# navbars}}
<li class="{{type}}">
{{#if ico}}
<a href="{{link}}"{{#if isNewPage}} target="_blank"{{/if}} class="menu-ico"{{#if @root.pageNoFollow}} rel="nofollow"{{/if}}></a>
{{^}}
<h5 class="name-cn">
<a href="{{link}}"{{#if isNewPage}} target="_blank"{{/if}}{{#if @root.pageNoFollow}} rel="nofollow"{{/if}}>{{cn}}</a>
</h5>
<h5 class="name-en">
<a href="{{link}}"{{#if isNewPage}} target="_blank"{{/if}}{{#if @root.pageNoFollow}} rel="nofollow"{{/if}}>{{en}}</a>
</h5>
{{/if}}
</li>
{{/ navbars}}
</ul>
<div class="func-area hide">
{{#unless @root.pc.common.disSearchAssociation}}
<ul class="search-suggest"></ul>
{{/unless}}
<ul class="search-suggest-history"></ul>
<div class="search-2016">
<form action="//search.yohobuy.com" method="get" id="search-form">
<input type="hidden" id="defaultsearch" value="{{defaultSearch}}">
<input class="search-key" type="text" name="query" id="query-key" autocomplete="off" x-webkit-speech="" lang="zh-CN" x-webkit-grammar="builtin:translate" value="" maxlength="30">
<a class="search-btn" href="javascript:submitSearch();"></a>
</form>
<ul class="search-hot">
{{#hotTerms}}
<li>
<a style="display: block;" href="{{href}}" title="{{content}}"
act="{{href}}"{{#if @root.pageNoFollow}} rel="nofollow"{{/if}} target="_blank">
<span class="searchvalue">{{content}}</span>
</a>
</li>
{{/hotTerms}}
</ul>
</div>
<div class="go-cart">
<a href="//www.yohobuy.com/cart/cart">
<span class="iconfont ">&#xe600;</span>
{{#unless @root.pc.common.removeCartCount}}
<span class="goods-num-tip hide">0</span>
{{/unless}}
</a>
{{#unless @root.pc.common.disCartHover}}
<div class="mini-cart-wrapper">
<div class="loading-cart">
<h3>加载中,请稍后</h3>
</div>
<div class="empty-cart">
<h3>您的购物车暂无商品</h3>
</div>
</div>
{{/unless}}
</div>
</div>
</div>
</div>
<div class="nav-wrapper clearfix">
<div class="center-content">
{{# subNavGroup}}
<ul class="sub-nav-list {{subType}}">
{{# subNav}}
<li {{#if thirdNav}}class="contain-third"{{/if}}>
<a href="{{link}}"{{#if @root.pageNoFollow}} rel="nofollow"{{/if}}>{{name}}
{{#if isNew}}
<span class="newlogo"></span>
{{/if}}
</a>
{{#if thirdNav}}
<div class="third-nav-wrapper">
<div class="center-content">
<dl class="hide-list hide">
{{# thirdNav}}
<dt>
<h3 class=""><a href="{{link}}"{{#if @root.pageNoFollow}} rel="nofollow"{{/if}}>{{title}}</a></h3>
</dt>
{{#brandItems}}
<dd>
<a href="{{link}}"{{#if hot}}
class="hot"{{/if}}{{#if @root.pageNoFollow}} rel="nofollow"{{/if}}>{{brandName}}</a>
</dd>
{{/brandItems}}
{{/thirdNav}}
</dl>
<div class="show-detail" data-code="{{imgCode}}">
<a{{#if @root.pageNoFollow}} rel="nofollow"{{/if}}><img src="data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP///93d3f///yH5BAEAAAMALAAAAAABAAEAAAICVAEAOw=="></a>
<a class="title">热门小物优选</a>
</div>
</div>
</div>
{{/if}}
</li>
{{/ subNav}}
</ul>
{{/ subNavGroup}}
</div>
</div>
</div>
<div id="hide-template">
<script type="text/html" id="header-login-info-tpl">
<span>Hi~ <a href="\{{usercenter}}" class="nick-name">\{{nickname}}</a></span>
&nbsp;[ <a href="\{{signout}}">退出</a> ]
</script>
<script type="text/html" id="simple-account-info-tpl">
<div class="account-info-header">
<div class="user-img">
\{{#if headIco}}
<img src="\{{headIco}}">
\{{/if}}
</div>
<div class="user-name">
<a href="//www.yohobuy.com/home?t=\{{random}}">\{{profileName}}</a>
</div>
<h4 class="user-level">
VIP: <span>\{{curTitle}}</span>
</h4>
\{{#unless vip3}}
<div class="level-detail">
<div class="level-view-bar">
<div class="text-span">
\{{curYearCost}}/\{{nextVipNeedCost}}
</div>
<p class="\{{#if curYearCostPer}}integrate\{{/if}}" style="width: \{{curYearCostPer}}%;"></p>
</div>
<span>\{{nextVipTitle}}</span>
</div>
\{{/unless}}
</div>
<ul class="account-info-content">
<li>
<a href="//www.yohobuy.com/home/orders?t=\{{timestamp}}">待处理的订单</a>
<span class="right">\{{order}}</span>
</li>
<li>
<a href="//www.yohobuy.com/home/favorite?t=\{{timestamp}}">我的收藏</a>
<span class="right"></span>
</li>
<li>
<a href="//www.yohobuy.com/home/coupons?t=\{{timestamp}}">我的优惠券</a>
<span class="right">\{{coupon}}</span>
</li>
<li>
<a href="//www.yohobuy.com/home/currency?t=\{{timestamp}}">我的有货币</a>
<span class="right">\{{coin}}</span>
</li>
<li>
<a href="//www.yohobuy.com/home/returns?t=\{{timestamp}}">我的退货换货</a>
<span class="right">\{{return}}</span>
</li>
</ul>
<div class="account-info-footer">
<a href="//www.yohobuy.com/home/user?t=\{{timestamp}}">完善资料
{{#unless @root.pc.user.removeStudentIdentification}}
<span>(学生认证)</span>
{{/unless}}
</a>
</div>
</script>
<script type="text/html" id="search-suggest-tml">
\{{#data}}
<li>
<a style="display: block;" href="\{{href}}" class="clearfix clear search-item" title="\{{keyword}}"
act="\{{href}}">
<span class="searchvalue">\{{keyword}}</span>
<span class="valuenum">约\{{count}}个商品</span>
</a>
</li>
\{{/data}}
</script>
<script type="text/html" id="search-suggest-history">
\{{#if data}}<p class="search-suggest-title">最近搜过<a class="search-del" href="#">清空</a></p>
\{{#data}}
<li>
<a style="display: block;" href="\{{href}}" class="clearfix clear search-item" title="\{{keyword}}"
act="\{{href}}">
<span class="searchvalue">\{{keyword}}</span>
</a>
</li>
\{{/data}}
\{{/if}}
</script>
</div>
<input id="api-domain" type="hidden" value="{{apiDomain}}">
<div class="code-down-box">
<div class="code-img"></div>
<h5 class="code-title">下载手机客户端</h5>
<i class="iconfont icon-del"></i>
</div>
{{/ headerData}}
\ No newline at end of file
... ...
... ... @@ -55,8 +55,9 @@
"urlencode": "^1.1.0",
"uuid": "^2.0.2",
"yoho-express-session": "^2.0.0",
"yoho-node-lib": "=0.5.14",
"yoho-zookeeper": "^1.0.8"
"yoho-node-lib": "=0.5.16",
"yoho-zookeeper": "^1.0.8",
"handlebars": "4.0.5"
},
"devDependencies": {
"autoprefixer": "^6.3.6",
... ...