一.核心目錄分工
- 目錄結構
│ index.html // 首頁入口頁面。可以配置一些meta信息或者統計代碼。│ package-lock.json // 記錄一次本地安裝的包版本的所有信息,包括版本號和依賴。本地安裝時,如果有該文件,會先按照該文件安裝npm包。│ package.json // 本地安裝時,項目所需要的npm包。│ README.md // 項目的說明文檔,markdown 格式├─build // 編譯配置目錄。├─config // 配置目錄。│ dev.env.js // 開發環境文件。│ index.js // 配置生產環境、開發環境、端口號等。│ prod.env.js // 生產環境文件。├─node_modules // npm加載的項目依賴模塊,無需提交到git倉庫。└─src // 開發目錄│ App.vue // 項目入口文件。非必要不允許修改。│ main.js // 項目核心js文件。主要用於初始化vue實例以及引入一些全局組件。├─api // 項目接口調用配置,非必要不允許修改。├─assets // 項目靜態文件目錄。│ ├─css // 樣式文件。│ ├─images // 圖片。│ └─js├─components // 頁面組件目錄。├─config // 配置文件。環境配置+api配置+url配置+鍵盤事件配置。├─pages // 頁面入口文件目錄。├─router // 路由配置。├─store // vuex配置。│ │ index.js // 配置文件,用來組裝模塊和導出store。│ └─modules // 模塊目錄。└─util // 存放公共js目錄。
- pages&compnents目錄
- pages:頁面入口文件目錄,router目錄中引入的頁面路徑。該文件應盡量保持整潔易讀,遇到比較復雜的頁面,可以引入組件去寫。
- compnents:組件目錄。公共的組件可放在common文件夾中,其他的組件按照功能不同,分到不同的文件夾中。
- ps:文件命名統一使用駝峰形式。
二.順序規范
- 組件/實例順序(列舉了項目中比較常用的組件/實例,詳細請看)
{name: 'tradeDetail',/** 模板依賴 **/components: {},directives: {},/** 組合 **/mixins: [listMix],/** 接口 **/props: {},/** 本地狀態 **/data: {return {}},computed: {},/** 事件 **/watch: {},/** 生命周期 **/beforeCreate () {},created () {},beforeMount () {},mounted () {},beforeUpdate () {},updated () {},activated () {},deactivated () {},beforeDestroy () {},destroyed () {},/** 非響應式的屬性 **/methods: {}}
- html標簽中元素特性/屬性順序
<divclass=""is=""v-for="(item, index) in list"v-if/v-else-if/v-else=""v-show=""v-cloak=""v-prev-onceid=""ref="":key=""slot=""v-model=""組件本身支持的特性/屬性v-on:click/submit=""v-html=""v-text=""></div>
三.html代碼規范<template>
- 屬性等號后面全統一使用雙引號,如果雙引號中有字符串拼接,就用單引號包字符串。例如
<el-dialog :title="'編輯優惠券' + title" :visible.sync="isShow"> - 縮進2個空格。縮進沒有報錯,但是自己得注意縮進。
- 所有運算符兩邊都要有空格,根據js的標准來。
- v-show、v-if的使用。
v-show:需要頻繁切換的使用。
v-if:初始化渲染后不太會改變的。
ps:v-show 不支持<template>元素,也不支持 v-else。在element-ui部分組件中也會失效。 - v-for 一定要有鍵值 key。
- v-for和v-if盡量避免在一個html標簽中使用。如果同時使用,v-for的優先級大於v-if。
- 靜態資源引用使用絕對路徑,如:”~assets/xxx.png”,禁止使用相對路徑,如:”../../xx.png”。
- 指令縮寫。組件中
v-bind:value用:value代替;v-on:focus用@focus代替。
四.js代碼規范<script>
- 字符串賦值統一使用單引號。
- this復制統一使用
let that = this。 - vue中變量定義聲明用let或const。
- 臨時變量統一使用駝峰形式命名。
五.css規范<style>
- 頁面中樣式盡量寫在
<style scoped></style>中,避免引起多頁面樣式被覆蓋。 <style></style>中的樣式都需要加上父元素class,且這個父元素class在所有頁面中必須是唯一的。- 覆蓋餓了么組件樣式時,統一加上父元素class。
六.vue相關
- 組件文件中必須包含name,name必須是由多個單詞組成,並且是駝峰形式。
- 組件中的prop變量統一使用駝峰形式。
- prop定義要盡量詳細。例如:
propE: {type: Object,// 對象或數組默認值必須從一個工廠函數獲取default: function () {return { message: 'hello' }}}
七.vue-router
所有的vue項目,統一使用路由懶加載。例如:
{path: '(dealer/)?trade/details/:id',name: 'tradeDetail', // 訂單詳情component (resolve) {require(['@/pages/trade/Details.vue'], resolve)}}
八.關於靜態資源(圖片)的使用
1.img標簽中直接使用本地靜態圖片。
<img src="~assets/images/icon-payment-WeChat.png"/>
2.import或者require中引入本地靜態圖片。
import iconAalipay from '@/assets/images/icon-payment-Alipay.png'data () {return {imgUrl: require('@/assets/images/icon-payment-Alipay.png')}}
3.樣式background中使用的本地靜態圖片。
background:url(~assets/images/icon-item-grid-selected.png)
