小程序開(kāi)發(fā)規(guī)范

目錄概述

  • 基礎(chǔ)規(guī)范

    頁(yè)面、樣式抖拦、行為雀鹃、規(guī)范,不用首屏加載的盡量分包

  • 圖片文件
    項(xiàng)目圖片文件放置于根目錄的images文件夾下巫延,組件獨(dú)有的圖片放在當(dāng)前組件images目錄下
    大圖進(jìn)行壓縮效五,能用網(wǎng)絡(luò)鏈接的盡量用網(wǎng)絡(luò)鏈接

  • 模型文件
    模型文件主要用于編寫(xiě)各類(lèi)業(yè)務(wù)模型地消。項(xiàng)目模型文件放置于根目錄的 models 文件夾下,組件相關(guān)模型放置于components目錄下的models文件夾中

  • 組件文件
    所有組件相關(guān)文件統(tǒng)一放在components目錄下

  • 行為文件
    行為文件放在所引用的組件目錄下

  • 計(jì)算文件

    • 公用類(lèi)計(jì)算文件放入公共 wxs 內(nèi)容中
    • 私有計(jì)算文件放入當(dāng)前使用文件目錄下
    • 頻繁用戶交互的效果在小程序上表現(xiàn)是比較卡頓的,用wxs 函數(shù)來(lái)響應(yīng)

WXML 規(guī)范

  • 標(biāo)簽盡量少
    wxml 標(biāo)簽可以單獨(dú)出現(xiàn)的情況畏妖,盡量單獨(dú)出現(xiàn)脉执,如 input

      <input/>
    
  • 減少?zèng)]行代碼量

    控制每行 HTML 的代碼數(shù)量在 50 個(gè)字符以內(nèi),方便閱讀瀏覽戒劫,多余的代碼進(jìn)行換行處理半夷,標(biāo)簽所帶屬性每個(gè)屬性間進(jìn)行換行。

    <v-music
      wx:if="{{classic.type===200}}"
      img="{{classic.img}}"
      content="{{classic.content}}"
    >    
    <v-music>
    
  • 循環(huán)語(yǔ)句添加 key

    <switch wx:for="{{objectArray}}" wx:key="unique" >
      {{item.id}}
    </switch>
    
  • 循環(huán)語(yǔ)句 和 判斷語(yǔ)句分開(kāi)

    <switch wx:for="{{objectArray}}" wx:key="unique" wx:if="{{item.id > 5}}">
      {{item.id}}
    </switch>
    
  • 合理展現(xiàn)分離內(nèi)容迅细,不要使用內(nèi)聯(lián)樣式巫橄。

    // 推薦使用
    <image class="tag"></image>
    
    // 不推薦    
    <image style="width:100rpx;height:100rpx"></image>    
    
  • 注釋規(guī)范

    除組件外的其他塊級(jí)元素,均需注釋出其功能茵典,并在其上下空出一行與其他代碼進(jìn)行區(qū)分湘换。

    <view>...view>
    
    // 導(dǎo)航欄    
    <view>...view>
    <view>...view>
    
  • 基本組件使用優(yōu)先級(jí)

    能用基本組件 viewtext敬尺、 button枚尼、 input等 減少使用 scroll-viewmovable-view 等砂吞,減少嵌套

CSS 規(guī)范

  • rpxpx都能使用到署恍,rpx是基于iPhone 6的邏輯像素點(diǎn),在使用過(guò)程中針對(duì)屏幕做了適配蜻直,除了邊框線以外盯质,其他都是用rpx

  • class名稱(chēng)單詞使用中劃線方式,不使用駝峰命名

    .aa-bb-cc{
      margin: 0 auto;
    }
    
  • 盡量使用簡(jiǎn)寫(xiě)屬性概而,并且同一屬性放置在一起呼巷,避免散亂

    /** 使用簡(jiǎn)寫(xiě)屬性 **/
    
    .v-image{
      margin: 0 auto;
    }
    
    /** 同一屬性放在一塊 **/
    
    .v-tag{
      margin-left: 10rpx;
      margin-right: 10rpx
    }
    
  • 同一個(gè)模塊的css文件放在一起,關(guān)鍵樣式需要注釋?zhuān)瑯邮街g使用空行分割

    /* 頁(yè)面容器 */
    .page-container {
       background: #f4f4f4;
    }
    
    /* 資金容器 */
    .asset-container {
     margin: 20rpx;
    }
    
    
  • 采用 flex 進(jìn)行布局赎瑰,禁止使用 float 以及 vertical-align

    .container{
      disaplay: flex;
      flex-dirextion: row
    }
    
  • 避免使用全局命名 打包文件后會(huì)覆蓋

  • 成組的 wxss 規(guī)則之間用塊狀注釋王悍。請(qǐng)勿在代碼后面直接注釋

    /** 修改 button 默認(rèn)的點(diǎn)擊態(tài)樣式類(lèi) **/
    .button-hover {
      background-color: red;
    }
    

JS規(guī)范

