一.核心目錄分工
- 目錄結構
│ 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標簽中元素特性/屬性順序
<div
class=""
is=""
v-for="(item, index) in list"
v-if/v-else-if/v-else=""
v-show=""
v-cloak=""
v-pre
v-once
id=""
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)