實踐 | Element UI + Vue 管理系統首頁

2021-03-02 小明菜市場

小小上一篇推薦了幾個超牛逼的公眾號,這次將會回歸實踐,進入本周的第一篇,本周第一篇將會是Element UI + Vue 製作相關的Tab切換。

核心知識點

關於 v-show屬性的相關使用

大致效果圖

其中上方文頭部導航,左邊為菜單選項,中間為index頁面。

前提

前提需要閱讀上一篇,使用Vue UI 方式創建 Hello World Vue 項目。

教程進行組件化

新建目錄如下,新建文件如下其中分為兩個文件夾,一個為views文件夾,一個為components文件夾,一個存放相關文件頁面信息,一個存放相關的組件信息。

創建相關的url

創建相關的頁面url在router目錄下新建相關的文件,代碼如下

 {
path: '/index',
name: 'index',
component: () => import('../views/Index')
},

index頁面組件信息

index頁面相關代碼文件如下


<template>
<div>
<BoxHeader :msg="msg"></BoxHeader>
<div>
<el-container>
<Menum></Menum>
<BoxIndex v-show="cur==0"></BoxIndex>
<HelloWorld v-show="cur==1"></HelloWorld>
</el-container>
</div>
</div>
</template>
<style>
.el-header {
background-color: #B3C0D1;
color: #333;
}

.el-aside {
color: #333;
}
</style>
<script>
import Menum from "../components/Menum";
import BoxIndex from "../components/BoxIndex";
import BoxHeader from "../components/BoxHeader";
import HelloWorld from "../components/HelloWorld";
export default {
components: {
Menum,
BoxIndex,
BoxHeader,
HelloWorld
},
data() {
return {
msg: 'https://www.iming.info/',
cur: 1
}
}
}
</script>

其中把三個組件進行相關的註冊,註冊到頁面中。這三個組件分別為BoxHeader,BoxIndex,Menum文件,對這三個文件進行相關的註冊。

頭部文件

進入頭部文件,這裡對頭部文件進行代碼,書寫,代碼如下

<template>
<div>
<a href="http://localhost:8080/logout">退出</a>
</div>
</template>

