###常规JavaScript文件开发规范

说明:常规JavaScript文件不会进行amd包裹,即可以直接引入调用

  • 【强制】JavaScript文件的目录位置:src/js
  • 【建议】建议common中定义全站统一的命名空间:x
    x = {
        util: {},       //通用工具方法
        conf: {},       //通用展示
        data: {},       //通用数据
        m: {            //module, 分配给各模块去定义的命名空间
            home: {},       //为home模块的命名空间
            user: {}        //为user模块的命名空间
        }
    };
    
  • 【建议】页面同步引入脚本数量(打包后)建议限制在2个以内,其中包含base脚本和模块脚本供以初始化&首屏加载
  • 【建议】base脚本量尽量保证gzip后60k以内
  • 【建议】组件引入都以异步方式,按加载时机进行打包:
    • 页面加载后马上异步引入
    • 页面domready后异步引入
    • 页面onload后异步引入
    • 当具体功能触发时异步引入

###spg handler开发规范

说明:spg handler即为单页面应用的子页面的处理逻辑,handler接口定义:

        interface Handler{
            /**
             * Will execute when block render
             * @param elem the container of the block
             * @param data : {
             *          data        //data which is used to render block
             *          urlKeys     //matched from router "(:xxx)"
             *          params      //the url parameter
             *          location    //the Window's location object
             *          title       //the page's title
             *      }
             */
            init(elem: Element, data: Object): void;

            /**
             * Will execute when page re-render
             * @param elem
             * @param data
             */
            repaint(elem: Element, data: Object): void;

            /**
             * Will execute when page destroy
             * @param elem
             * @param data
             */
            destroy(elem: Element, data: Object): void;
        }
  • 【强制】handler文件必须放置于src/js/handler目录下
  • 【强制】handler文件必须实现Handler接口,即必须exports,init方法,destroy方法(可选),repaint方法(可选)
  • 【强制】文件引入(require)必须放置于文件顶部,方法导出(module.exports)必须放置于页尾

###spg dt开发规范

说明:spg dt即为单页面的数据转换器,即从server端取回的数据源会经过dt的过滤之后,再进行模板的渲染,dt文件形如:

        module.exports = function(dsData){
            //dsData 为server直接打回的数据
            //......

            return renderData;
            //返回渲染模板的数据,也可以返回promise
            //若返回`promise`,则renderData会作为resolve的第一个参数
            //关于`promise`的相关问题,可参见promise的相关规范
        }
  • 【强制】dt文件必须放置于src/js/dt目录下
  • 【强制】dt文件直接导出一个方法,方法参数为server返回的数据源,返回值为渲染模板的数据

###widget 开发

说明: 请参见组件开发规范