Heim Web-Frontend js-Tutorial Verwenden von Elememt-UI zum Erstellen des Management-Backends in Vue (ausführliches Tutorial)

Verwenden von Elememt-UI zum Erstellen des Management-Backends in Vue (ausführliches Tutorial)

Jun 04, 2018 am 11:33 AM
后台 管理

In diesem Artikel erfahren Sie im Detail den Prozess des Aufbaus eines Management-Backends mit Vue Elememt-UI und zugehörigen Codebeispielen. Bitte lesen Sie ihn durch und lernen Sie gemeinsam.

Installation

Ich verwende vue-cli, um das Projekt zu initialisieren. Der Befehl lautet wie folgt:

npm i -g vue-cli
mkdir my-project && cd my-project
vue init webpack
Nach dem Login kopieren

Ändern Sie das Paket. json-Datei:

...
"dependencies": {
 "vue": "^2.5.2",
 "vue-router": "^3.0.1",
 "element-ui": "^2.0.7", // element-ui
 "axios": "^0.17.1" // http 请求库
}
...
Nach dem Login kopieren

Führen Sie dann npm install aus, um Abhängigkeiten zu installieren. Wenn die Installationsgeschwindigkeit etwas langsam ist, können Sie cnpm ausprobieren und die spezifische Installation und Verwendung selbst herausfinden.

Eine kurze Einführung in die Verzeichnisstruktur des Projekts:

├─build // 构建配置
├─config // 配置文件
├─src // vue 开发源文件目录
├────assets // css/js 文件
├────components // vue 组件
├────router  // 路由
├────App.vue  // 启动组件
├────main.js // 入口文件
├─static // 静态文件目录
├─test // 测试目录
Nach dem Login kopieren

Führen Sie dann npm run dev im Projektstammverzeichnis aus, öffnen Sie den Browser und geben Sie http://localhost:8080 ein, um es anzuzeigen .

Ziel

  • Anmeldeseite, Anmelde-, Abmeldefunktion

  • Startseite, Aufrufschnittstellen-Renderingliste

Routing

Routing verwendet Vue-Router. Informationen zur spezifischen Verwendung finden Sie in der offiziellen Dokumentation

Wir sind hier. Zwei Routen sind erforderlich:

src/router/index.js

import Vue from 'vue'
import Router from 'vue-router'
import Index from '@/components/Index'
import Login from '@/components/Login'

Vue.use(Router)

const routers = new Router({
 routes: [
  {
   path: '/index',
   name: 'index',
   component: Index
  },
  {
   path: '/login',
   name: 'login',
   component: Login
  }
 ]
})

routers.beforeEach((to, from, next) => {
 if (to.name !== 'login' && !localStorage.getItem('token')) {
  next({path: 'login'})
 } else {
  next()
 }
})

export default routers
Nach dem Login kopieren

Anmeldeseite

src /components/Login .vue

<template>
 <p class="login">
  <el-form name="aa" :inline="true" label-position="right" label-width="80px">
    <el-form-item label="用户名">
     <el-input v-model="user.name"></el-input>
    </el-form-item>
    <el-form-item label="密码">
     <el-input type="password" v-model="user.password"></el-input>
    </el-form-item>
    <el-form-item label=" ">
     <el-button type="primary" @click="login()">登录</el-button>
    </el-form-item>
  </el-form>
 </p>
</template>

<script>
import $http from &#39;@/api/&#39;
import config from &#39;@/config&#39;

