基於Vue的Ui框架---餓了麼公司基於vue開的的vue的Ui組件庫Element Ui
:基於vue pc端的Ui框架。MintUi
:基於vue 移動端的Ui框架。php
1.找官網
2.安裝css
cnpm install mint-ui -S
3.引入mint Ui的css 和 插件vue
import Mint from 'mint-ui'; Vue.use(Mint); import 'mint-ui/lib/style.css'
4.看文檔直接使用。
在mintUi組件上面執行事件的寫法:@click.nativewebpack
示例1:
配置完MintUI後:
若是把官方文檔中例子的代碼複製到項目裏能用就用。不能用就把官方包中的組件複製到項目中,而後在其餘組件中引用。web
新建一個組件:Picture.vue
<template> <div id="picture"> <mt-button @click.native="flag = true" size="large">選擇用戶頭像</mt-button> <mt-actionsheet :actions="actions" v-model="flag"></mt-actionsheet> </div> </template> <script> export default { name: "Picture", data() { return { list: [], flag: false, actions: [] } }, methods: { takePhoto() { alert('執行拍照'); }, openAlbum() { alert('打開相冊'); } }, mounted() { this.actions = [{ name: '拍照', method: this.takePhoto }, { name: '從相冊中選擇', method: this.openAlbum }]; } } </script> <style scoped> </style>
示例2:
下載mint-ui-master 包,將其中example>pages中所要用的vue組價複製到項目中:
好比:複製action-sheet.vue到項目中。重命名爲ActionSheet.vue。在Picture.vue中引用。npm
Picture.vue
<template> <div id="picture"> <v-actionSheet></v-actionSheet> <mt-button @click.native="flag = true" size="large">選擇用戶頭像</mt-button> <mt-actionsheet :actions="actions" v-model="flag"></mt-actionsheet> </div> </template> <script> import ActionSheet from "./ActionSheet"; export default { name: "Picture", components:{ 'v-actionSheet':ActionSheet, }, data() { return { list: [], flag: false, actions: [] } }, methods: { takePhoto() { alert('執行拍照'); }, openAlbum() { alert('打開相冊'); } }, mounted() { this.actions = [{ name: '拍照', method: this.takePhoto }, { name: '從相冊中選擇', method: this.openAlbum }]; } } </script> <style scoped> </style>
示例3:
Mint Ui infinite-scroll結合api接口實現真實上拉分頁加載更多Infinite scroll
無限滾動指令。加載頁面的時候會自動觸發一次 loadMore
爲 HTML 元素添加 v-infinite-scroll
指令便可使用無限滾動。滾動該元素,當其底部與被滾動元素底部的距離小於給定的閾值(經過 infinite-scroll-distance
設置)時,綁定到 v-infinite-scroll
指令的方法就會被觸發。infinite-scroll-disabled
:若爲真,則無限滾動不會被觸發element-ui
loadMore() { this.loading = true; setTimeout(() => { let last = this.list[this.list.length - 1]; for (let i = 1; i <= 10; i++) { this.list.push(last + i); } this.loading = false; }, 2500); }
綜合:
<template> <div id="news"> <p>新聞頁</p> <ul class="newList" v-infinite-scroll="loadMore" infinite-scroll-disabled="loading" infinite-scroll-distance="10"> <li v-for="(item, key) in list" :key="key"> {{ item.title }} </li> </ul> </div> </template> <script> export default { name: "News", data() { return { msg: "這是新聞組件", loading: false, page: 1, list: [], } }, methods: { loadMore() { this.getNewsList(); }, getNewsList() { this.loading = true; let api = 'http://www.phonegap100.com/appapi.php?a=getPortalList&catid=20&page=' + this.page; this.$http.get(api).then((res) => { this.list = this.list.concat(res.body.result); this.page += 1; //判斷最後一頁是否有數據。若沒數據,將loading =false,關閉無限滾動。 if (res.body.result.length < 20) { this.loading = true; } else { this.loading = false; } }) } }, mounted() { } } </script> <style scoped> .newList li { height: 3.4rem; line-height: 3.4rem; font-size: 1.3rem; } .newList li a { color: #2c3e50; } </style>
element UI的使用:
1.找官網
2.安裝api
cnpm i element-ui -S
3.使用方式babel
(1).引入element UI的css 和 插件app
import ElementUI from 'element-ui'; import 'element-ui/lib/theme-chalk/index.css'; Vue.use(ElementUI);
(2).webpack.config.js 配置file_loader (不用也行)
{ test: /\.(eot|svg|ttf|woff|woff2)(\?\S*)?$/, loader: 'file-loader' }
(3). 看文檔直接使用。把所要用的代碼直接複製進項目裏便可。
一、安裝依賴
cnpm install babel-plugin-component -D
-D:--save-dev 的縮寫
二、在babel.config.js 配置文件中添加plugins
module.exports = { presets: [ '@vue/cli-plugin-babel/preset' ], plugins: [ ["component",{ "libraryName": "element-ui", "styleLibraryName": "theme-chalk" } ]] }
三、在main.js中
import { Button, Select } from 'element-ui'; Vue.use(Button) Vue.use(Select)
在main.js中引入所要用的插件
import { Button, Select } from 'element-ui'; Vue.use(Button) Vue.use(Select)
引入對應的css
import 'element-ui/lib/theme-chalk/index.css';