Vue項目引入組件庫

目錄

Vue 2.0的項目擴展
1.如何舒服地使用Atom
??安裝插件
??配置皮膚顏色
2.Vue項目引入組件庫
??引入方式
??支持ES2015
??Mint UI
??ElementUI
??iView
??Vonic
??MuseUI
3.Vue項目的調(diào)試工具
??vue-devtools
??移動端調(diào)試
????Chrome DevTools
????Safari Web Inspector
????Eruda
????spy-debuger
4.Vue項目官方依賴庫
??vue-loder
??vue-router
??Vuex
5.Vue項目第三方依賴庫
??ESlint
????ESlint規(guī)則摘要
????ESlint規(guī)則風格
????ESlint忽略文件

為了快速地搭建頁面戏蔑,你應該盡可能多地使用現(xiàn)成的Vue組件趣兄,如果有特殊的界面定制,也建議在現(xiàn)有組件庫的基礎上做封裝,直到你具備足夠的能力自己寫組件办绝。

目前有這些比較不錯的組件庫:Mint UIElementUIVoniciView去枷、MuseUIVUWE是复、RadonUIVue Antd淑廊、N3Vuikit蒋纬、VUX猎荠、vue-impressionFramework7

下面的截圖是筆者最開始接觸Vue組件庫時蜀备,抽取的六個組件庫做的對比:

Vue組件庫比較

可以看出iView和ElementUI是針對桌面端的組件庫关摇,并且具備很齊全的組件,而MintUI是針對移動端的組件庫碾阁。

但并不是說移動端開發(fā)不能引用桌面端的組件输虱,實際開發(fā)中是可以按需引入多個組件庫的,筆者是MintUI+iView脂凶。移動端的開發(fā)為了優(yōu)化性能宪睹,一定要按需引入,也叫部分引入蚕钦、局部引入亭病。下面會講到怎么按需引入。

引入方式

npm安裝

推薦使用 npm 的方式安裝嘶居,它能和 webpack 打包工具配合使用罪帖,方便管理。

組件庫的部分引入的方式只能通過npm進行邮屁,CDN不能實現(xiàn)部分引入

// 進入項目目錄
cd desktop/project
// 安裝插件并保存到package.json的dependencies(默認)
cnpm install mint-ui --save  // 相當于 cnpm install mint-ui -S cnpm 和 cnpm i mint-ui -S
// or 安裝插件并保存到package.json的devDependencies
cnpm install mint-ui --save-dev // 相當于 cnpm install mint-ui -D 和 cnpm i mint-ui -D
// 卸載dependencies插件 
cnpm uninstall mint-ui --save
// 卸載devDependencies插件
cnpm uninstall mint-ui --save-dev

CDN引入

<!-- 引入Vue -->
<script src="https://vuejs.org/js/vue.min.js"></script>
<!-- 引入樣式 -->
<link rel="stylesheet" >
<!-- 引入組件庫 -->
<script src="https://unpkg.com/mint-ui/lib/index.js"></script>

支持ES2015

為了性能著想整袁,移動端開發(fā)一定要采用部分引入的方式組件庫。

通過部分引入的方式佑吝,引入組件庫之前坐昙,必須要支持ES2015,否則會報錯芋忿。下面截圖是Mint-UI的部分引入要求的配置:

Mint-UI的部分引入要求配置的es2015
錯誤:babel_preset_es2015找不到

NPM引入

npm install babel-preset-es2015 -D

Mint UI

MintUI是由餓了么前端團隊推出的移動端組件庫炸客,簡潔、輕量級戈钢,正因為輕量級所以也缺少一些組件嚷量,在實際開發(fā)中,還需要引入第二套組件庫作為補充逆趣,比如桌面端的iView或ElementUI

npm安裝

npm i mint-ui -S

完整引入

// 在 main.js 中寫入以下內(nèi)容
import Vue from 'vue'
import MintUI from 'mint-ui'
import 'mint-ui/lib/style.css'
import App from './App.vue'

