@jameszuo
2016-03-11T11:14:45.000000Z
字数 1471
阅读 428
code-review
Reduck框架底层代码注释较少,需要补充
XSS漏洞可能(1)
// frame.ejsvar serverData = {};var stepTime = [];try{serverData = <%-(data && data.serverData)?JSON.stringify(data.serverData):'{}'%>;stepTime = <%-(data && data.stepTime)?JSON.stringify(data.stepTime):'[]'%>}catch(e){console.error('服务端数据解析错误', e);}
解决办法:替换 <script> 和 </script>
JSON.stringify(…).replace(/<(\/?)script>/g, '<$1script>')
XSS漏洞可能(2)


变量大小写不规范
// PageViewModel 是类,首字应大写var pageViewModel = require('reduck-server').PageViewModel;module.exports = pageViewModel.subclass(function (params) {
变量名不易理解,适当写长一些即可
window.pageView = new pageView({initEvent: function () { ... },// 这里的 actions 作用不明确,导致下面的 this 指向产生歧义actions: {submit: function (pageView) {var $btn = $(this).button('正在提交');
解决办法:使用长属性名,如 autoBindActionsAfterRender:
window.pageView = new pageView({initEvent: function () { ... },autoBindActionsAfterRender: {submit: function (pageView) {var $btn = $(this).button('正在提交');
入口文件自动映射到路由模块,不容易出错
//计算入口文件mapvar entryArray = glob.sync(pagePath + "/**/main.js");
前后端复用一套stores和template代码

模块分离很清晰,赞!
module.exports = pageViewModel.subclass(function (params) {}, {title: '房间配置',store: {channel: require('stores/data-channel'),gameList: require('stores/data-gameList'),startLive: require('stores/data-startLive')}, //配置store数据仓库(DataModelMap)serverTpl: 'common/frame',components: {//string组件body: '',//主pagepage: require('./component-page'),//面包屑breadcrumb: require('components/component-breadcrumb'),//导航nav: require('components/component-nav'),header: require('components/component-header')}});