export default {
 data () {
  return {
   user: {
    name: &#39;&#39;,
    password: &#39;&#39;
   }
  }
 },
 mounted: function () {
  var token = localStorage.getItem(&#39;token&#39;)
  if (token) {
   this.$router.push(&#39;/index&#39;)
  }
 },
 methods: {
  login: function () {
   var data = {
    grant_type: &#39;password&#39;,
    client_id: config.oauth_client_id,
    client_secret: config.oauth_secret,
    username: this.user.name,
    password: this.user.password
   }
   var _this = this
   $http.login(data).then(function (res) {
    if (res.status === 200) {
     $http.setToken(res.data.access_token)
     _this.$message({
      showClose: false,
      message: &#39;登录成功&#39;,
      type: &#39;success&#39;
     })
     _this.$router.push(&#39;/index&#39;)
    } else {
     _this.$message({
      showClose: false,
      message: &#39;登录失败&#39;,
      type: &#39;error&#39;
     })
    }
   })
  }
 }
}
</script>

<style>
.login{
  width: 300px;
  margin: 100px auto;
  background-color: #ffffff;
  padding: 30px 30px 5px;
  border-radius: 5px;
}
</style>
Nach dem Login kopieren

Home

src/components/Index.vue

<template>
 <p class="main">
  <el-table
   stripe
   v-loading="loading"
   element-loading-background="#dddddd"
   :data="tableData"
   style="width: 100%">
   <el-table-column
    prop="id"
    label="ID">
   </el-table-column>
   <el-table-column
    prop="name"
    label="名称">
   </el-table-column>
  </el-table>
  <el-pagination
   background
   layout="prev, pager, next"
   :total="total"
   class="page"
   @current-change="pageList">
  </el-pagination>
 </p>
</template>

<script>
import $http from &#39;@/api/&#39;

export default {
 data () {
  return {
   tableData: [],
   total: 0,
   loading: false
  }
 },
 mounted: function () {
  this.getList()
 },
 methods: {
  pageList: function (page) {
   this.search.page = page
   this.getList()
  },
  getList: function () {
   var _this = this
   _this.loading = true
   $http.index().then(function (res) {
    if (res.status === 200) {
     _this.tableData = res.data.data.lists
     _this.total = res.data.data.total
    }
    _this.loading = false
   })
  }
 }
}
</script>
Nach dem Login kopieren

App

src/App.vue

<template>
 <p id="app">
  <el-row v-if="token">
   <menus class="left-menu">
    <h3 class="logo"><a href="/" rel="external nofollow" >Admin</a></h3>
   </menus>
   <el-col :span="21" :gutter="0" :offset="3">
    <el-breadcrumb separator-class="el-icon-arrow-right" class="breadcrumb">
     <el-breadcrumb-item :to="{ path: &#39;/&#39; }">首页</el-breadcrumb-item>
     <el-breadcrumb-item class="active">列表</el-breadcrumb-item>
    </el-breadcrumb>
    <el-dropdown @command="operate" class="header">
     <img src="/static/image/head.jpg" />
     <el-dropdown-menu slot="dropdown" :click="true">
      <el-dropdown-item command="/user/profile">基本资料</el-dropdown-item>
      <el-dropdown-item command="/logout">安全退出</el-dropdown-item>
     </el-dropdown-menu>
    </el-dropdown>
    <router-view/>
   </el-col>
   <el-col :span="21" :gutter="0" :offset="3" class="footer">Copyright © 2017 Flyerboy All Rights Reserved</el-col> 
  </el-row>

  <router-view v-if="!token" />
 </p>
</template>

<script>
import Menus from &#39;@/components/Menu&#39;
export default {
 name: &#39;App&#39;,
 data () {
  return {
   token: false
  }
 },
 mounted: function () {
  this.token = localStorage.getItem(&#39;token&#39;) ? true : false
 },
 watch: {
  &#39;$route.path&#39;: function ($newVal, $oldVal) {
   this.token = localStorage.getItem(&#39;token&#39;) ? true : false
  }
 },
 methods: {
   operate: function (command) {
   if (command === &#39;/logout&#39;) {
    localStorage.removeItem(&#39;token&#39;)
    this.$router.push(&#39;login&#39;)
   } else {
    this.$router.push(command)
   }
  }
 },
 components: {
  Menus
 }
}
</script>

<style>
body{
 margin: 0;
 padding: 0;
 background-color: #eeeeee;
}
.header{
 position: absolute;
 top: 5px;
 right: 20px;
}
.header img{
 width: 38px;
 height: 38px;
 border-radius: 20px;
 border: 1px solid #aaaaaa;
}
#app {
 font-family: &#39;Avenir&#39;, Helvetica, Arial, sans-serif;
 -webkit-font-smoothing: antialiased;
 -moz-osx-font-smoothing: grayscale;
}
.main{
 padding: 20px;
 min-height: 600px;
 margin-bottom: 20px;
}
.main table{
 background: #ffffff;
}
.left-menu{
 background-color: #33374B;
}
.logo{
 padding: 20px 0 15px 20px;
 font-size: 24px;
 border-bottom: 2px solid #3a8ee6;
}
.logo a{
 color: #ffffff;
 text-decoration: none;
}

.left-menu .el-menu{
 border-right: 0;
}
.breadcrumb{
 line-height: 40px;
 padding: 5px 20px;
 background: #ffffff;
}
.breadcrumb span{
 color: #069;
 font-weight: normal;
}
.breadcrumb .active{
 color: #aaaaaa;
}
.page{
 margin: 20px 0 0;
 margin-left: -10px;
}
.page .el-pager li.number{
 background-color: #ffffff;
}
.el-submenu .el-menu-item{
 padding-left: 60px !important;
}
.footer{
 position: fixed;
 bottom: 0;
 right: 0;
 font-size: 12px;
 color: #888888;
 padding: 15px 20px;
 text-align: center;
 background-color: #ffffff;
 margin-top: 40px;
}
</style>
Nach dem Login kopieren

Call API

src/api/index.js

import axios from &#39;axios&#39;
axios.defaults.baseURL = &#39;http://localhost:8000/&#39;
axios.defaults.headers.post[&#39;Content-Type&#39;] = &#39;application/x-www-form-urlencoded&#39;
axios.defaults.headers.common[&#39;Authorization&#39;] = &#39;Bearer &#39; + localStorage.getItem(&#39;token&#39;)


export default {
 setToken: function (token) {
  localStorage.setItem(&#39;token&#39;, token)
  axios.defaults.headers.common[&#39;Authorization&#39;] = &#39;Bearer &#39; + token
 },
 login: function (param) {
  return axios.post(&#39;oauth/token&#39;, param)
 },
 index: function (params) {
  return axios.get(&#39;api/user/list&#39;, {
   params: params
  })
 }
}
Nach dem Login kopieren

config

src/config.js Konfigurieren Sie hier die client_id und das Geheimnis, die für die Anmeldung bei oauth

export default {
 oauth_client_id: 2,
 oauth_secret: &#39;&#39;
}
Nach dem Login kopieren

main.js<🎜 erforderlich sind >

src/main.js

import Vue from &#39;vue&#39;
import App from &#39;./App&#39;
import router from &#39;./router&#39;
import ElementUI from &#39;element-ui&#39;
import &#39;element-ui/lib/theme-chalk/index.css&#39;

Vue.use(ElementUI)

Vue.config.productionTip = false

new Vue({
 el: &#39;#app&#39;,
 router,
 components: { App },
 template: &#39;<App/>&#39;
})
Nach dem Login kopieren
API-Schnittstelle


Verwendet hauptsächlich zwei Schnittstellen, eine davon ist die API/Oauth/Token-Anmeldung und die Token-Schnittstelle , und das andere ist die Get-Liste api/user/list.


Die erste Schnittstelle verwendet Laravel OAuth, und die zweite Schnittstelle ist direkt eine einfache Benutzerlistenschnittstelle. Die Details werden im nächsten Artikel beschrieben.

Ich habe das Obige für Sie zusammengestellt und hoffe, dass es Ihnen in Zukunft hilfreich sein wird.

Verwandte Artikel:

So konvertieren Sie Zeitstempel in benutzerdefinierte Zeitformate mit Vue

Verwenden von Vue und Element -UI How um das Paging von Tabelleninhalten zu implementieren

Detaillierte Erläuterung des FastClick-Quellcodes (ausführliches Tutorial)

Das obige ist der detaillierte Inhalt vonVerwenden von Elememt-UI zum Erstellen des Management-Backends in Vue (ausführliches Tutorial). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Discuz-Lösung für das Anmeldeproblem im Hintergrund enthüllt Discuz-Lösung für das Anmeldeproblem im Hintergrund enthüllt Mar 03, 2024 am 08:57 AM

Die Lösung für das Discuz-Hintergrund-Login-Problem wird aufgezeigt. Mit der rasanten Entwicklung des Internets ist die Website-Erstellung immer häufiger geworden, und Discuz wurde als häufig verwendetes Forum-Website-Erstellungssystem bevorzugt viele Webmaster. Gerade aufgrund seiner leistungsstarken Funktionen stoßen wir jedoch manchmal auf Probleme bei der Verwendung von Discuz, wie z. B. Probleme bei der Anmeldung im Hintergrund. Heute werden wir die Lösung für das Discuz-Hintergrund-Login-Problem enthüllen und konkrete Codebeispiele bereitstellen. Wir hoffen, den Bedürftigen zu helfen.

So verwenden Sie Redis zur Implementierung einer verteilten Transaktionsverwaltung So verwenden Sie Redis zur Implementierung einer verteilten Transaktionsverwaltung Nov 07, 2023 pm 12:07 PM

So verwenden Sie Redis zur Implementierung eines verteilten Transaktionsmanagements Einführung: Mit der rasanten Entwicklung des Internets wird die Verwendung verteilter Systeme immer weiter verbreitet. In verteilten Systemen ist das Transaktionsmanagement eine wichtige Herausforderung. Herkömmliche Methoden des Transaktionsmanagements lassen sich in verteilten Systemen nur schwer implementieren und sind ineffizient. Mithilfe der Eigenschaften von Redis können wir problemlos ein verteiltes Transaktionsmanagement implementieren und die Leistung und Zuverlässigkeit des Systems verbessern. 1. Einführung in Redis Redis ist ein speicherbasiertes Datenspeichersystem mit effizienter Lese- und Schreibleistung und umfangreichen Daten.

Wie implementiert man die Leistungsmanagementfunktion für Schüler in Java? Wie implementiert man die Leistungsmanagementfunktion für Schüler in Java? Nov 04, 2023 pm 12:00 PM

Wie implementiert man die Leistungsmanagementfunktion für Schüler in Java? Im modernen Bildungssystem ist das Leistungsmanagement der Studierenden eine sehr wichtige Aufgabe. Durch die Verwaltung der Schülerleistungen können Schulen den Lernfortschritt der Schüler besser überwachen, ihre Schwächen und Stärken verstehen und auf der Grundlage dieser Informationen gezieltere Unterrichtspläne erstellen. In diesem Artikel besprechen wir, wie man die Programmiersprache Java verwendet, um Funktionen zur Leistungsverwaltung von Schülern zu implementieren. Zunächst müssen wir die Datenstruktur der Schülernoten bestimmen. Typischerweise können die Noten der Schüler als dargestellt werden

Sind Sie besorgt über verstümmelten WordPress-Backend-Code? Probieren Sie diese Lösungen aus Sind Sie besorgt über verstümmelten WordPress-Backend-Code? Probieren Sie diese Lösungen aus Mar 05, 2024 pm 09:27 PM

Sind Sie besorgt über verstümmelten WordPress-Backend-Code? Probieren Sie diese Lösungen aus, da spezifische Codebeispiele erforderlich sind. Mit der weit verbreiteten Anwendung von WordPress bei der Website-Erstellung kann es bei vielen Benutzern zu Problemen mit verstümmeltem Code im WordPress-Backend kommen. Ein solches Problem führt dazu, dass die Hintergrundverwaltungsoberfläche verstümmelte Zeichen anzeigt, was den Benutzern große Probleme bereitet. In diesem Artikel werden einige gängige Lösungen vorgestellt, die Benutzern helfen, das Problem verstümmelter Zeichen im WordPress-Backend zu lösen. Ändern Sie die Datei wp-config.php und öffnen Sie wp-config.

Verwaltung von Laravel-Erweiterungspaketen: Integrieren Sie problemlos Code und Funktionen von Drittanbietern Verwaltung von Laravel-Erweiterungspaketen: Integrieren Sie problemlos Code und Funktionen von Drittanbietern Aug 25, 2023 pm 04:07 PM

Verwaltung von Laravel-Erweiterungspaketen: Einfache Integration von Code und Funktionen von Drittanbietern. Einführung: Bei der Laravel-Entwicklung verwenden wir häufig Code und Funktionen von Drittanbietern, um die Effizienz und Stabilität des Projekts zu verbessern. Das Laravel-Erweiterungspaketverwaltungssystem ermöglicht uns die einfache Integration dieser Codes und Funktionen von Drittanbietern, wodurch unsere Entwicklungsarbeit komfortabler und effizienter wird. In diesem Artikel werden die grundlegenden Konzepte und die Verwendung der Laravel-Erweiterungspaketverwaltung vorgestellt und einige praktische Codebeispiele verwendet, um den Lesern zu helfen, sie besser zu verstehen und anzuwenden. Was ist Lara?

Wie richte ich Netzwerkserver auf dem Kirin-Betriebssystem ein und verwalte sie? Wie richte ich Netzwerkserver auf dem Kirin-Betriebssystem ein und verwalte sie? Aug 04, 2023 pm 09:25 PM

Wie richte ich Netzwerkserver auf dem Kirin-Betriebssystem ein und verwalte sie? Das Kirin-Betriebssystem ist ein Linux-basiertes Betriebssystem, das unabhängig in China entwickelt wurde. Es zeichnet sich durch Open Source, Sicherheit und Stabilität aus und ist in China weit verbreitet. In diesem Artikel wird erläutert, wie Netzwerkserver auf dem Kirin-Betriebssystem eingerichtet und verwaltet werden, um den Lesern dabei zu helfen, ihre eigenen Netzwerkserver besser aufzubauen und zu verwalten. 1. Zugehörige Software installieren Bevor wir mit der Einrichtung und Verwaltung des Netzwerkservers beginnen, müssen wir einige notwendige Software installieren. Unter Kirin OS ist das möglich

Was tun, wenn die Rechtsklick-Menüverwaltung in Windows 10 nicht geöffnet werden kann? Was tun, wenn die Rechtsklick-Menüverwaltung in Windows 10 nicht geöffnet werden kann? Jan 04, 2024 pm 07:07 PM

Wenn wir das Win10-System verwenden und mit der Maus auf den Desktop oder das Rechtsklick-Menü klicken, stellen wir fest, dass das Menü nicht geöffnet werden kann und wir den Computer nicht normal verwenden können. Zu diesem Zeitpunkt müssen wir das wiederherstellen System zur Lösung des Problems. Die Win10-Rechtsklick-Menüverwaltung kann nicht geöffnet werden: 1. Öffnen Sie zuerst unsere Systemsteuerung und klicken Sie dann auf. 2. Klicken Sie dann unter Sicherheit und Wartung auf. 3. Klicken Sie rechts, um das System wiederherzustellen. 4. Wenn die Maus immer noch nicht verwendet werden kann, prüfen Sie, ob mit der Maus selbst ein Fehler vorliegt. 5. Wenn Sie sicher sind, dass kein Problem mit der Maus vorliegt, drücken Sie + und geben Sie ein. 6. Nachdem die Ausführung abgeschlossen ist, starten Sie den Computer neu.

Discuz-Hintergrundanmeldung fehlgeschlagen? Bringen Sie Ihnen bei, wie Sie es einfach lösen können! Discuz-Hintergrundanmeldung fehlgeschlagen? Bringen Sie Ihnen bei, wie Sie es einfach lösen können! Mar 02, 2024 pm 06:03 PM

Discuz-Hintergrundanmeldung fehlgeschlagen? Bringen Sie Ihnen bei, wie Sie es einfach lösen können! Da Discuz als beliebte Forenplattform häufig bei der Erstellung und Verwaltung von Websites verwendet wird, kommt es manchmal zu Fehlern bei der Backend-Anmeldung, was besorgniserregend ist. Heute besprechen wir die Probleme, die zu Anmeldefehlern im Discuz-Backend führen können, stellen einige Lösungen bereit und fügen spezifische Codebeispiele bei. Ich hoffe, dieser Artikel kann Webmastern und Entwicklern helfen, die auf ähnliche Probleme stoßen. 1. Bei der Fehlerbehebung geht es darum, das Problem des Anmeldefehlers bei Discuz im Hintergrund zu lösen.

See all articles