如何使用Vue整合AdminLTE模板
这次给大家带来如何使用Vue整合AdminLTE模板,使用Vue整合AdminLTE模板的注意事项有哪些,下面就是实战案例,一起来看一下。
上一次搞定了登录验证和跳转的问题,不过存在一处bug。在Vue的main.js中,使用了Vue-router的路由钩子来判断是否可以访问受保护的资源,问题就出在这里,先修复上次的bug。
/* 全局路由钩子 访问资源时需要验证localStorage中是否存在token 以及token是否过期 验证成功可以继续跳转 失败返回登录页重新登录 */ router.beforeEach((to, from, next) => { if(localStorage.token && new Date().getTime() < localStorage.tokenExpired){ next() } else{ next('/login') } })
代码中有一个问题,就是在没有token时如果直接访问/login会产生死循环导致溢出。修改后代码如下
/* 全局路由钩子 访问资源时需要验证localStorage中是否存在token 以及token是否过期 验证成功可以继续跳转 失败返回登录页重新登录 */ router.beforeEach((to, from, next) => { if(to.path == '/login'){ next() } if(localStorage.token && new Date().getTime() < localStorage.tokenExpired){ next() } else{ next('/login') } })
好了,进入正题。先说AdminLTE,这是一个基于bootstrap的后台管理模板,对于我这种排版、设计很渣但又需要一个人搞定所有事的来说确实是个救星。先看看它的效果。
可以看到效果非常棒。其本身还包含了各种各样的jquery插件,map、fullcalendar、datapicker、charts等等。不过这里我们主要用到侧边的导航和头部样式。
第一步,我们创建一个index.vue用作整个系统的主界面,然后把AdminLTE的index文件中的html复制到index.vue的template中。在没有任何设置的情况想效果是这样的。
好吧,辣眼睛。之所以这样是因为我们没有在页面中导入各种css文件。
第二步,导入bootstrap的css文件。如果你是要Vue-cli创建的项目,那么项目中应该已经包含了bootstrap(在node_modules文件夹中)。接下来只要在main.js中引入就可以了。
import Vue from 'vue' import VueRouter from 'vue-router' import VueResource from 'vue-resource' import store from './store/store' import 'bootstrap/dist/css/bootstrap.css'
引入后的效果是这样的
稍微正常了一些,下一步我们需要引入AdminLTE相关的css文件,如果你有AdminLTE的文件应该能在dist中找到css、img、js三个文件夹。把这三个文件夹复制到我们Vue项目的assets中吧。引入的方法还是在main.js中添加。'
import Vue from 'vue' import VueRouter from 'vue-router' import VueResource from 'vue-resource' import store from './store/store' import 'bootstrap/dist/css/bootstrap.css' //AdminLTE import './assets/css/skins/_all-skins.min.css' import './assets/css/AdminLTE.min.css'
引入后的效果
头部似乎正常了,但是body的内容都没有显示出来。原因是AdminLTE是基于bootstrap的,而bootstrap又是需要jquery的。此时我们只引入了css文件,而还没引入所需的js文件。但是此时引入js文件会因为没有jquery而导致引入的文件无法起作用。所以先解决Vue中使用jquery的问题。首先需要通过npm下载jquery到项目中(这里最好和AdminLTE中使用的jquery版本一致,我这里是2.2.3)。打开shell导航到我们项目所在的文件夹使用npm install来安装jquery。
安装好之后应该能在项目的node_modules文件夹中找到jquery文件夹,并且package.json中也记录了项目引用的jquery版本。
接下来要修改项目的webpack配置文件。文件位于项目的build文件夹下,文件名是webpack.base.conf.js。需要在这个文件中新增2处配置。
引入了jquery之后,我们就可以在main.js中继续引入bootstrap和AdminLTE的js文件了。
import Vue from 'vue' import VueRouter from 'vue-router' import VueResource from 'vue-resource' import store from './store/store' //bootstrap import 'bootstrap/dist/css/bootstrap.css' import 'bootstrap/dist/js/bootstrap.min.js' //AdminLTE import './assets/css/skins/_all-skins.min.css' import './assets/css/AdminLTE.min.css' import './assets/js/app.min.js'
引入之后再看一下效果
总算看起来好一些了,但是我们发现图标都没有显示出来,这是因为AdminLTE还使用了font-awesome。我们还需要再使用npm在项目中安装font-awesome,之后在main.js中导入font-awesome的css文件(这次只需要安装,不需要修改webpack的配置文件了)。
//bootstrap import 'bootstrap/dist/css/bootstrap.css' import 'bootstrap/dist/js/bootstrap.min.js' //AdminLTE import './assets/css/skins/_all-skins.min.css' import './assets/css/AdminLTE.min.css' import './assets/js/app.min.js' //font-awesome import 'font-awesome/css/font-awesome.min.css'
导入后效果
还差一点完成了,我们还要处理一下Vue路由,使得我们在点击左侧导航时,需要显示的内容会出现在图中红框区域内。对应设备目录管理我们新建一个catalog.vue文件,先简单的包含一行内容即可。
<template> <h1>catalog</h1> </template>
在main.js中引入catalog并新增一条路由规则。注意这里我们使用了vue-router的嵌套路由,因为我们需要catalog.vue的内容嵌套在index.vue中显示。
//compinents import App from './App' import Login from './components/login' import Index from './components/index' import DeviceCatalog from './components/deviceCatalog' Vue.use(VueRouter) Vue.use(VueResource) Vue.http.options.emulateJSON = true; const routes = [ { path: '/login', component : Login },{ path: '/index', component: Index, children: [ { path: '/deviceCatalog', component: DeviceCatalog } ] }, ]
在index.vue中创建导航和路由出口(即catalog.vue要被放置的红色区域)
<!-- 路由导航 --> <router-link to="/deviceCatalog"> <i class="fa fa-cubes"></i> <span class="ch">设备目录管理</span> </router-link> <!-- 路由出口 --> <p class="content-wrapper" style="border-style:solid; border-color:red"> <!-- Main content --> <router-view style="margin-top:0px; padding:2px"></router-view> <!-- /.content --> </p>
点击设备目录管理,catalog.vue的内容就会出现在红色框区域内了
最后一步,我们需要一个退出功能,上一篇中我们把认证凭证放在了localStorage中,那么在退出时我们就需要删除localStorage中的信息,并且返回到登录页。我们在退出按钮上绑定一个logout方法实现这个功能。
<!-- 绑定方法 --> <p class="pull-right"> <button v-on:click="logOut" class="btn btn-primary btn-flat ch">退出</button> </p> <!-- logout方法 --> <script> export default { // name: 'app', data() { return { displayName: localStorage.userDisplayName, } }, methods: { logOut: function(){ localStorage.clear(); this.$router.push('login') } } } </script>
全部搞定,最后还有一个奇怪的问题。在第一次登录后页面不能完整显示,需要刷新一次。不过如果手动制定红色区域的高度则不会出现,我搞了半天也不知问题出在哪里,如果有哪位老师知道的话请指点我一下,谢谢。
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
Atas ialah kandungan terperinci 如何使用Vue整合AdminLTE模板. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Dengan perkembangan Internet, analisis data besar dan pemprosesan maklumat masa nyata telah menjadi keperluan penting bagi perusahaan. Untuk memenuhi keperluan tersebut, pangkalan data hubungan tradisional tidak lagi memenuhi keperluan pembangunan perniagaan dan teknologi. Sebaliknya, menggunakan pangkalan data NoSQL telah menjadi pilihan penting. Dalam artikel ini, kita akan membincangkan penggunaan SpringBoot yang disepadukan dengan pangkalan data NoSQL untuk membolehkan pembangunan dan penggunaan aplikasi moden. Apakah pangkalan data NoSQL?

Templat e-mel PHP: Peribadikan dan peribadikan kandungan e-mel anda Dengan populariti dan penggunaan e-mel yang meluas, templat e-mel tradisional tidak lagi dapat memenuhi keperluan orang ramai untuk kandungan e-mel yang diperibadikan dan diperibadikan. Kini kita boleh mencipta templat e-mel yang disesuaikan dan diperibadikan dengan menggunakan bahasa pengaturcaraan PHP. Artikel ini akan menunjukkan kepada anda cara menggunakan PHP untuk mencapai matlamat ini dan memberikan beberapa contoh kod khusus. 1. Buat templat e-mel Pertama, kita perlu mencipta templat e-mel asas. Templat ini boleh menjadi HTM

Berkenaan PPT masking, pasti ramai yang tidak faham dengannya ketika membuat PPT, tetapi hanya mengada-ngada untuk membuat apa yang mereka suka Oleh itu, ramai yang tidak tahu apa itu PPT masking, dan mereka juga tidak faham Saya tahu apa yang dilakukan oleh topeng ini, dan saya tidak tahu bahawa ia boleh menjadikan gambar itu kurang membosankan. Jadi, bagaimana untuk menambah topeng PPT? Sila baca di bawah. 1. Mula-mula kita buka PPT, pilih gambar kosong, kemudian klik kanan [Set Background Format] dan pilih warna pepejal. 2. Klik [Insert], word art, masukkan perkataan 3. Klik [Insert], klik [Shape]

Pengkhususan templat C++ mempengaruhi lebihan beban dan penulisan semula fungsi: Kelebihan beban fungsi: Versi khusus boleh menyediakan pelaksanaan berbeza bagi jenis tertentu, sekali gus menjejaskan fungsi yang dipilih pengkompil untuk memanggil. Mengatasi fungsi: Versi khusus dalam kelas terbitan akan mengatasi fungsi templat dalam kelas asas, menjejaskan kelakuan objek kelas terbitan apabila memanggil fungsi.

UniApp merealisasikan penyepaduan sempurna rangka kerja Vue.js Pengenalan: UniApp ialah alat pembangunan merentas platform berdasarkan rangka kerja Vue.js Ia boleh menyusun projek Vue.js ke dalam aplikasi untuk berbilang platform berbeza, seperti iOS, Android, Program kecil dll. Kelebihan UniApp ialah ia membenarkan pembangun menulis hanya satu set kod untuk menyesuaikan diri dengan berbilang platform pada masa yang sama, mempercepatkan kecekapan pembangunan dan mengurangkan kos pembangunan. Berikut akan memperkenalkan cara menggunakan UniApp untuk mencapai penyepaduan sempurna rangka kerja Vue.js

C++ ialah bahasa pengaturcaraan yang digunakan secara meluas dalam pelbagai bidang Pemrograman meta templatnya ialah teknologi pengaturcaraan lanjutan yang membolehkan pengaturcara mengubah jenis dan nilai pada masa penyusunan. Metaprogramming templat ialah topik yang dibincangkan secara meluas dalam C++, jadi soalan yang berkaitan dengannya agak biasa dalam temu bual. Berikut ialah beberapa soalan temu bual pengaturcaraan templat biasa dalam C++ yang mungkin ditanya kepada anda. Apakah itu metaprogramming templat? Metaprogramming templat ialah teknik untuk memanipulasi jenis dan nilai pada masa penyusunan. Ia menggunakan templat dan metafungsi untuk menjana berdasarkan jenis dan nilai

Bagaimana untuk melaksanakan templat imej dan pemprosesan topeng dalam Vue? Dalam Vue, kita selalunya perlu melakukan beberapa pemprosesan khas pada imej, seperti menambah kesan templat atau topeng. Artikel ini akan memperkenalkan cara menggunakan Vue untuk mencapai dua kesan pemprosesan imej ini. 1. Pemprosesan templat imej Apabila menggunakan Vue untuk memproses imej, kita boleh menggunakan atribut penapis CSS untuk mencapai kesan templat. Atribut penapis menambah kesan grafik pada elemen dan penapis kecerahan boleh menukar kecerahan gambar. kita boleh berubah

Flask-Bootstrap: Menambah templat pada aplikasi Flask Flask ialah rangka kerja web Python ringan yang menyediakan cara mudah dan fleksibel untuk membina aplikasi web. Ia adalah rangka kerja yang sangat popular, tetapi templat lalainya mempunyai fungsi terhad. Untuk mencipta antara muka pengguna yang menarik, gunakan rangka kerja atau perpustakaan tambahan. Di sinilah Flask-Bootstrap masuk. Flask-Bootstrap adalah berasaskan Twitter
