首頁 web前端 js教程 如何使用Vue整合AdminLTE模板

如何使用Vue整合AdminLTE模板

May 28, 2018 pm 02:45 PM
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(&#39;/login&#39;)
 }
})
登入後複製

程式碼中有一個問題,就是在沒有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(&#39;/login&#39;)
 }
})
登入後複製

好了,進入正題。先說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 &#39;vue&#39;
import VueRouter from &#39;vue-router&#39;
import VueResource from &#39;vue-resource&#39;
import store from &#39;./store/store&#39;
import &#39;bootstrap/dist/css/bootstrap.css&#39;
登入後複製

引入後的效果是這樣的

#稍微正常了一些,下一步我們需要引入AdminLTE相關的css文件,如果你有AdminLTE的檔案應該可以在dist中找到css、img、js三個資料夾。把這三個資料夾複製到我們Vue專案的assets中吧。引入的方法還是在main.js中加入。 '

import Vue from &#39;vue&#39;
import VueRouter from &#39;vue-router&#39;
import VueResource from &#39;vue-resource&#39;
import store from &#39;./store/store&#39;
import &#39;bootstrap/dist/css/bootstrap.css&#39;
//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 &#39;vue&#39;
import VueRouter from &#39;vue-router&#39;
import VueResource from &#39;vue-resource&#39;
import store from &#39;./store/store&#39;
//bootstrap
import &#39;bootstrap/dist/css/bootstrap.css&#39;
import &#39;bootstrap/dist/js/bootstrap.min.js&#39;
//AdminLTE
import &#39;./assets/css/skins/_all-skins.min.css&#39;
import &#39;./assets/css/AdminLTE.min.css&#39;
import &#39;./assets/js/app.min.js&#39;
登入後複製

引入之後再看一下效果

總算看起來好一些了,但是我們發現圖示都沒有顯示出來,這是因為AdminLTE也用了font-awesome。我們還需要再使用npm在專案中安裝font-awesome,之後在main.js中匯入font-awesome的css檔案(這次只需要安裝,不需要修改webpack的設定檔了)。

//bootstrap
import &#39;bootstrap/dist/css/bootstrap.css&#39;
import &#39;bootstrap/dist/js/bootstrap.min.js&#39;
//AdminLTE
import &#39;./assets/css/skins/_all-skins.min.css&#39;
import &#39;./assets/css/AdminLTE.min.css&#39;
import &#39;./assets/js/app.min.js&#39;
//font-awesome
import &#39;font-awesome/css/font-awesome.min.css&#39;
登入後複製

导入后效果

还差一点完成了,我们还要处理一下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中文网其它相关文章!

推荐阅读:

怎样用JS做出井字棋游戏

怎样使用vue2.0实现导航守卫

以上是如何使用Vue整合AdminLTE模板的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Spring Boot與NoSQL資料庫的整合使用 Spring Boot與NoSQL資料庫的整合使用 Jun 22, 2023 pm 10:34 PM

隨著網路的發展,大數據分析和即時資訊處理成為了企業的重要需求。為了滿足這樣的需求,傳統的關係型資料庫已經不再滿足業務和技術發展的需要。相反,使用NoSQL資料庫已經成為了一個重要的選擇。在這篇文章中,我們將討論SpringBoot與NoSQL資料庫的整合使用,以實現現代應用程式的開發和部署。什麼是NoSQL資料庫?NoSQL是notonlySQL

PHP電子郵件範本:客製化和個人化您的郵件內容。 PHP電子郵件範本:客製化和個人化您的郵件內容。 Sep 19, 2023 pm 01:21 PM

PHP電子郵件範本:客製化和個人化您的郵件內容隨著電子郵件的普及和廣泛應用,傳統的郵件範本已經無法滿足人們對個人化和客製化郵件內容的需求。現在,我們可以透過使用PHP程式語言來創建客製化和個人化的電子郵件範本。本文將為您介紹如何使用PHP來實現這一目標,並提供一些具體的程式碼範例。一、建立郵件範本首先,我們需要建立一個基本的郵件範本。這個模板可以是一個HTM

