學成在線--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前綴

//public是對axios的工具類封裝,定義了http請求方法
import http from './../../../base/api/public'
let sysConfig = require('@/../config/sysConfig')
let apiUrl = sysConfig.xcApiUrlPre;
export const page_list = (page,size,params) => {
return http.requestQuickGet(apiUrl+'/cms/page/list/'+page+'/'+size)
}

2)在config/index.js下配置proxyTable。
以/api/cms開頭的請求,代理請求http://localhost:31001

'/api/cms': {
target: 'http://localhost:31001',
pathRewrite: {
'^/api': ''//實際請求去掉/api
}

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元素渲染生成完成后調用。

本例子在兩個方法的任意一個都滿足需求:
添加如下代碼:

mounted() {
//默認查詢頁面
this.query()
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/452283.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/452283.shtml
英文地址,請注明出處:http://en.pswp.cn/news/452283.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java.util.IdentityHashMap.entrySet()方法實例

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 entrySet() 方法是用來獲取此映射中包含的映射關系的set視圖。 聲明 以下是java.util.IdentityHashMap.entrySet()方法的聲明。 publ…

URL轉微信可識別的二維碼

jquery.qrcode.js 是一個能夠在客戶端生成矩陣二維碼QRCode 的jquery插件 &#xff0c;使用它可以很方便的在頁面上生成二維條碼。 用法&#xff1a; 1、引入jquery.qrcode.min.js <script src"jquery.min.js"></script> <script src"jquery.qrc…

javascript數組及操作方法

數組及操作方法 數組就是一組數據的集合&#xff0c;javascript中&#xff0c;數組里面的數據可以是不同類型的。 定義數組的方法 //對象的實例創建 var aList new Array(1,2,3);//直接量創建 var aList2 [1,2,3,asd];操作數組中數據的方法 1、獲取數組的長度&#xff1a;aLi…

如何創建比C語言更快的編程語言?

【CSDN編譯整理】近日&#xff0c;beza1e1上發表了一篇博客《Faster than C》&#xff0c;在Hacker News和Reddit Programming上引發了開發者們的激烈討論。現將此文編譯&#xff0c;我們一起來探討下。 單從編程語言特性來判斷&#xff0c;雖然Fortran語言也以快而著稱&#…

面向對象方法學

面向對象技術強調在軟件開發過程中面向客觀世界或問題域中的事物&#xff0c;采用人類在認識客觀世界的過程中普遍運用的思維方法&#xff0c;直觀、自然地描述客觀世界中的有關事物。 面向對象的分析方法是利用面向對象的信息建模概念&#xff0c;如實體、關系、屬性等&#x…

學成在線--3.CMS頁面管理開發(自定義條件查詢)

文章目錄0.需求分析1.服務端--Dao2.服務端--Service3.服務端--Controller4.前端1&#xff09;page_list.vue中增加查詢表單2&#xff09;page_list.vue中添加數據模型對象3&#xff09;在鉤子方法中構建siteList站點列5.Api調用1&#xff09;修改 cms.js&#xff0c;向服務端傳…

動態生成表格、隱藏表格、選中刪除任意行、jquery、輸入驗證

PS&#xff1a; 游戲公司后臺開發&#xff0c;工作模式&#xff1a;996。 于是寫博客這事也荒廢了.... 想想還是寫一點吧。 呵呵&#xff0c;請不要笑話我注釋寫這么多&#xff0c;習慣了&#xff0c;我上班寫代碼都是有注釋的。 我建兩個相似的表是為了&#xff0c;給后臺使…

安裝 PrestaShop 1.6 - 詳細的安裝指南

2019獨角獸企業重金招聘Python工程師標準>>> 詳細的安裝指南 下載和解壓 PrestaShop 程序代碼包 你可以從 PrestaShop 官方下載最新的版本&#xff0c;下載地址為&#xff1a;http://www.prestashop.com/en/download. 這里你只有一個選項&#xff0c;只能下載最新的…

tinydate.js[v0.3] 新增了字符串格式化為日期對象的函數

更新說明 加入了String類型的擴展成員 convertToDate() 可以直接將 字符串格式的日期轉換為Date對象。加入了String類型的擴展成員 convertToTimeSpan() 可以將 字符串格式的日期轉換為TimeSpan對象。修復了日期格式化為字符串的format函數中的bug。tinydate.js v0.3 Date.prot…

面向對象方法學的四個要點

面向對象方法學的要點面向對象方法學的出發點和基本原則&#xff0c;是盡可能模擬人類習慣的思維方式&#xff0c;使開發軟件的方法與過程盡可能接近人類認識世界解決問題的方法與過程&#xff0c;也就是使描述問題的問題空間(也稱為問題域)與實現解法的解空間(也稱為求解域)在…

學成在線--4.CMS頁面管理開發(新增頁面)

文章目錄1.定義新增頁面接口1&#xff09;在model工程中定義響應模型2&#xff09;在api工程中添加接口2.新增頁面服務端開發1&#xff09;Dao2&#xff09;Service3&#xff09;Controller3.新增頁面前端開發1&#xff09;創建page_add.vue2&#xff09;配置路由3&#xff09;…

嵌套For循環性能優化

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。1 案例描述某日&#xff0c;在JavaEye上看到一道面試題&#xff0c;題目是這樣的&#xff1a;請對以下的代碼進行優化 Java代碼 for (int …

docker-ce安裝

1、安裝 sudo yum -y install docker 2、加入開機自啟systemctl enable docker轉載于:https://www.cnblogs.com/runnerjack/p/8618524.html

python-study-17

復習 上節課復習1、什么是模塊模塊是一系列功能的集合體2、為何用模塊拿來&#xff08;內置或第三方的模塊&#xff09;主義&#xff0c;提升開發效率自定義模塊可以讓程序的各部分組件重用模塊內的功能3、如何用模塊大前提&#xff1a;模塊是被執行文件導入使用&#xff0c;模…

面向對象方法學的優點

1.與人類習慣的思維方法一致面向對象的軟件技術以對象為核心&#xff0c;用這種技術開發出的軟件系統由對象組成。對象是由描述內部狀態表示靜態屬性的數據&#xff0c;以及可以對這些數據施加的操作(對象的動態行為)&#xff0c;封裝在一起所構成的統一體。面向對象的設計方法…

如何學好C語言

我相信&#xff0c;這可能是很多朋友的問題&#xff0c;我以前也有這樣的感覺&#xff0c;編程編到一定的時候&#xff0c;發現能力到了瓶頸&#xff0c;既不深&#xff0c;也不扎實&#xff0c;半吊子。比如&#xff1a;你長期地使用Java和.NET &#xff0c;這些有虛擬機的語言…

學成在線--5.CMS頁面管理開發(修改頁面)

文章目錄1.修改頁面流程1&#xff09;前端邏輯2&#xff09;后端邏輯2.修改頁面接口定義3.后端開發--Dao4.后端開發--Service5.后端開發--Controller1&#xff09;根據id查詢頁面2&#xff09;保存頁面信息6.前端開發--頁面處理流程7.前端開發--編寫page_edit.vue8.前端開發--配…

在樹莓派上播放音頻

https://blog.csdn.net/qinxiandiqi/article/details/39155593轉載于:https://www.cnblogs.com/Baronboy/p/9206164.html

Map四種獲取key和value值的方法,以及對map中的元素排序

2019獨角獸企業重金招聘Python工程師標準>>> 獲取map的值主要有四種方法&#xff0c;這四種方法又分為兩類: 一類是調用map.keySet()方法來獲取key和value的值&#xff0c; 另一類則是通過map.entrySet()方法來取值&#xff0c; 兩者的區別在于&#xff0c;前者主要…

配置Oracle Instant Client環境

1.配置Oracle Instant Client環境 到Oracle官網下載Oracle Instant Client&#xff0c;注意選擇x86平臺&#xff0c;Toad只認32位的Oracle Instant Client。至于版本號&#xff0c;沒有特別要求&#xff0c;版本向下兼容。 桌面上&#xff0c;右鍵點“我的電腦”&#xff0c;選…