新手必讀

初始化運(yùn)行工程

  • 直接使用npm命令行
npm install
npm run serve

npm 請(qǐng)使用淘寶鏡像:
npm config set registry https://registry.npm.taobao.org
  • 使用vue cli 3.0運(yùn)行
全局安裝vue cli 3.0
npm install -g @vue/cli

啟動(dòng)vue cli 界面
運(yùn)行:vue ui
進(jìn)入Vue 項(xiàng)目管理器 導(dǎo)入當(dāng)前項(xiàng)目
選擇任務(wù)->serve 運(yùn)行
  • 代碼自動(dòng)檢查
工程默認(rèn)已經(jīng)啟用保存自動(dòng)格式化和修正代碼規(guī)范,如果需求全局檢查
運(yùn)行: npm run lint
或進(jìn)入 vue ui 界面 : 任務(wù)->lint
  • 工程配置項(xiàng)
請(qǐng)不要隨意改變以下文件內(nèi)容:
vue.config.js
babel.config.js

可以動(dòng)的配置項(xiàng)為: vue.config.js 下的 devServer
  • 本地代理修改
本地代理配置在vue.config.js文件中:
devServer: {
    proxy: {
      '/api': {    
        target: 'https://XXXX.com/',
        pathRewrite: {
          '^/api': ''
        },
        changeOrigin: true,
        secure: false  
      }
    }
}
本地調(diào)試修改代理地址隨意,但不要提交個(gè)人調(diào)試的內(nèi)容到svn或git

工程結(jié)構(gòu)

  • 文件夾結(jié)構(gòu)
dist //編譯后的目錄
public //公共目錄,編譯后會(huì)直接拷貝該目錄下內(nèi)容到編譯目標(biāo)文件
src  // 代碼目錄
  |--api // 接口目錄,所有接口內(nèi)容在這里定義
  |    |--_mock //模擬接口目錄,只在開(kāi)發(fā)模式下生效和參與編譯
  |
  |--assets //素材目錄,存放圖片,字體等素材目錄
  |--components // 公共組件目錄
  |--router //頁(yè)面路由定義目錄
  |--store //頁(yè)面狀態(tài)機(jī)
  |--styles // 全局樣式主題定義目前
  |--utils //工具方法定義
  |--views //視圖文件夾,頁(yè)面請(qǐng)寫在這里
  |   |--_doc //項(xiàng)目文檔,無(wú)須關(guān)注,只在開(kāi)發(fā)模式下生效和參與編譯
  |   |--layout //頁(yè)面布局文件夾,里面定義了菜單了主視圖布局定義
  |   |--user //公共用戶模塊,登錄,修改密碼用戶信息等
      
  • 特殊文件說(shuō)明
1. vue.config.js 
工程配置文件,一般情況下,只允許修改代理地址信息,如需深入了解請(qǐng)?jiān)L問(wèn):https://cli.vuejs.org/zh/config/
修改常用項(xiàng)內(nèi)容請(qǐng)通過(guò)使用vue ui上直接修改配置

2. package.json
第三方代碼包的安裝請(qǐng)分清楚是開(kāi)發(fā)依賴包(devDependencies),還是運(yùn)行時(shí)依賴包(dependencies),不要隨意保存安裝內(nèi)容,或者通過(guò)vue ui上安裝相關(guān)依賴

功能開(kāi)發(fā)

  • 功能塊區(qū)分
以一級(jí)菜單為主功能塊劃分,每個(gè)菜單一個(gè)文件夾,每個(gè)葉子菜單路由對(duì)應(yīng)一個(gè)菜單文件夾下的index.vue
  • 功能示例
開(kāi)發(fā) 系統(tǒng)設(shè)置->菜單管理:

1.定義的文件夾和文件有:
views/system_setting
views/system_setting/menu_mgr
views/system_setting/menu_mgr/index.vue
api/system_setting.js

2.定義相關(guān)路由
router/asyncRouter.js
{
    path: '/system_setting',
    component: Layout,
    meta: { title: '系統(tǒng)設(shè)置', icon: 'news' },
    children: [
      {
        path: 'menu_mgr',
        component: () => import('@/views/system_setting/menu_mgr/index'),
        meta: { title: '菜單管理',authCode:'system_setting.menu_mgr' }
      }
    ]
  }