Vue.use(MintUI)

new Vue({
  el: '#app',
  components: { App }
})

按需引入

// 需要先安裝插件 babel-plugin-component
npm install babel-plugin-component -D
// 將 .babelrc 修改為:
{
  "presets": [
    ["es2015", { "modules": false }]
  ],
  "plugins": [["component", [
    {
      "libraryName": "mint-ui",
      "style": true
    }
  ]]]
}
// 在 main.js 中寫入以下內(nèi)容
import Vue from 'vue'
import { Button, Cell } from 'mint-ui'
import App from './App.vue'

Vue.component(Button.name, Button)
Vue.component(Cell.name, Cell)

new Vue({
  el: '#app',
  components: { App }
})

CDN

目前可以通過 unpkg.com/mint-ui 獲取到最新版本的資源蝶溶,在頁面上引入 js 和 css 文件即可開始使用

<!-- 引入Vue -->
<script src="http://vuejs.org/js/vue.min.js"></script>
<!-- 引入樣式 -->
<link rel="stylesheet" >
<!-- 引入組件庫 -->
<script src="https://unpkg.com/mint-ui/lib/index.js"></script>

關于事件綁定

在 Vue 2.0 中,為自定義組件綁定原生事件必須使用 .native 修飾符:

<my-component @click.native="handleClick">Click Me</my-component>

從易用性的角度出發(fā)宣渗,MintUI對 Button 組件進行了處理,使它可以監(jiān)聽 click 事件:

<mt-button @click="handleButtonClick">Click Me</mt-button>

但是對于其他組件田轧,還是需要添加 .native 修飾符傻粘。

ElementUI

ElementUI也是由餓了么前端團隊推出的組件庫,針對桌面端做的組件庫窒典,是Vue開發(fā)者使用最多的桌面端組件庫稽莉。盡管使用數(shù)量最多,但我感覺iView比ElementUI做得更好一些劈猪。

npm安裝

npm i element-ui -S

完整引入

// 在 main.js 中寫入以下內(nèi)容
import Vue from 'vue'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-default/index.css'
import App from './App.vue'

Vue.use(ElementUI)

new Vue({
  el: '#app',
  components: { App }
})

按需引入

// 需要先安裝插件 babel-plugin-component
npm install babel-plugin-component -D
// 將 .babelrc 修改為:
{
  "presets": [
    ["es2015", { "modules": false }]
  ],
  "plugins": [["component", [
    {
      "libraryName": "element-ui",
      "styleLibraryName": "theme-default"
    }
  ]]]
}
// 在 main.js 中寫入以下內(nèi)容
import Vue from 'vue'
import { Button, Select } from 'element-ui'
import App from './App.vue'

Vue.component(Button.name, Button)
Vue.component(Select.name, Select)

new Vue({
  el: '#app',
  components: { App }
})

CDN

目前可以通過 unpkg.com/element-ui 獲取到最新版本的資源战得,在頁面上引入 js 和 css 文件即可開始使用

<!-- 引入Vue -->
<script src="http://vuejs.org/js/vue.min.js"></script>
<!-- 引入樣式 -->
<link rel="stylesheet" >
<!-- 引入組件庫 -->
<script src="https://unpkg.com/element-ui/lib/index.js"></script>

iView

iView是由 TalkingData推出的面向桌面端贡避、后臺業(yè)務的組件庫刮吧,筆者使用感受掖蛤,覺得它比ElementUI更強大蚓庭,無論是文檔質(zhì)量器赞、demo質(zhì)量、組件數(shù)量方面请契,同時配有腳手架iView Cli爽锥,雖然ElementUI也有推出腳手架氯夷,但iView的腳手架封裝了可視化操作界面腮考,這一點還是比較人性化的。

iView組件庫的結(jié)構(gòu)如下:

iview組件結(jié)構(gòu)