命名規(guī)范

  • 采用 ES6 關(guān)鍵字 let 定義變量,盡量不使用 var

        // 定義常量
    
        const a = 1
        
        // 定義變量
        
        let imageContent =  res.data
        
        // 函數(shù)命名
        
        getInfo:function(){
          return '';
        }
        
        // 私有函數(shù)
        
        _getInfo:function(){
          return '';
        }
    
  • 類(lèi)的命名

    采用駝峰命名法,使用字母開(kāi)頭

    BannerCom.js
    Login.js
    
  • 方法命名規(guī)范

    • 私有方法使用下劃線開(kāi)頭

      // 營(yíng)銷(xiāo)管理
        _getPromoteAmount: function() {
        
        },
      
      
    • 點(diǎn)擊事件使用on開(kāi)頭

      // 聯(lián)系客服
        onContactServiceTap: function() {
      
        },
      
  • 函數(shù)名前綴需加上清晰的動(dòng)詞表示函數(shù)功能

  • 回調(diào)函數(shù)統(tǒng)一使用 Promise 函數(shù)的方式進(jìn)行編寫(xiě)餐曼,回調(diào)成功的參數(shù)統(tǒng)一為 res压储,錯(cuò)誤參數(shù)為 err

        // promise 處理回調(diào)
    
        let back = new Promise((resolve, reject) => {
          if (/* 異步操作成功 */){
            resolve(value);
          } else {
            reject(error);
          }
        
        });
        
        back.then((res) => {
            console.log('成功回調(diào)!', res);
        }).catch((err) => {
            console.log('失敗回調(diào)源譬!', error);
        });
    
  • 數(shù)據(jù)綁定變量定義規(guī)范

    所有涉及到數(shù)據(jù)綁定的變量均需在 data 中初始化集惋。禁止在不定義的情況下直接 setData

        Pages({
          data:{
             id : null
          },
        
          onLoad:function(event){
            let id = event.target.dataset.id
            this.data.id = id
          }
        })
    

組件規(guī)范

組件名稱(chēng)為多個(gè)單詞 (必要)

  • 組件名命名規(guī)范

    應(yīng)用特定樣式和約定的基礎(chǔ)組件 (也就是展示類(lèi)的、無(wú)邏輯的或無(wú)狀態(tài)的組件) 應(yīng)該全部以一個(gè)特定的前綴開(kāi)頭踩娘,比如 Base刮刑、或 v-。
    若組件名稱(chēng)為多個(gè)單詞名拼接而成,采用 ’ - ’ 連接雷绢。組件標(biāo)簽在 page 頁(yè)面使用時(shí)推薦使用單閉合標(biāo)簽(此條約束對(duì)于包含有 >slot 的組件無(wú)效)泛烙。

      v 來(lái)源于法語(yǔ) 單詞 ‘vent’
    

    和父組件緊密耦合的子組件應(yīng)該以父組件名作為前綴命名組件名應(yīng)該以高級(jí)別的 (通常是一般化描述的) 單詞開(kāi)頭,以描述性的修飾詞結(jié)尾习寸。

  • 觸發(fā)事件規(guī)范

    組件點(diǎn)擊觸發(fā)事件建議用冒號(hào)分隔開(kāi)

    <v-component-tag-name bind:myevent="onMyEvent" />
    
    
  • externalClasses 命名規(guī)范

    命名格式采用如下形式:v-class-{name}胶惰,name 可自行定義

      v-class-icon
    
  • 組件樣式規(guī)范

    團(tuán)隊(duì)所產(chǎn)出的所有組件樣式均應(yīng)采用類(lèi)的寫(xiě)法,且命名必須以 v- 開(kāi)頭霞溪,不允許使用內(nèi)聯(lián)樣式以及 id 樣式

    .v-container{
      disaplay: flex;
      flex-dirextion: row
    }
    
    
  • 標(biāo)點(diǎn)規(guī)范

    • WXML孵滞、CSS、JSON 中均應(yīng)使用雙引號(hào)
    • CSS 屬性中冒號(hào)中后面用一個(gè)空格分隔開(kāi)
    • JS 語(yǔ)句無(wú)需以分號(hào)結(jié)束鸯匹,統(tǒng)一省略分號(hào)
    • JS 中一致使用反引號(hào) `` 或單引號(hào)’ ’ , 不使用雙引號(hào)

說(shuō)明

小程序開(kāi)發(fā)規(guī)范v1.0
聯(lián)合作者:@風(fēng)了個(gè)1
參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末坊饶,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子殴蓬,更是在濱河造成了極大的恐慌匿级,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件染厅,死亡現(xiàn)場(chǎng)離奇詭異痘绎,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)肖粮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)孤页,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人涩馆,你說(shuō)我怎么就攤上這事行施。” “怎么了魂那?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵蛾号,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我涯雅,道長(zhǎng)鲜结,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任活逆,我火速辦了婚禮精刷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘划乖。我一直安慰自己,他們只是感情好挤土,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布琴庵。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪迷殿。 梳的紋絲不亂的頭發(fā)上儿礼,一...
    開(kāi)封第一講書(shū)人閱讀 49,829評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音庆寺,去河邊找鬼蚊夫。 笑死,一個(gè)胖子當(dāng)著我的面吹牛懦尝,可吹牛的內(nèi)容都是我干的知纷。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼陵霉,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼琅轧!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起踊挠,我...
    開(kāi)封第一講書(shū)人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤乍桂,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后效床,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體睹酌,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年剩檀,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了憋沿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡谨朝,死狀恐怖卤妒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情字币,我是刑警寧澤则披,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站洗出,受9級(jí)特大地震影響士复,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜翩活,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一阱洪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧菠镇,春花似錦冗荸、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)盔粹。三九已至,卻和暖如春程癌,著一層夾襖步出監(jiān)牢的瞬間舷嗡,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工嵌莉, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留进萄,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓锐峭,卻偏偏與公主長(zhǎng)得像中鼠,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子只祠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349