[关闭]
@king- 2016-11-03T20:36:48.000000Z 字数 4955 阅读 977

梅斯 web前端规范

web前端开发


一、 目录结构规范

1. 后台框架项目结构

  1. + app
  2. + demo // 组件测试代码
  3. + static //静态手写的文件代码
  4. + js
  5. config.js //项目配置文件
  6. common.js //公共的js
  7. + css
  8. + scss //sass样式
  9. _config.scss //scss公共函数和参数
  10. style.scss
  11. + less //不推荐使用less
  12. style.less
  13. //如果使用scss或者less 则css的文件名称随相关文件一致就可以
  14. basic.css //基础的css
  15. + images //所有需要用到的项目图片
  16. + icon
  17. + bg
  18. + banner
  19. + logo
  20. + html //各个功能页面
  21. main.html
  22. + docs // 项目描述文档
  23. + src
  24. + plugins //插件
  25. + plugins-name
  26. - css
  27. - ...
  28. + themes //主题文件
  29. + default
  30. - js
  31. - images
  32. style.css
  33. + local //语言包
  34. + zh_CN
  35. local_zh-CN.js
  36. index.html //项目入口
  37. app.js //项目js入口
  38. readme.md //项目文件描述文件

2. H5 APP项目

// 这里习惯使用yaoman之类的构建工具生成,同时也限制与一些主流的app web ui 框架已经写好结构的问题,所以暂时不做说么,等待相关app ui框架完全确定后在进行实际的约束

3. iframe框架项目结构

为了保证每次iframe中相关公共资源的加载小,所以需要把相关针对页面的资源拆分,各个页面根据需要加载相关资源
主要针对jscss拆分。

二、 文件资源命名规范

1. 文件和文件名约束

都只允许使用小写字母命名单词与单词之间用中横线分隔

  1. //名称格式[页面名称].js
  2. index.js
  3. //[页面名称]-[功能类型].css
  4. //当然如果公共的css就直接使用[功能类型].css
  5. index-layout.css
  6. //[页面名称].html
  7. //如果是某个页面中的某个功能则:[页面名称]-[功能].html
  8. //如果是公共通用的页面则:[功能].html
  9. userinfo-modal.html
  10. //图片的命名和其他的相反,[功能类型]-[名称].png/jpg
  11. logo.png
  12. icon-like.png

三、 开发环境规范