路由路徑為文件夾路徑
authCode:授權(quán)碼,需要唯一,用于權(quán)限管理,可不填寫,默認(rèn)自動(dòng)為菜單路徑(/改.)

編碼規(guī)范

  • 命名問(wèn)題
文件夾: 使用全部小寫,單詞間用下劃線分開(kāi),system_setting
JS文件: 駝峰命名, systemSetting.js
VUE組件: 首字母大寫, PageTable.vue
樣式定義: 中劃線隔開(kāi), item-wapper
變量定義: 駝峰命名
宏定義: 大寫 下劃線隔開(kāi) MAX_COUNT
資源命名: 下劃線命名, login_bg.png
開(kāi)發(fā)下的文件或文件夾請(qǐng)以'_'開(kāi)頭 (不參與生產(chǎn)編譯)
  • 接口定義
api下的接口定義: 函數(shù)名 = 動(dòng)詞+對(duì)象
基礎(chǔ)的增刪改查 統(tǒng)一命名為:
GET方法:
get對(duì)象Info(query)
get對(duì)象PageList(query)
get對(duì)象List(query)
POST方法:
create對(duì)象(params)
update對(duì)象(params)
delete對(duì)象(id)

例如:
import request from '@/utils/request'

export function getMenuTree () {
  return request.get('/mock/menu/tree')
}
export function getMenuList (query) {
  return request.get('/mock/menu/tree', {params:query})
}
export function createMenu (params) {
  return request.post('/mock/menu/create', params)
}
export function updateMenu (params) {
  return request.post('/mock/menu/update', params)
}
export function deleteMenu (id) {
  return request.post('/mock/menu/delete', {id})
}
  • vuex 狀態(tài)機(jī)使用
全局應(yīng)用級(jí)別的狀態(tài)定義在 /store/modules/app.js 下
各個(gè)業(yè)務(wù)模塊定義各自的modules,不要模塊間穿插使用,
相關(guān)文檔:https://vuex.vuejs.org/zh/guide/
  • 異步請(qǐng)求
整個(gè)項(xiàng)目的異步請(qǐng)求方式寫法采用ES7 的 async-await 
async created () {
    this.menuTree = await getMenuTree()
}
async save () {
  try{
    await createMenu(this.params)
  }catch(err){
    console.log(err) //請(qǐng)求異常捕獲的err內(nèi)容的接口返回內(nèi)容
  }
}
  • 使用ES6新特性處理業(yè)務(wù)
合理的使用ES6的特征函數(shù),和函數(shù)編程處理復(fù)雜業(yè)務(wù)和邏輯,使得代碼清晰不冗長(zhǎng),比例數(shù)組的forEach,map,filter,find,some 等
ES6相關(guān)文檔:http://es6.ruanyifeng.com/
  • VUE 通用組件
通用組件以文件夾的形式定義在components下,index.vue為組件入口
作為通用組件請(qǐng)判斷它是否是本項(xiàng)目中可能在多個(gè)業(yè)務(wù)塊的地方多次出現(xiàn)和復(fù)用,非這種情況的請(qǐng)直接定義在業(yè)務(wù)文件夾內(nèi).
組件的定義抽離出公共的props,對(duì)每個(gè)props都定義屬性的類型(type)和默認(rèn)值(default),組件需考慮結(jié)果輸出和結(jié)果導(dǎo)入2種情況
全局組件(使用度頻繁):
components/index.js 引入
局部組件(偶爾使用到):
具體功能塊代碼中引入
import XXX from '@/components/XXX'

組件定義相關(guān)文檔:https://cn.vuejs.org/v2/guide/components.html
  • VUE 組件內(nèi)樣式
1.內(nèi)部作用域
定義內(nèi)部作用域的樣式,務(wù)必添加scoped關(guān)鍵字,樣式使用scss預(yù)編譯語(yǔ)言
建議scss層級(jí)嵌套不要超過(guò)5級(jí)
<style lang="scss" scoped>
.class-a{
  .class-b{
    &.class-c{

    }
  }
  >class-d{

  }
}
2. 全局作用域
對(duì)應(yīng)需要改變子組件內(nèi)樣式的,需要使用全局樣式作用域才有效,此時(shí)務(wù)必定義組件最外層樣式名(建議用組件名+box命名):
例如:組件PageList.vue
<template>
  <div class="page-list-box">
    <el-table></el-table>
  </div>