下圖iView與Element的依賴庫對比棚放,可以看出iView的封裝更為高效席吴、簡潔:

iview和element對比

npm安裝

npm i iview -S

完整引入

// 在 main.js 中寫入以下內(nèi)容
import Vue from 'vue'
import App from './App.vue'
import 'iview/dist/styles/iview.css'    // 使用 CSS
import iView from 'iview'

Vue.use(iView)

new Vue({
  el: '#app',
  components: { App }
})

按需引入

// 需要先安裝插件 babel 或 babel-core
npm install babel -D
// 修改webpack配置文件webpack.conf.js為:
module: {
    rules: [
        { test: /iview.src.*?js$/, loader: 'babel' },
        { test: /\.js$/, loader: 'babel', exclude: /node_modules/ }
    ]
}
// 在 main.js 中寫入以下內(nèi)容
import Vue from 'vue'
import {Checkbox, Button} from 'iview/src/components/checkbox'
import 'iview/dist/styles/iview.css'    // 使用 CSS
import App from './App.vue'

Vue.component(Button.name, Button)
Vue.component(Checkbox.name, Checkbox)

new Vue({
  el: '#app',
  components: { App }
})

CDN

目前可以通過 unpkg.com/iview 獲取到最新版本的資源柬姚,在頁面上引入 js 和 css 文件即可開始使用

<!-- 引入Vue -->
<script src="http://vuejs.org/js/vue.min.js"></script>
<!-- 引入樣式 -->
<link rel="stylesheet" >
<!-- 引入組件庫 -->
<script src="http://unpkg.com/iview/dist/iview.min.js"></script>

組件使用規(guī)范

使用:prop傳遞數(shù)據(jù)格式為 數(shù)字搬设、布爾值或函數(shù)時撕捍,必須帶:(兼容String除外,具體看組件文檔)默色,比如:

// 正確的使用方法:
<Page :current="1" :total="100"></Page>

// 錯誤的使用方法:
<Page current="1" total="100"></Page>

Vonic

適用于移動端簡單頁面腿宰,因為不支持npm安裝

依賴

vonic 依賴以下幾個庫吃度,在調(diào)用 vonic 之前椿每,要確保已經(jīng)引入

  • vue.js
  • vue-router.js
  • axios.js (axios是Vue官方推薦的 ajax 替代方案)

CDN

目前可以通過 unpkg.com/vonic 獲取到最新版本的資源英遭,在頁面上引入 js 和 css 文件即可開始使用

<!-- 定制版 圖標 樣式 -->
<link rel="stylesheet" >

<!-- 依賴庫 axios/vue/vue-router -->
<script src="https://unpkg.com/axios@0.15.3/dist/axios.min.js"></script>
<script src="https://unpkg.com/vue@2.1.10/dist/vue.min.js"></script>
<script src="https://unpkg.com/vue-router@2.2.1/dist/vue-router.min.js"></script>

<!-- vonic庫 -->
<script src="https://unpkg.com/vonic@2.0.0-beta.11/dist/vonic.min.js"></script>

MuseUI

適用于移動端和桌面端贪绘,對應于Vue 1.0版本的叫vue-carbon

依賴

// 引入到index.html的<head>中
<link rel="stylesheet" >
<link rel="stylesheet" >

npm安裝

npm i muse-ui -S

完整引入

// 在 main.js 中寫入以下內(nèi)容
import Vue from 'vue'
import MuseUI from 'muse-ui'
import 'muse-ui/dist/muse-ui.css'

Vue.use(MuseUI)

new Vue({
  el: '#app',
  components: { App }
})

按需引入

