代码规范说明

后端代码规范说明

google 后台开发指南

前端代码规范说明

wxml规范

1. 标签位置与缩进

- 尽量避免多余的父标签。
- 所有wxml标签必须有结束符`</view>` `</block>` `</button>`等。

#### 2. 标签属性顺序

* `class` (class是为高而复用组件设计的,所以所以应处在第一位)
* `id`、`name`(id更加具体且应该尽量少使用,所以将它放在第二位)
* `wx:if`、`wx:else`、`wx:for`
* `wx:data`

#### 3. id/class命名规则

 - 遵循“内容优先,表现为辅”的基本原则
  -- 首先根据内容命名,如header、footer。若根据内容无法找到合适的命名,再结 合表现进行辅助,如col-main、blue-box。
 - 一律小写,多个单词以'-'连接
  -- 不能使用下划线和驼峰命名法,如main-nav。可基于最近的父元素名称作为前缀。
 - 在不影响语义的情况下,可适当使用缩写
  -- 缩写只用来表示结构,如col、nav、btn等,不可自造缩写。
 - 避免广告拦截词
  -- ad、ads、adv、banner、sponsor、gg、guangg、guanggao等,页面中尽量避免采用以上词汇来命名。

#### 4. 注释规范

页面中使用注释划分结构块。
```html
<view>
  <!-- 顶部轮播图 -->
  <swiper indicator-dots="" autoplay="" interval="" duration=""> ...
  </swiper>
  
  <!-- 左侧菜单 -->
  <view class="left-menu"> ...
  </view>
  
  <!-- 右侧菜单 -->
  <scroll-view class="right-menu" scroll-y="true"  bindscroll="scroll" scroll-into-view="" scroll-top="" enable-back-to-top="true"> ...
  </scroll-view>

  <!-- 底部 -->
  <view class="shoppingCart-bar" wx:if=""> ...
  </view>
</view>

<!-- 购物车 -->
<view class="drawer-screen" bindtap="showCartList" data-statu="close" wx:if=""> ...
</view>

wxcs规范

1. 属性顺序

在需要显示地设置所有值的情况下,应当尽量限制使用简写形式的属性声明。常见的滥用简写属性声明的情况如下: paddingmarginfontbackgroundborderborder-radius

另外,对于#aabbcc形式的颜色值也可简化为#abc,这样精简代码同时又能提高用户的阅读体验。


js规范

1. 语言规范

1.1 变量

声明变量必须加上var关键字。

当你没有写 var, 变量就会暴露在全局上下文中, 这样很可能会和现有变量冲突. 另外, 如果没有加上, 很难明确该变量的作用域是什么。

1.2 块内函数声明

不要在块内声明一个函数。

if(x) {
    function foo() {}
}

如果确实需要在块中定义函数, 建议使用函数表达式来初始化变量:

if(x) {
    var foo = function () {}
}
1.3 this

仅在对象构造器,方法,闭包中使用。

1.4 命名方式

2. 编码风格

2.1 明确作用域

任何时候都要明确作用域,提高可移植性和清晰度,不要依赖于作用域链中的 window 对象。

2.2 代码风格化

数组和对象的初始化,如果初始值不是很长,就保持写在单行上。

var arr = [ 1, 2, 3 ];  //  space after [ or before ] according to ESLint standard.
var obj = { a : 1, b : 2, c : 3 };  //  space after { or before }.

初始值占用多行时,缩进四个空格。

// Object initializer.
imgUrls: [
    '../../images/1.jpg',
    '../../images/2.jpg',
    '../../images/3.jpg',
    '../../images/4.jpg',
    '../../images/5.jpg'
    ],

2.3 引号的使用

单引号''优于双引号""

2.4 过长的单行予以换行

换行应选择在操作符和标点符号之后。

if (oUser.nAge < 30
    && oUser.bIsChecked === true
    || oUser.sName === 'admin') {
    // code
}
2.5 循环的使用

在循环中,尽量使用变量先获取到循环的次数,再放入循环中进行判断,否则非常影响程序性能。

// 推荐
var listData = this.data.listData;
for (var i = 0; i < listData.length; i++) {
    for (var j = 0; j < listData[i].foods.length; j++) {
        listData[i].foods[j].number = 0;
    }
}
// 不推荐
for (var i = 0; i < this.data.listData.length; i++) {
    for (var j = 0; j < listData[i].foods.length; j++) {
        listData[i].foods[j].number = 0;
    }
}
2.6 注释
2.6.1 函数注释
/**
 * 简述
 *
 * 功能详细描述
 *
 * @param <String> arg1 参数1
 * @param <Number> arg2 参数2,默认为0
 * @return <Boolean> 判断xxx是否成功
 */
 function fooFunction (arg1, arg2) {
    // code
 }
2.6.2 语句注释

单行注释:


设计视觉规范

1. 字体

微信内字体的使用与所运行的系统字体保持一致,常用字号为20,18,17,16,14,13,11(pt),使用场景具体如下: 此处输入图片的描述

2. 字体颜色

此处输入图片的描述 主内容 Black 黑色,次要内容 Grey 灰色;时间戳与表单缺省值 Light 灰色;大段的说明内容而且属于主要内容用 Semi 黑。 此处输入图片的描述 蓝色为链接用色,绿色为完成字样色,红色为出错用色 Press 与 Disable 状态分别降低透明度为20%与10%。 此处输入图片的描述

3. 列表

此处输入图片的描述

4. 表单输入

此处输入图片的描述

5. 按钮

此处输入图片的描述 此处输入图片的描述 此处输入图片的描述 此处输入图片的描述

6. 图标

此处输入图片的描述 此处输入图片的描述