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