[关闭]
@jameszuo 2016-03-11T11:14:45.000000Z 字数 1471 阅读 366

2016-3-11

code-review


发现的问题

  1. Reduck框架底层代码注释较少,需要补充

  2. XSS漏洞可能(1)

    1. // frame.ejs
    2. var serverData = {};
    3. var stepTime = [];
    4. try{
    5. serverData = <%-(data && data.serverData)?JSON.stringify(data.serverData):'{}'%>;
    6. stepTime = <%-(data && data.stepTime)?JSON.stringify(data.stepTime):'[]'%>
    7. }catch(e){
    8. console.error('服务端数据解析错误', e);
    9. }

    解决办法:替换 <script> 和 </script>

    1. JSON.stringify(…).replace(/<(\/?)script>/g, '&lt;$1script&gt;')
  3. XSS漏洞可能(2)

    此处输入图片的描述

    此处输入图片的描述

  4. 变量大小写不规范

    1. // PageViewModel 是类,首字应大写
    2. var pageViewModel = require('reduck-server').PageViewModel;
    3. module.exports = pageViewModel.subclass(function (params) {
  5. 变量名不易理解,适当写长一些即可

    1. window.pageView = new pageView({
    2. initEvent: function () { ... },
    3. // 这里的 actions 作用不明确,导致下面的 this 指向产生歧义
    4. actions: {
    5. submit: function (pageView) {
    6. var $btn = $(this).button('正在提交');

    解决办法:使用长属性名,如 autoBindActionsAfterRender:

    1. window.pageView = new pageView({
    2. initEvent: function () { ... },
    3. autoBindActionsAfterRender: {
    4. submit: function (pageView) {
    5. var $btn = $(this).button('正在提交');

好的地方

  1. 入口文件自动映射到路由模块,不容易出错

    1. //计算入口文件map
    2. var entryArray = glob.sync(pagePath + "/**/main.js");
  2. 前后端复用一套stores和template代码

    此处输入图片的描述

  3. 模块分离很清晰,赞!

    1. module.exports = pageViewModel.subclass(function (params) {
    2. }, {
    3. title: '房间配置',
    4. store: {
    5. channel: require('stores/data-channel'),
    6. gameList: require('stores/data-gameList'),
    7. startLive: require('stores/data-startLive')
    8. }, //配置store数据仓库(DataModelMap)
    9. serverTpl: 'common/frame',
    10. components: {
    11. //string组件
    12. body: '',
    13. //主page
    14. page: require('./component-page'),
    15. //面包屑
    16. breadcrumb: require('components/component-breadcrumb'),
    17. //导航
    18. nav: require('components/component-nav'),
    19. header: require('components/component-header')
    20. }
    21. });
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注