// 需要先安裝插件 babel-plugin-component
npm install babel-plugin-component -D
//將 webpack.base.conf.js 修改為:
{
  // ...
  rules: {
    loaders: [
      // ...
      {
        test: /muse-ui.src.*?js$/,
        loader: 'babel-loader'
      },
      {
        test: /\.vue$/,
        loader: 'vue-loader',
        options: {
          loaders: {
            less: [
              'vue-style-loader',
              'css-loader',
              {
                loader: 'less-loader',
                options: {
                  globalVars: {
                    museUiTheme: `'${museUiThemePath}'`,
                  }
                }
              }
            ]
          }
        }
      }
    ]
  },
  resolve: {
    // ...
    alias: {
      'muse-components': 'muse-ui/src'
    }
  }
}
// 在 main.js 中寫入以下內(nèi)容
import Vue from 'vue'
import 'muse-components/styles/base.less' // 加載基礎的樣式
import {appBar, avatar} from 'muse-components/appBar'

Vue.component(appBar.name, appBar)
Vue.component(avatar.name, avatar)

new Vue({
  el: '#app',
  components: { App }
})

CDN

目前可以通過 unpkg.com/muse-ui 獲取到最新版本的資源均函,在頁面上引入 js 和 css 文件即可開始使用

<!-- 引入Vue -->
<script src="https://unpkg.com/vue@2.1.10/dist/vue.min.js"></script>
<!-- 引入樣式 -->
<link rel="stylesheet" >
<!-- 引入組件庫 -->
<script src="https://unpkg.com/muse-ui@2.1.0/dist/muse-ui.js"></script>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末洛勉,一起剝皮案震驚了整個濱河市收毫,隨后出現(xiàn)的幾起案子此再,更是在濱河造成了極大的恐慌玲销,老刑警劉巖贤斜,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件猴抹,死亡現(xiàn)場離奇詭異蟀给,居然都是意外死亡坤溃,警方通過查閱死者的電腦和手機薪介,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門汁政,熙熙樓的掌柜王于貴愁眉苦臉地迎上來记劈,“玉大人并巍,你說我怎么就攤上這事懊渡【猓” “怎么了誓禁?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵摹恰,是天一觀的道長。 經(jīng)常有香客問我姑宽,道長姜盈,這世上最難降的妖魔是什么低千? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任配阵,我火速辦了婚禮馏颂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘棋傍。我一直安慰自己救拉,他們只是感情好,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布瘫拣。 她就那樣靜靜地躺著亿絮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪麸拄。 梳的紋絲不亂的頭發(fā)上派昧,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機與錄音,去河邊找鬼泻拦。 笑死晦雨,一個胖子當著我的面吹牛对嚼,可吹牛的內(nèi)容都是我干的杏愤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼曲聂,長吁一口氣:“原來是場噩夢啊……” “哼膜楷!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤混稽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體汰翠,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年攒盈,在試婚紗的時候發(fā)現(xiàn)自己被綠了尚蝌。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片姿鸿。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情榔袋,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布滩报,位于F島的核電站脓钾,受9級特大地震影響可训,放射性物質(zhì)發(fā)生泄漏握截。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望伶椿。 院中可真熱鬧踩麦,春花似錦莫湘、人聲如沸郑气。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽尾组。三九已至忙芒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間演怎,已是汗流浹背匕争。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留爷耀,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓拍皮,卻偏偏與公主長得像歹叮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子铆帽,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

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

  • 剛開始做母親的時候咆耿,我緊張到整晚整晚不睡覺。他們的每一個動作爹橱、每一次呼吸我都能清晰的感知到萨螺。看著身邊小小的他...
    玉的心貝閱讀 233評論 0 0
  • 培訓行業(yè)當前發(fā)展如火如荼,通過各種途徑進入培訓行業(yè)的培訓師們在各自專業(yè)領域展示著自己的才華慰技,同時也帶給受訓人員各種...
    友誼咨詢龍老師閱讀 818評論 0 2
  • 心心念念的腦洞大開第三彈終于來啦~ 用眼觀察椭盏,用心發(fā)現(xiàn),用腦思考吻商,用手表達 記錄身邊美好的小事物~ 你們喜歡嗎掏颊?
    溫暖的冰珊閱讀 590評論 6 21