IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 第3章 Vue前端定义实现与后端数据交互访问 -> 正文阅读

[JavaScript知识库]第3章 Vue前端定义实现与后端数据交互访问

1 导入全局'element-plus'标签包

??? “vue/cli”在默认状态下能够解析HTML标签集,虽然'element-plus'标签包是vue内置包,但是“vue/cli”在默认状态下,必须通过指定导入命令,才能让“vue/cli” 解析'element-plus'标签包,在vue3中'element-plus'标签包的导入操作如下:

??? 1、在指定项目的根目录中,通过VSCode“终端”执行命令:npm install --save element-plus

??? 2、在main.js文件中配置全局变量:

//“element-plus”内置标签包导入为全局变量:“element”

import element from 'element-plus'

import 'element-plus/theme-chalk/index.css'

//全局变量:“element”,即所有的“*.vue”页面都可以通过该变量引用'element-plus'标签包。

createApp(App).use(store).use(router).use(element).mount("#app");

2 角色Vue页面的路由定义“\src\router\index.js”

//“RoleView.vue”页面视图文件导入为局部变量:“UserRole”,该变量只能在当前js文件中使用。

import UserRole from '../views/User/RoleView.vue'

{

? ? path: '/User/Role',

? ? name: '角色',

? ? component:UserRole //通过导入为局部变量:“UserRole”,为“RoleView.vue”页面视图文件构建相应的路由。

? },

3、通过'element-plus'标签包,定义RoleView.vue视图

<template>

? <section>

? ? <el-table :data="datalist" highlight-current-row v-loading="listLoading" style="width: 100%;">

? ? ? <el-table-column prop="id" label="编号" width sortable></el-table-column>

? ? ? <el-table-column prop="roleName" label="角色名" width sortable></el-table-column>

? ? ? <el-table-column prop="description" label="说明" width sortable></el-table-column>

? ? ? <el-table-column prop="createTime" label="创建时间" :formatter="formatCreateTime" width sortable></el-table-column>

? ? ?

? ? ? <el-table-column prop="enabled" label="状态" width="200" sortable>

? ? ? ? <template #default="scope">

? ? ? ? ? ? <el-tag type="success" v-if="scope.row.enabled">正常</el-tag>

? ? ? ? ? ? <el-tag type="danger" v-else>禁用</el-tag>

? ? ? ? ? </template>

? ? ? </el-table-column>

? ? </el-table>

? </section>

</template>

注意:

1、'element-plus'标签中“prop”属性所对应的值的每1个字符串的第1个字母必须是小写字母,否则从后台项目中获取的数据将不能被“prop”属性所绑定,产生这种异常的原因是前台从后台获取的数据都是经过JSON编码格式化的,由于Javacript语言只能对1个字母必须是小写字母的实体类的属性成员进行绑定且渲染显示,vue页面中的数据导出绑定操作所使用的语言是:“typescript”,该语言实际上是Javacript语言的方法包,所有上述因素也成立。

2、在vue3中 已经不支持使用:<template slot-scope="scope">而支持使用:<template #default="scope">

同时也不再对
<el-tag :type="scope.row.Enabled? ? 'success' : 'danger'"disable-transitions>{{scope.row.Enabled ? "正常":"禁用"}}</el-tag>进行支持,
而支持使用:

<el-tag type="success" v-if="scope.row.enabled">正常</el-tag>

? ? ? ? ? ? <el-tag type="danger" v-else>禁用</el-tag>

??? 3、去除“<template>”的警告信息配置:
 ?? 在“jsconfig.json”文件中添加下面的定义。

{

? "compilerOptions": {

? ? "target": "es5",

? ? "module": "esnext",

? ? "baseUrl": "./",

? ? //去除<template>标签上的警告信息:“TypeScript intellisense is disabled on template. To enable, configure `"jsx": "preserve"` in the `"compilerOptions"` property of tsconfig or jsconfig. To disable this prompt instead, configure `"experimentalDisableTemplateSupport": true` in `"vueCompilerOptions"` property.volar”

? ? "jsx":"preserve",

? ? "moduleResolution": "node",

? ? "paths": {

? ? ? "@/*": [

? ? ? ? "src/*"

? ? ? ]

? ? },

? ? "lib": [

? ? ? "esnext",

? ? ? "dom",

? ? ? "dom.iterable",

? ? ? "scripthost"

? ? ]

? }

}

4、通过'axios'内置包,把从后端获取的数据导出绑定到RoleView.vue视图中

4.1 关于 'axios'内置包的导入

??? 在vue3中'axios'内置包是可以直接在指定的js文件或vue文件中被导入为局部变量,且可以被javascript方法正常调用并执行。

注意:'axios'内置包也是可以被导入在main.js文件中配置全局变量,但是如果想要在js文件或vue文件中正常调用并执行'axios'内置包,依赖需要在js文件或vue文件中定义'axios'内置包的导入,即在vue3中'axios'内置包的全局导入不但设有起到'axios'内置包的导入的简化作为,反而复杂化的'axios'内置包的导入操作。最终在vue3中如果要使用'axios'内置包,即在指定的js文件或vue文件中在'axios'内置包导入为局部变量即可。