<script>
export default {
name: 'BoxHeader',
props: {
msg: String
}
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
h3 {
margin: 40px 0 0;
}
ul {
list-style-type: none;
padding: 0;
}
li {
display: inline-block;
margin: 0 10px;
}
.text1 {
text-align: right;
padding: 10px;
font-size: 20px;
}
.text1 a{
text-decoration: none;
}
</style>

菜單文件

菜單文件代碼如下。並添加相關的事件綁定,確保能夠菜單伸縮。

<template>
<el-aside width="200px">
<el-menu :default-openeds="['1']">
<el-submenu index="1">
<template slot="title">保險產品管理</template>
<el-menu-item-group>
<el-menu-item index="1-1">保險產品查詢</el-menu-item>
</el-menu-item-group>
</el-submenu>
<el-submenu index="2">
<template slot="title">用戶管理</template>
<el-menu-item-group>
<el-menu-item index="2-1">封號管理</el-menu-item>
</el-menu-item-group>
</el-submenu>
<el-submenu index="3">
<template slot="title">問答管理</template>
<el-menu-item-group>
<el-menu-item index="3-1">問題管理</el-menu-item>
<el-menu-item index="3-2">回答管理</el-menu-item>
</el-menu-item-group>
</el-submenu>
<el-submenu index="4">
<template slot="title">數據統計</template>
<el-menu-item-group>
<el-menu-item index="4-1">保險產品數據</el-menu-item>
<el-menu-item index="4-2">保險公司數據</el-menu-item>
</el-menu-item-group>
</el-submenu>
</el-menu>
</el-aside>
</template>

<script>
export default {
name: 'Menum',
methods: {
ming(){
console.log("3333");
}
}
}
</script>

上方使用的是Element Ui 框架實現

主頁文件

這裡主頁文件為幾個簡單的主頁文件。一個為示例,一個為主頁,代碼分別如下

<template>
<el-container>
<el-header>
<el-dropdown>
<i></i>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item>查看</el-dropdown-item>
<el-dropdown-item>新增</el-dropdown-item>
<el-dropdown-item>刪除</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<span>王小虎</span>
</el-header>

<el-main>
<el-table :data="tableData">
<el-table-column prop="date" label="日期" width="140">
</el-table-column>
<el-table-column prop="name" label="姓名" width="120">
</el-table-column>
<el-table-column prop="address" label="地址">
</el-table-column>
</el-table>
</el-main>
</el-container>
</template>

<script>
export default {
name: 'HelloWorld',
props: {
msg: String
}
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
h3 {
margin: 40px 0 0;
}
ul {
list-style-type: none;
padding: 0;
}
li {
display: inline-block;
margin: 0 10px;
}
a {
color: #42b983;
}
</style>

<template>
<div>
<h1>{{ msg }}</h1>
<p>
For a guide and recipes on how to configure / customize this project,<br>
check out the
<a href="https://cli.vuejs.org" target="_blank" rel="noopener">vue-cli documentation</a>.
</p>
<h3>Installed CLI Plugins</h3>
<ul>
<li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel" target="_blank" rel="noopener">babel</a></li>
<li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-router" target="_blank" rel="noopener">router</a></li>
<li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-vuex" target="_blank" rel="noopener">vuex</a></li>
<li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-eslint" target="_blank" rel="noopener">eslint</a></li>
</ul>
<h3>Essential Links</h3>
<ul>
<li><a href="https://vuejs.org" target="_blank" rel="noopener">Core Docs</a></li>
<li><a href="https://forum.vuejs.org" target="_blank" rel="noopener">Forum</a></li>
<li><a href="https://chat.vuejs.org" target="_blank" rel="noopener">Community Chat</a></li>
<li><a href="https://twitter.com/vuejs" target="_blank" rel="noopener">Twitter</a></li>
<li><a href="https://news.vuejs.org" target="_blank" rel="noopener">News</a></li>
</ul>
<h3>Ecosystem</h3>
<ul>
<li><a href="https://router.vuejs.org" target="_blank" rel="noopener">vue-router</a></li>
<li><a href="https://vuex.vuejs.org" target="_blank" rel="noopener">vuex</a></li>
<li><a href="https://github.com/vuejs/vue-devtools#vue-devtools" target="_blank" rel="noopener">vue-devtools</a></li>
<li><a href="https://vue-loader.vuejs.org" target="_blank" rel="noopener">vue-loader</a></li>
<li><a href="https://github.com/vuejs/awesome-vue" target="_blank" rel="noopener">awesome-vue</a></li>
</ul>
</div>
</template>

<script>
export default {
name: 'HelloWorld',
props: {
msg: String
}
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
h3 {
margin: 40px 0 0;
}
ul {
list-style-type: none;
padding: 0;
}
li {
display: inline-block;
margin: 0 10px;
}
a {
color: #42b983;
}
</style>

進行事件綁定

這裡由於跨兩個組件,所以進行事件綁定,當子組件觸發事件以後,先調用子組件的方法,再通過相關參數,調用父組件的方法,通過調用父組件的方法,實現更改父組件頁面的值。

具體流程如下

父組件創建相關方法,並綁定事件創建相關方法
 methods: {
changeData(){
console.log(444444);
this.cur = 1;
}
}

綁定相關事件
 <Menum @callFather="changeData"></Menum>

子組件創建相關方法並調用
ming(){
console.log("3333");
this.$emit("callFather");
}

子組件創建相關方法並完成方法綁定
        <el-menu-item-group>
<el-menu-item index="1-1" v-on:click="ming">保險產品查詢</el-menu-item>
</el-menu-item-group>

子組件全部代碼如下
<template>
<el-aside width="200px">
<el-menu :default-openeds="['1']">
<el-submenu index="1">
<template slot="title">保險產品管理</template>
<el-menu-item-group>
<el-menu-item index="1-1" v-on:click="ming">保險產品查詢</el-menu-item>
</el-menu-item-group>
</el-submenu>
<el-submenu index="2">
<template slot="title">用戶管理</template>
<el-menu-item-group>
<el-menu-item index="2-1">封號管理</el-menu-item>
</el-menu-item-group>
</el-submenu>
<el-submenu index="3">
<template slot="title">問答管理</template>
<el-menu-item-group>
<el-menu-item index="3-1">問題管理</el-menu-item>
<el-menu-item index="3-2">回答管理</el-menu-item>
</el-menu-item-group>
</el-submenu>
<el-submenu index="4">
<template slot="title">數據統計</template>
<el-menu-item-group>
<el-menu-item index="4-1">保險產品數據</el-menu-item>
<el-menu-item index="4-2">保險公司數據</el-menu-item>
</el-menu-item-group>
</el-submenu>
</el-menu>
</el-aside>
</template>

<script>
export default {
name: 'Menum',
methods: {
ming(){
console.log("3333");
this.$emit("callFather");
}
}
}
</script>

父組件全部代碼如下
<template>
<div>
<BoxHeader :msg="msg"></BoxHeader>
<div>
<el-container>
<Menum @callFather="changeData"></Menum>
<BoxIndex v-show="cur==0"></BoxIndex>
<HelloWorld v-show="cur==1"></HelloWorld>
</el-container>
</div>
</div>
</template>
<style>
.el-header {
background-color: #B3C0D1;
color: #333;
}

.el-aside {
color: #333;
}
</style>
<script>
import Menum from "../components/Menum";
import BoxIndex from "../components/BoxIndex";
import BoxHeader from "../components/BoxHeader";
import HelloWorld from "../components/HelloWorld";
export default {
components: {
Menum,
BoxIndex,
BoxHeader,
HelloWorld
},
data() {
return {
msg: 'https://www.iming.info/',
cur: 0
}
},
methods: {
changeData(){
console.log(444444);
this.cur = 1;
}
}
}
</script>

完成效果圖前

相關焦點

  • Vue入門10 vue+elementUI
    npm i element-ui -SCDN目前可以通過unpkg.com/element-ui獲取到最新版本的資源,在頁面上會js和css文件即可開始使用。<!以英語為例,在main.js中:import Vue from 'vue'import ElementUI from 'element-ui'import locale from 'element-ui/lib/locale/lang/en'Vue.use(ElementUI, { locale })12.1、創建工程
  • Element-UI 死而復生,基於Vue3.0的版本來了
    前段時間很多人說 element ui 已經停止維護,issues 也被關閉了,更有人吐槽餓了麼被阿里收購後就各種坑爹,比如antd的聖誕節彩蛋事件,大家應該記憶猶新吧,正好明天又是聖誕節,應該不會出啥么蛾子了。
  • 前端技術棧:5分鐘入門VUE+Element UI
    可以將vue項目打包成靜態文件npm install webpack -gvue 2.0 + Element UI 項目搭建基礎版本搭建隨便找個目錄輸入如下命令# 初始化一個叫做vue2_elementui的項目,使用webpack模板vue init webpack-simple vue2_elementui# 進入項目目錄
  • Vue 3下element-ui用不了怎麼辦,element-plus來幫你
    element-plus你可以理解為是element-ui支持Vue 3的版本,element-plus是一套支持Vue 3.0的組件庫,提供的組件涵蓋了絕大部分頁面UI的需求。在Vue 3的腳手架項目中,首先安裝element-plus的npm包,命令如下所示:npm install element-plus -S編輯main.js,引入整個element-plus組件和所需的樣式,由於element-plus組件內部默認使用英語,而我們項目需要使用中文
  • 如何創建vue項目並使用element框架中的el-select
    >命令:vue init webpack wmn預覽效果7、按Ctrl + C快捷鍵停止項目,執行命令npm i element-ui -S安裝ElementUI命令:npm i element-ui -S
  • vue-element-admin 4.0.0 正式版發布
    重大改變 基於 vue-cli@3進行構建 調整了項目的目錄結構 mock 文件移至根目錄下 layout 從 views 文件夾下移至 src 下 使用了最新的 eslint-plugin-vue
  • thinkphp如何使用vue進行web開發
    終於我有機會,在一個公司內部的管理系統中成功將兩者融合。整個項目的系統後臺使用php的thinkphp框架,前端使用vue的element ui框架,前後臺交互使用axios庫。這就是整個架構了。我要介紹的重點也就是大家關心的thinkphp,如何與vue交互。
  • 餓了麼公司前端團隊開源前端基於 Vue的桌面端組件庫-Element
    # npm i --save element-angular或者CDN目前可以通過 unpkg.com/element-ui 獲取到最新版本的資源,在頁面上引入 js 和 css 文件即可開始使用。-- 引入樣式 --><link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css"><!
  • Vue Element+Node.js開發企業通用管理後臺系統
    5-1 element-ui基本用法5-2 element-ui按需加載5-3 element-ui插件引用5-4 表單的基本用法5-5 表單校驗的基本用法5-6 表單校驗的高級用法5-7 表單常見屬性解析5-8 el-form源碼解析第6章 Vuex和Vue-router進階對Vue的全家桶中兩個重要插件:Vuex
  • 2020年 16 個很有用的 Vue UI庫
    Vue Material (⭐️ 8587)網站: https://vuematerial.io/github: https://github.com/vuematerial/vue-materialVue Material 是一個輕量級的框架, 建立在谷歌的 Material Design 基礎上。
  • SPA單頁面應用優化VUE性能優化
    圖片的懶加載可以讓用戶按照需求從伺服器上加載圖片,這樣即節省了用戶在代開首頁時的等待時間,也節省了伺服器的流量,所以是一個好的選擇。使用vue-lazyload做圖片懶加載減少請求數。1.然後試圖引入element-ui之後,最大文件大小沒多大變化,但是加載速度從5.8s變成了4.2s。
  • 史上最全:Vue 相關開源項目庫匯總
    UI組件element ★13489 - 餓了麼出品的Vue2的web UI工具套件Vux ★8133 - 基於Vue和WeUI的組件庫iview ★6634 - 基於 Vuejs 的開源 UI 組件庫mint-ui ★6253 - Vue 2的移動UI元素muse-ui ★3705 - 三端樣式一致的響應式 UI 庫
  • 如何在vue項目中使用sass並設置元素樣式
    elementJavaScriptsassCSS3 在創建vue框架項目時,可以使用CSS3定義元素樣式;還可以使用sass動態變量定義元素樣式那麼,如何在vue項目中使用sass?新建項目,選擇vue模板2、在項目中src/components文件夾下,新建vue文件,輸入文件名稱,點擊創建
  • vue-elemnt-admin學習
    vue-elemnt-admin學習vue-element-admin是一個基於vue,element-ui
  • 如何使用element中表格控制項並獲取行記錄
    1、創建vue項目,並使用安裝命令安裝element-ui;下載相關依賴包,然後使用HBuilderX導入項目創建vue項目,並導入項目2、在項目components文件夾下,滑鼠右鍵新建vue文件;輸入文件名稱,然後點擊創建
  • 如何在vue項目中使用muse-ui並創建一個form表單提交
    Muse UI是基於vue的開源組件庫,包含了不同的控制項;可以自定義主題,實現定製化。如果在vue項目中,如何使用muse-ui?cnpm install --global vue-cli3、使用vue init命令初始化項目,創建基於webpack模板的項目vue init
  • vue-element-admin v3.9.1 發布,後臺集成方案
    vue-element-admin v3.9.1 已發布,更新內容:feature[TagsView]: 支持滑鼠中鍵關閉 TagsView #1149feature
  • vue-cli安裝步驟詳解
    經過一番焦急的等待,我終於等到安裝好的這一刻了,可以看到element-ui-test目錄下已經新建好了一個demo文件夾了,裡面就是我們安裝的目錄結構了。還是使用cnpm 安裝 npm 運行,下載的適合就用國內淘寶的鏡像會比較快速,也不會下載中斷或出錯。
  • 2020年5個最佳Vue移動端組件庫|UI框架
    小夥伴們平時開發vue,react或是angular項目,都喜歡使用的什麼UI組件庫呢?今天,就來盤點下,幾個熱門優質的Vue.js移動端UI組件庫。1、Mint UI餓了麼開源的移動端UI組件庫,基於vue.js的移動端UI框架,包含豐富的 CSS 和 JS 組件,能夠滿足日常的移動端開發需求。