在开发中,可能涉及到大量的 ajax 操作,所以推荐使用服务器环境开发,但是同时需要保证在非服务器环境下资源引用也是正确的(这里涉及到的是引用资源时候使用的是 绝对路径相对路径 的问题.

推荐服务器环境使用 nodejs 生成
方法:
1. 安装 nodejs
2. npm install -g anywhere
3. 在项目目录下通过命令行工具执行:
anywhere port[这里是端口号,如果:4000/8080等]
---
当然这里更推荐使用 gulp / grunt / webpack 直接生成服务器环境

四、编码规范

前端编码规范可参考 Bootstrap 规范执行,里面内容过为详细,这里只对差异点进行说明

1. HTML 编码规范

  1. <!-- warp start -->
  2. <div class="warp"></div>
  3. <!-- warp end / content start -->
  4. <div class="content"></div>

2. CSS 编码规范

  1. <div class="ms-modal">
  2. <div class="ms-modal-bg"></div>
  3. <div class="ms-modal-body">
  4. <div class="ms-modal-title"></div>
  5. <div class="ms-modal-content"></div>
  6. </div>
  7. </div>
  1. //错误的写法
  2. color: #FFF;
  3. //正确的写法
  4. color: #fff;
  1. HTML:
  2. <div class="warp">
  3. <h1>这里是标题</h1>
  4. </div>
  5. ============================
  6. CSS:
  7. h1{font-size: 12px;}
  8. //错误的写法
  9. h1{font-size: 16px !important;}
  10. //正确的写法
  11. .warp h1{font-size: 16px;}
  1. //modal组件
  2. .ms-modal{}
  3. .ms-modal .ms-modal-bg{}
  4. ...
  5. //alert组件
  6. .ms-alert{}
  7. .ms-alert .ms-alert-title{}
  1. //错误的写法
  2. .ms-modal{}
  3. .ms-modal .ms-modal-body{}
  4. .ms-modal .ms-modal-body .ms-modal-title{}
  5. //正确的写法
  6. .ms-modal{}
  7. .ms-modal .ms-modal-body{}
  8. .ms-modal-body .ms-modal-title{}

3. JavaScript 编码规范

  1. $("#"+elId) // √
  2. document.getElementById(eleId) // X

5. jQuery 插件使用规范

6. 图片使用规范

五、功能组件结构

1. 组件列表

a. 时间控件

  1. laydate({
  2. elem: '#hello', //目标元素
  3. event: 'focus', //响应事件。如果没有传入event,则按照默认的click
  4. format: 'YYYY/MM', // 分隔符可以任意定义,该例子表示只显示年月
  5. festival: true, //显示节日
  6. choose: function(datas){ //选择日期完毕的回调
  7. alert('得到:'+datas);
  8. },
  9. min: laydate.now(-1), //-1代表昨天,-2代表前天,以此类推
  10. max: laydate.now(+1), //+1代表明天,+2代表后天,以此
  11. istime: false, //是否开启时间选择
  12. isclear: true, //是否显示清空
  13. istoday: true, //是否显示今天
  14. issure: true // 是否显示确认类推
  15. });

b. 弹框、弹窗控件(dailog)

  1. layer.open({
  2. type: 1, //page层
  3. area: ['500px', '300px'],
  4. title: '提示',
  5. shade: 0.6, //遮罩透明度
  6. moveType: 1, //拖拽风格,0是默认,1是传统拖动
  7. shift: 1, //0-6的动画形式,-1不开启
  8. content: '<div style="padding:50px;">这是一个非常普通的页面层(type:1),传入了自定义的html</div>'
  9. });

c. 模板控件

  1. <script id="demo" type="text/html">
  2. <h1>{{ d.title }}</h1>
  3. <ul>
  4. {{# for(var i = 0, len = d.list.length; i < len; i++){ }}
  5. <li>
  6. <span>姓名:{{ d.list[i].name }}</span>
  7. <span>城市:{{ d.list[i].city }}</span>
  8. </li>
  9. {{# } }}
  10. </ul>
  11. </script>

第二步:建立视图。用于呈现渲染结果。

  1. <div id="view"></div>

第三步:渲染模版

  1. var data = {
  2. title: '前端攻城师',
  3. list: [{name: '贤心', city: '杭州'}, {name: '谢亮', city: '北京'}, {name: '浅浅', city: '杭州'}, {name: 'Dem', city: '北京'}]
  4. };
  5. var gettpl = document.getElementById('demo').innerHTML;
  6. laytpl(gettpl).render(data, function(html){
  7. document.getElementById('view').innerHTML = html;
  8. });

d. 下拉查询控件

  1. <div class="input-group">
  2. <input type="text" class="form-control" id="test">
  3. <div class="input-group-btn">
  4. <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
  5. <span class="caret"></span>
  6. </button>
  7. <ul class="dropdown-menu dropdown-menu-right" role="menu">
  8. </ul>
  9. </div>
  10. <!-- /btn-group -->
  11. </div>

javascript出发方法

  1. var testBsSuggest = $("#test").bsSuggest({
  2. url: "data.json",//url: "/rest/sys/getuserlist?keyword=",
  3. idField: "userId",
  4. keyField: "userName"
  5. }).on('onDataRequestSuccess', function (e, result) {
  6. // console.log('onDataRequestSuccess: ', result);
  7. }).on('onSetSelectValue', function (e, keyword, data) {
  8. // console.log('onSetSelectValue: ', keyword, data);
  9. }).on('onUnsetSelectValue', function (e) {
  10. // console.log("onUnsetSelectValue");
  11. });

六、公共代码描述和规范

1. CSS 公共代码描述

2. js 公共代码描述

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注