4.2 导入'axios'内置包

??? 在指定项目的根目录中,通过VSCode“终端”执行命令: npm i axios vue-axios --save

??? 注意:命令中一定要加上“vue-axios”,否则如果需要在main.js文件中配置全局导入变量:“import VueAxios from "vue-axios"”时,会出现“"vue-axios"”未导入错误信息。

4.3? 通过'axios'内置包,获取后端数据,并绑定到RoleView.vue视图文件

??? 在RoleView.vue视图文件中添加以下定义:

<template>

? <section>

? ? <el-table :data="datalist" highlight-current-row v-loading="listLoading" style="width: 100%;">

? ? ? <el-table-column prop="id" label="编号" width sortable></el-table-column>

? ? ? <el-table-column prop="roleName" label="角色名" width sortable></el-table-column>

? ? ? <el-table-column prop="description" label="说明" width sortable></el-table-column>

? ? ? <el-table-column prop="createTime" label="创建时间" :formatter="formatCreateTime" width sortable></el-table-column>

? ? ?

? ? ? <el-table-column prop="enabled" label="状态" width="200" sortable>

? ? ? ? <template #default="scope">

? ? ? ? ? ? <el-tag type="success" v-if="scope.row.enabled">正常</el-tag>

? ? ? ? ? ? <el-tag type="danger" v-else>禁用</el-tag>

? ? ? ? ? </template>

? ? ? </el-table-column>

? ? </el-table>

? </section>

</template>

<script>

? //'axios'内置包导入当前视图页局部变量:axios,该变量只能在当前vue文件中使用。

? import axios from 'axios'

? //该导出方法定义,用于把后端获取的指定实体(SysRole)的所有实例数据与当前“RoleView.vue”页面进行绑定,以在页面进行渲染显示时,同时渲染显示出这些实例数据。

? export default ({

? ? ? name: "RoleView",

? ? ? data()

? ? ? {

? ? ? ? ? return {

? ? ? ? ? ? ? datalist: [],//数组局部变更,用于存储从后端获取的指定实体(SysRole)的所有实例数据后,并把这些实例数据与当前“RoleView.vue”页面进行绑定,以在页面进行渲染显示时,同时渲染显示出这些实例数据。

? ? ? ? ? ? ? listLoading: false,

? ? ? ? ? };

? ? ? },

? ? ? methods:

? ? ? {

? ? ? ? //格式化日期显示格式。

? ? ? ? formatCreateTime: function (row, column)

? ? ? ? {

? ? ? ? ? let data = row[column.property];

? ? ? ? ? if(data == null) {

? ? ? ? ? ? return null;

? ? ? ? ? }

? ? ? ? ? let dt = new Date(data);

? ? ? ? ? return dt.getFullYear() + '-' + (dt.getMonth() + 1) + '-' + dt.getDate() + ' ' + dt.getHours() + ':' + dt.getMinutes() + ':' + dt.getSeconds();

? ? ? },

? ? ? //获取列表。

? ? ? getRoles()

? ? ? {

? ? ? ? ? this.listLoading = true;

? ? ? ? ? //从已经发布部署到IIS中的后端程序中获取数据。

? ? ? ? ? axios.get('http://localhost:8080/role/get').then((response) => {

? ? ? ? ? ? console.log(response.data);

? ? ? ? ? ? //把从后端程序中指定列表属性成员所有(SysRole)实例的数据,赋值给前端当前vue页面的"datalist"局部变量。

? ? ? ? ? ? this.datalist = response.data.response.data;

? ? ? ? ? ? this.listLoading = false;

? ? ? ? ? });

? ? ? ? },

? ? ? },

? ? ? mounted()

? ? ? {

? ? ? ? ? this.getRoles();

? ? ? }

? });

</script>

5 编译和执行效果

5.1 编译

注意:vue编译后的域名及其端口,与IIS中所对应部署的域名及其端口无关,只与后端跨域(Cors)配置文件(appsettings.json)中的配置和跨域(Cors)限定定义相关,即(Cors)配置的域名及其端口集中不包含vue编译后的域名及其端口,且跨域(Cors)限定定义了只符合这些配置的域名及其端口才能通过vue前端对后端进行数据交互操作,那么vue前端将不能从后端获取数据。

后端跨域(Cors)配置限定域名及其端口集:

?"IPs": "http://localhost:8080,http://localhost:8081,,http://localhost:8082,,http://localhost:8083,http://localhost:8021"

前端vue编译后的域名及其端口:

??? 关于跨域(Cors)操作的定义实现见本人发布的:“https://blog.csdn.net/zhoujian_911/article/details/126988882”。

5.2 执行效果

???

??? 对以上功能更为具体实现和注释见:22-09-22-03_vue3( Vue前端定义实现与后端数据交互访问)。

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-09-30 00:43:36  更:2022-09-30 00:45:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 20:15:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码