PPT蒙版該怎麼添加 PPT蒙版該怎麼添加 Mar 20, 2024 pm 12:28 PM

關於PPT蒙版,很多人肯定對它很陌生,一般人做PPT不會將牠吃透,而是湊活著可以做出來自己喜歡的就行,所以很多人都不知道PPT蒙版到底是什麼意思,也不知道這個蒙版有什麼作用,甚至更不知道它可以讓圖片變得不再那麼單調,想要學習的小伙伴們快來了學習學習,為你的PPT圖片上添上點吧PPT蒙版吧,讓它不再單調了。那麼,PPT蒙版該怎麼添呢?請往下看。 1.首先我們開啟PPT,選擇一張空白的圖片,之後右鍵點選【設定背景格式】,純色選擇顏色就行。 2.點選【插入】,藝術字,輸入字3.點選【插入】,點選【形狀】

C++中的模板元程式設計面試常見問題 C++中的模板元程式設計面試常見問題 Aug 22, 2023 pm 03:33 PM

C++是一門廣泛應用於各領域的程式語言,其模板元程式設計是一種高階程式技術,可讓程式設計師在編譯時對類型和數值進行變換。在C++中,模板元程式設計是一個廣泛討論的話題,因此在面試中,與此相關的問題也是相當常見的。以下是一些可能會被問到的C++中的模板元程式設計面試常見問題。什麼是模板元程式設計?模板元程式設計是一種在編譯時操作類型和數值的技術。它使用模板和元函數來根據類型和值生成

C++ 模板特化的影響對於函式重載與重寫 C++ 模板特化的影響對於函式重載與重寫 Apr 20, 2024 am 09:09 AM

C++模板特化影響函式重載與重寫:函式重載:特化版本可提供特定型別不同的實現,進而影響編譯器選擇呼叫的函式。函數重寫:衍生類別中的特化版本將覆寫基底類別中的模板函數,影響衍生類別物件呼叫函數時的行為。

Vue中如何實現圖片的模板和蒙版處理? Vue中如何實現圖片的模板和蒙版處理? Aug 17, 2023 am 08:49 AM

Vue中如何實現圖片的模板和蒙版處理?在Vue中,我們經常需要對圖片進行一些特殊的處理,例如添加模板效果或加上蒙版。本文將介紹如何使用Vue實現這兩種圖片處理效果。一、圖片模板處理在使用Vue處理圖片時,我們可以利用CSS的filter屬性來實現模板效果。 filter屬性為元素添加圖形效果,其中的brightness濾鏡可以改變圖片的亮度。我們可以透過改變

UniApp實作Vue.js框架的完美整合 UniApp實作Vue.js框架的完美整合 Jul 04, 2023 pm 08:49 PM

UniApp實作Vue.js框架的完美整合引言:UniApp是一種基於Vue.js框架的跨平台開發工具,它能夠將一個Vue.js專案編譯成多個不同平台的應用程序,如iOS、Android、小程序等。 UniApp的優點在於能讓開發者只寫一套程式碼,就能夠同時適配多個平台,加快開發效率並降低開發成本。以下將介紹如何使用UniApp實作Vue.js框架的完美整合

Flask-Bootstrap:為Flask應用程式新增模板 Flask-Bootstrap:為Flask應用程式新增模板 Jun 17, 2023 pm 01:38 PM

Flask-Bootstrap:為Flask應用程式添加模板Flask是一個輕量級的PythonWeb框架,它提供了一個簡單而靈活的方式來建立網路應用程式。它是一款非常受歡迎的框架,但它的預設模板功能有限。若要建立富有吸引力的使用者介面,需使用其他框架或函式庫。這就是Flask-Bootstrap的用武之地。 Flask-Bootstrap是一個基於Twitter

See all articles