学成在线--2.CMS前端页面查询开发
文章目錄
- 0.思路總結
- 1.創建CMS模塊的目錄架構
- 2.創建頁面并配置路由
- 1)在page目錄新建page_list.vue,擴展名為.vue。
- 2)在cms的router下配置路由。
- 3)在base目錄下的router導入cms模塊的路由
- 3.使用Table組件完善頁面內容
- 4.Api調用服務器端查詢接口獲取數據
- 1)在cms模塊的api目錄定義cms.js。
- 2)在前端頁面page_list.vue中導入cms.js,獲取后端返回的數據。
- 5.解決調用接口的跨域問題
- 6.實現指定頁面的分頁查詢
- 1)定義分頁視圖
- 2)定義數據模型對象
- 3)定義分頁方法,接收頁碼參數
- 7.使用鉤子函數實現進入頁面時立即查詢
0.思路總結
1)在瀏覽器輸入前端url
2)前端框架vue.js根據url解析路由,根據路由找到page_list.vue頁面
3)首先執行page_list.vue中的鉤子方法
4)在鉤子方法中調用query方法
5)在query方法中調用cms.js中的page_list方法
6)cms.js中的page_list方法通過axios請求服務端接口
7)采用proxyTable解決跨域問題,node.js將請求轉發到服務端(http://localhost:31001/cms/page/list)
8)服務端處理,將查詢結果響應給前端
9)成功響應調用then方法,在then方法中處理響應結果,將查詢結果res賦值給數據模型中的total和list變量。
10)vue.js通過雙向數據綁定將list數據渲染輸出。
1.創建CMS模塊的目錄架構
在module目錄中創建cms模塊的目錄結構,如下所示:
2.創建頁面并配置路由
1)在page目錄新建page_list.vue,擴展名為.vue。
.vue文件的結構如下:
<template> <!‐‐編寫頁面靜態部分,即view部分‐‐> 測試頁面顯示... </template> <script> /*編寫頁面靜態部分,即model及vm部分。*/ </script> <style> /*編寫頁面樣式,不是必須*/ </style>注意:template內容必須有一個根元素,否則vue會報錯,這里我們在template標簽內定義一個div。
2)在cms的router下配置路由。
在router目錄下新建index.js,路由代碼如下:
import Home from '@/module/home/page/home.vue'; import page_list from '@/module/cms/page/page_list.vue'; export default [{ path: '/cms', component: Home, name: 'CMS內容管理', hidden: false, children:[ {path:'/cms/page/list',name:'頁面列表',component: page_list,hidden:false} ] } ]3)在base目錄下的router導入cms模塊的路由
// // 導入路由規則 import HomeRouter from '@/module/home/router' import CmsRouter from '@/module/cms/router' // 合并路由規則 concat(HomeRouter) concat(CmsRouter)3.使用Table組件完善頁面內容
本項目使用Element-UI來構建界面,Element是一套為開發者、設計師和產品經理準備的基于 Vue 2.0 的桌面端組件庫。
Element-UI官方站點:https://element.eleme.cn/#/zh-CN
本功能實現的頁面列表,用戶可以進行分頁查詢、輸入查詢條件查詢,通過查看Element-UI庫,我們需要Table 表格、Form表單 及Pagination 分頁組件。
進入Element-UI官方,找到Table組件,拷貝源代碼到page_list.vue頁面中。
根據需求完善頁面內容,完善列表字段,添加分頁組件。
<template> <div> <el‐button type="primary" v‐on:click="query" size="small">查詢</el‐button> <el‐table :data="list" stripe style="width: 100%"> <el‐table‐column type="index" width="60"> </el‐table‐column> <el‐table‐column prop="pageName" label="頁面名稱" width="120"> </el‐table‐column> <el‐table‐column prop="pageAliase" label="別名" width="120"> </el‐table‐column> <el‐table‐column prop="pageType" label="頁面類型" width="150"> </el‐table‐column> <el‐table‐column prop="pageWebPath" label="訪問路徑" width="250"> </el‐table‐column> <el‐table‐column prop="pagePhysicalPath" label="物理路徑" width="250"> </el‐table‐column> <el‐table‐column prop="pageCreateTime" label="創建時間" width="180" > </el‐table‐column> </el‐table> <el‐pagination layout="prev, pager, next" :page‐size="this.params.size" v‐on:current‐change="changePage" :total="total" :current‐page="this.params.page" style="float:right;"> </el‐pagination> </div> </template> <script> export default { data() { return { list:[], total:50, params:{ page:1,//頁碼 size:2//每頁顯示個數 } } }, methods:{ //分頁查詢 changePage:function () { this.query() }, //查詢 query:function () { alert("查詢") } } } </script>測試結果如下:
4.Api調用服務器端查詢接口獲取數據
1)在cms模塊的api目錄定義cms.js。
在cms.js中定義如下js方法,此方法實現http請求服務端頁面查詢接口。
//public是對axios的工具類封裝,定義了http請求方法 import http from './../../../base/api/public' export const page_list = (page,size,params) => { return http.requestQuickGet('http://localhost:31001/cms/page/list/'+page+'/'+size) }axios實現了http方法的封裝,vue.js官方不再繼續維護vue-resource,推薦使用 axios。
2)在前端頁面page_list.vue中導入cms.js,獲取后端返回的數據。
調用cms.js中的page_list 方法,請求服務端頁面查詢接口,并返回數據,將數據封裝到res中。
import * as cmsApi from '../api/cms'//查詢 query:function () { cmsApi.page_list(this.params.page,this.params.size,this.params).then((res)=>{ console.log(res) this.total = res.queryResult.total this.list = res.queryResult.list }) }5.解決調用接口的跨域問題
測試上邊的代碼 ,結果報錯,如下 :
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:11000' is therefore not allowed access.原因:瀏覽器的同源策略不允許跨域訪問,所謂同源策略是指協議、域名、端口相同。
解決:采用proxyTable解決。
proxyTable是什么?
vue-cli提供的解決vue開發環境下跨域問題的方法,proxyTable的底層使用了http-proxymiddleware(https://github.com/chimurai/http-proxy-middleware),它是http代理中間件,它依賴node.js,基本原理是用服務端代理解決瀏覽器跨域。
具體的配置如下:
1)修改api方法中url的定義
請求前加/api前綴
2)在config/index.js下配置proxyTable。
以/api/cms開頭的請求,代理請求http://localhost:31001
6.實現指定頁面的分頁查詢
1)定義分頁視圖
使用v-on監聽更改分頁事件
<el‐pagination layout="prev, pager, next" :page‐size="this.params.size" v‐on:current‐change="changePage" :total="total" :current‐page="this.params.page" style="float:right;"> </el‐pagination>2)定義數據模型對象
data() { return { list:[], total:50, params:{ page:1,//頁碼 size:2//每頁顯示個數 } }3)定義分頁方法,接收頁碼參數
//分頁查詢,接收page頁碼 changePage(page){ this.params.page = page; this.query() }7.使用鉤子函數實現進入頁面時立即查詢
目前實現的功能是進入頁面點擊查詢按鈕向服務端表求查詢,實際的需求是進入頁面立即查詢。如何實現?
這要用到vue的鉤子函數,每個 Vue 實例在被創建時都要經過一系列的初始化過程——例如,需要設置數據監聽、
編譯模板、將實例掛載到 DOM 并在數據變化時更新 DOM 等。同時在這個過程中也會運行一些叫做生命周期鉤子
的函數,這給了用戶在不同階段添加自己的代碼的機會。
通常使用最多的是created和mounted兩個鉤子:
created:vue實例已創建但是DOM元素還沒有渲染生成。
mounted:DOM元素渲染生成完成后調用。
本例子在兩個方法的任意一個都滿足需求:
添加如下代碼:
總結
以上是生活随笔為你收集整理的学成在线--2.CMS前端页面查询开发的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: idea官网下载地址
- 下一篇: 替换Tomcat在浏览器地址栏中的ico