</templace>
<style lang="scss">
.page-list-box{
  .el-table{

  }
}
scss 語(yǔ)法相關(guān)文檔:https://www.sass.hk/docs/

</style>
  • 全局過(guò)濾器,指令定義
內(nèi)容定義在util/filters.js和 util/direactive.js中,具體請(qǐng)直接進(jìn)這2個(gè)文件看目前已經(jīng)定義的相關(guān)過(guò)濾器和指令
相關(guān)指令文檔:https://cn.vuejs.org/v2/guide/custom-directive.html
相關(guān)過(guò)濾器文檔:https://cn.vuejs.org/v2/guide/filters.html
  • VUE 全局mixin
內(nèi)容定義在util/mixin.js中
其中主要定義了 
closeTab(arg) 關(guān)閉TAB頁(yè) arg:非必填 回調(diào)參數(shù)
resetFields(formRef) 重置表單內(nèi)容和驗(yàn)證 formName 表單的引用ref名稱
operType: 針對(duì)頁(yè)面頁(yè)面增改查使用,為路由綁定參數(shù)
mixin 中定義的方法可在各個(gè)vue實(shí)例對(duì)象中使用
相關(guān)文檔:https://cn.vuejs.org/v2/guide/mixins.html
  • vue 模版HTML
1.模版內(nèi)html 標(biāo)簽屬性排一行,開(kāi)頭和收尾標(biāo)簽對(duì)齊(有子標(biāo)簽)
2.vue 內(nèi)置指令和事件都采用縮寫寫法:@click,:href 等
相關(guān)模版語(yǔ)法文檔:https://cn.vuejs.org/v2/guide/syntax.html
<template>
  <a :href="url"></a>
  <table>
    <tr @click="test">
      <td>測(cè)試</td>
    </tr>
  </table>
</template>
  • 字體圖標(biāo)
工程內(nèi)的所有圖標(biāo)都使用element-ui自帶的字體圖片,外加iconfont 阿里巴巴矢量圖標(biāo)庫(kù)內(nèi)定義的項(xiàng)目圖標(biāo),需增加額外圖標(biāo)請(qǐng)告知加入項(xiàng)目圖標(biāo)庫(kù)
圖標(biāo)庫(kù)css 定義在public/index.html
  • 頁(yè)面布局
頁(yè)面使用合理使用flex進(jìn)行布局,高效且容易實(shí)現(xiàn)多種布局結(jié)果
flex布局相關(guān)文檔:http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子灭抑,更是在濱河造成了極大的恐慌垫释,老刑警劉巖于微,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件设江,死亡現(xiàn)場(chǎng)離奇詭異朵耕,居然都是意外死亡加匈,警方通過(guò)查閱死者的電腦和手機(jī)存璃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)雕拼,“玉大人纵东,你說(shuō)我怎么就攤上這事∩犊埽” “怎么了偎球?”我有些...
    開(kāi)封第一講書人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵洒扎,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我衰絮,道長(zhǎng)袍冷,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任猫牡,我火速辦了婚禮胡诗,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘淌友。我一直安慰自己煌恢,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布震庭。 她就那樣靜靜地躺著瑰抵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪归薛。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,274評(píng)論 1 300
  • 那天匪蝙,我揣著相機(jī)與錄音主籍,去河邊找鬼。 笑死逛球,一個(gè)胖子當(dāng)著我的面吹牛千元,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播颤绕,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼幸海,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了奥务?” 一聲冷哼從身側(cè)響起物独,我...
    開(kāi)封第一講書人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎氯葬,沒(méi)想到半個(gè)月后挡篓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡帚称,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年官研,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片闯睹。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡戏羽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出楼吃,到底是詐尸還是另有隱情始花,我是刑警寧澤妄讯,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站衙荐,受9級(jí)特大地震影響捞挥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜忧吟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一砌函、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧溜族,春花似錦讹俊、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至寡壮,卻和暖如春贩疙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背况既。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工这溅, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人棒仍。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓悲靴,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親莫其。 傳聞我的和親對(duì)象是個(gè)殘疾皇子癞尚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容