vue开发-语法和基础流程规范

当一个请求发生的时候 后端的扭转流程对标前端的扭转过程

在这里插入图片描述
***vue 中 整体url触发整体流程服务流程:

node 中定义了默认加载 vue.config.js 文件 (vue.config.js 文件名不可更改)-> vue.config.js 中 devServer 绑定了个 ip端口 和资源 -》 然后将资源 交给浏览器

浏览器通过# 来做相对定位〉 走到 route 路由》router 路由用来绑定其他资源页面。〉 将路由页面 放在 如下的div 中

***vue 中 整体加载流程

node 启动。-》加载vue.config.js 〉加载资源(sso匹配等。。。)》tsconfig.json 加载所有静态资源-〉通过heraOpen 加载 main.ts 文件》创建全局VUE 对象〉并且将router,和store 加载到VUE 对象中

从而使得 在浏览器中 可以使用#/相对定位到 router路由的地址 访问路由中的地址

***vue文件中的核心标签

vue 语法

1、views 文件夹下面创建对应业务名的文件夹

2、 建立对应业务操作的.vue 文件 并且 声明如下标签

}

2.1 vue 文件标签解读

}

2.1.1、template 标签中主要写页面的dom文档 页面标签等。代码可参考 ui库 https://mtdui.sankuai.com/mtd/vue/components/input-number

2.1.2、script 标签中 写 数据逻辑 以及 和后端交互逻辑 数据处理逻辑等代码

2.1.3、style 页面的样式 通过选择器来定义template 标签中 页面标签的样式

3、在 router/type 文件夹下方建立一个 ts 文件 用于校验 vue 文件中的实体对象的 规则和合规性 例如: 建立了一个sceneManager.ts 并且书写了如下代码

// 查询场景参数
export interface EventAccessQueryRequest {
admin?: string;
endTime?: number| string;
id?: number;
method?: number;
pageNo?: number;
pageSize?: number;
scene?: string;
source?: string;
//开始时间
startingTime?: number| string;
// 标签
tag?: string;
// 状态 1上线 0下线
valid?: number;
timeRange?: Date[];
group?: [];
}
//查询场景list返回
export interface PageType {
records: EventAccessResponse[];
pageNum: 10;
pageSize: 20 ;
total: number;
}

4、 在vue 的文件中 书写如下实体类

const initSearchData: EventAccessQueryRequest = {
// 结束时间
admin: ‘’,
endTime: ‘’,
scene: ‘’,
source: ‘’,
//开始时间
startingTime: ‘’,
// 标签
tag: ‘’,
// 状态 1上线 0下线
timeRange: [],
pageNo: 1,
pageSize: 20,
group: []
};

5、然后在vue 中可以使用 this. 的方式去调用initSearchData 进行取值和赋值 用于在页面中 渲染后端数据 和 提交给后端数据 或者 前端逻辑交互

6、在router/下找到index.ts

倒入。
import Myadd from ‘@/views/SceneList/myAdd.vue’;

对应的vue 文件
然后添加如下代码

{
path: ‘/myAdd’,
name: ‘myAdd’,
component: Myadd,
},
用于 增加一个新的页面跳转 在路由里面

7 页面初始化方法

7.1、先在 script 标签下面建立一个

import { Vue, Component, Watch, Mixins } from ‘vue-property-decorator’;
import { mapState, mapActions } from ‘vuex’;
export default class MyAdd extends Vue{

}

7.2、添加如下代码

private mounted() {
const { type, id } = this.$route.query;
console.log(“展示type:”,type)
}

7.3 整体代码结构

import { Vue, Component, Watch, Mixins } from ‘vue-property-decorator’;
import { mapState, mapActions } from ‘vuex’;
export default class MyAdd extends Vue{
private mounted() {
const { type, id } = this.$route.query;
console.log(“展示type:”,type)
}
}

7.3.1 代码解读

const { type, id } = this.$route.query;

用于获取页面的queryParam。就是url上面的参数。是通过map的方式存储的

7.4.1、 扩展引入

7.4.1.1、在Vue中,比mounted方法更早触发的方法有以下几个:

beforeCreate:在Vue实例被创建之初,数据观测和事件/生命周期钩子等尚未初始化,此时beforeCreate钩子函数会被调用。

created:在Vue实例创建完成后,数据观测和事件/生命周期钩子已经初始化,但尚未挂载到DOM上,此时created钩子函数会被调用。

beforeMount:在Vue实例即将挂载到DOM上之前,此时beforeMount钩子函数会被调用。在这个阶段,Vue实例的模板编译已经完成,但尚未生成真实的DOM。

这些生命周期钩子函数的触发顺序如下:beforeCreate -> created -> beforeMount -> mounted,也就是说,beforeCreate和created会在mounted之前触发。

需要注意的是,这些生命周期钩子函数的执行时机是自动由Vue框架触发的,不需要手动调用。开发者可以根据自己的需求,在这些钩子函数中执行相应的逻辑操作,异步数据获取、组件初始化等。

7.4.1.2、在Vue中,mounted方法之后会触发以下几个方法:

updated:在Vue实例更新完DOM之后被调用。当数据发生改变,触发重新渲染时,updated钩子函数会被执行。

activated:在使用Vue的组件时,被缓存的组件再次被激活时会触发activated钩子函数。

deactivated:同样,在使用Vue的组件时,被缓存的组件被停用时会触发deactivated钩子函数。

beforeUpdate:在Vue实例更新之前被调用。在数据改变时,beforeUpdate钩子函数会在重新渲染之前被执行。

beforeDestroy:在Vue实例销毁之前被调用。在组件被销毁之前,可以在beforeDestroy钩子函数中执行一些清理操作。

destroyed:在Vue实例销毁之后被调用。在组件被销毁后,destroyed钩子函数会被执行。

这些钩子函数在Vue的生命周期中有特定的执行时机,开发者可以根据需要在这些方法中添加相应的逻辑处理。需要注意的是,这些方法的触发是自动由Vue框架处理的,不需要手动调用。

7.4.1.3、vue 文件中的方法生命周期

beforeCreate:在这个阶段,Vue实例已被创建,但尚未完成数据观测和事件/生命周期钩子等的初始化。此时,Vue实例的data和methods等属性还未被初始化。

created:在这个阶段,Vue实例的数据观测和事件/生命周期钩子等已经初始化完成,但尚未挂载到DOM上。此时,Vue实例的data和methods等属性已经被初始化。

beforeMount:在这个阶段,Vue实例即将被挂载到DOM上。此时,Vue实例的模板已经编译完成,但尚未生成真实的DOM。

mounted:在这个阶段,Vue实例已经被挂载到DOM上,并且可以通过DOM操作和访问DOM元素。此时,Vue实例已经和DOM建立了关联。

beforeUpdate:在这个阶段,Vue实例正在进行重新渲染,即数据发生改变,Vue正在更新DOM。此时,Vue实例的数据已经发生了变化,但DOM还未完成更新。

updated:在这个阶段,Vue实例已完成重新渲染,即数据发生改变,Vue已经更新了DOM。此时,Vue实例的数据和DOM都已经完成了更新。

activated:在使用Vue的组件时,被缓存的组件再次被激活时会触发activated钩子函数。

deactivated:在使用Vue的组件时,被缓存的组件被停用时会触发deactivated钩子函数。

beforeDestroy:在这个阶段,Vue实例即将被销毁。此时,Vue实例还存在,并且可以进行一些清理操作,例如取消订阅、清除定时器等。

destroyed:在这个阶段,Vue实例已经被销毁。此时,Vue实例和DOM的关联已经解除,事件监听和watcher已被移除。

7.4.1.3、vue 文件中自定义方法的加载和销毁 以及什么阶段被初始化和可以被调用以及无法调用的阶段,例:自定义方法 checkSceneDetail()

mounted阶段:在Vue实例挂载到DOM后,可以通过调用this.checkSceneDetail(id)来调用该方法。此时,DOM已经完成渲染,可以执行与DOM相关的操作。

updated阶段:当Vue实例的数据发生变化,导致重新渲染时,在updated生命周期钩子函数中可以调用this.checkSceneDetail(id)来调用该方法。此时,可以在数据更新后执行一些操作。

在其他阶段,无法直接调用private checkSceneDetail(id: number)方法:

在beforeCreate和created阶段,Vue实例和数据还没有完全初始化,无法调用该方法。

在beforeMount阶段,Vue实例的模板已经编译完成,但尚未生成真实的DOM,无法调用该方法。

在beforeUpdate、activated、deactivated、beforeDestroy和destroyed阶段,这些阶段主要用于Vue实例的更新和销毁,不适合直接调用自定义方法。

因此,可以在mounted阶段或在数据变化后的updated阶段调用private checkSceneDetail(id: number)方法。如果您需要在其他阶段执行该方法,则需要根据具体情况进行调整或通过其他方式触发执行。

7.5 必须定义的结构

script 标签中

@Component({
components: {
SelectModal,
}
})
export default class ListAdd extends Vue {
}

8、 发送一个请求到后端

net.scenelist
.queryManageSceneList({ id })
.then((ajaxData: AxiosResponse) => {
const response: ResponseType = ajaxData.data;
if (ajaxData.status === 200 && response.code === 0) {
const row = response.data.records[0];
const slaEntity = this.addInfo.slaEntity;
this.addInfo = formatRequest(row);
if (this.addInfo.slaEntity == null) {
this.addInfo.slaEntity = slaEntity;
}

      console.log('sql----当前查询后台的后台的addinfo 数据',JSON.stringify(response.data.records[0]));} else {this.$mtd.message({message: response.desc,type: 'error',});}}).catch((error) => {Message({message: error.message,type: 'error',});});

8.1.1、 代码解读

在 net 目录下 找到 scenelist 文件 文件中有个default 方法

export default {
xxxxxx,
queryManageSceneList
};

用于定义所有对外暴露的请求方法

写出 queryManageSceneList 对应的方法

export async function queryManageSceneList(params?: EventAccessQueryRequest) {
return await post(‘/hera/api/v1/eventFlow/access/query’, params);
}

请求成功后 获取 records 中的数据 赋予给 全局对象 addInfo

这样 页面就可以根据this.addInfo 来渲染页面 和做逻辑处理了

9.1、 前端做校验

需要 在 对应页面vue 中添加如下代码

9.1.1、 template 标签中 在需要校验的标签中添加如下代码

需要校验的标签

例:
原始标签

账号:

加上校验后

label 为标签的前置文本 会自动加上个红色的 *。就是 * 账号:

prop 为规则引擎。需要自己配置规则

在script 标签中 添加如下代码

private ruleCustom = {

processCode: [{ required: true, message: '请输入流程编号', trigger: 'blur' },
],processCode: [{ validator: this.roundConfigDefaultCountDetection }],

};

上述代码中 描述了两种规则定义格式。

第一个简单表达式规则 表示 当失去焦点的时候不可为空

第二个规则 是 输入框的整体规则必须符合 roundConfigDefaultCountDetection 方法中定义的逻辑

10、页面中的一些语法和基础使用
语法

含义

@click="backoute

VUE 中的事件

v-model

dom文档展示的值

v-if

为真则加载dom 为假删除dom

v-for=“item in arr”

循环

:key=“item.mis”

:label=“${item.mis}

:value=“item.mis”

key 渲染坐标的唯一值

label 展示的值

value 实际的值{和后端交互的值}

循环后 item.mis 中的值会转为string

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/73103.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java版本企业工程行业管理系统源码

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下: 首页 工作台:待办工作、消息通知、预警信息,点击可进入相应的列表 项目进度图表:选择(总体或单个)项目显示1…

初学Python记

Python这个编程语言的大名当然听说过了呀,这几年特别火,火的一塌涂地。大家可以回忆一下:朋友圈推荐的广告里经常可以看见python的网课广告。 本学期,学校开设了python课程,这几天学习了一下入了一下门,感…

OpenHarmony:如何使用HDF驱动控制LED灯

一、程序简介 该程序是基于OpenHarmony标准系统编写的基础外设类:RGB LED。 目前已在凌蒙派-RK3568开发板跑通。详细资料请参考官网:https://gitee.com/Lockzhiner-Electronics/lockzhiner-rk3568-openharmony/tree/master/samples/b02_hdf_rgb_led。 …

C++ 判断

C 判断 判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。 下面是大多数编程语言中典型的判断结构的一般形式: 判断语句 C 编…

SpringMVC之前端增删改查实现

SpringMVC是一个基于MVC架构的框架&#xff0c;它可以帮助我们实现前后端的分离&#xff0c;同时也能很好地支持前端的增删改查操作。 配置 Cloudjun <?xml version"1.0" encoding"UTF-8" ?><taglib xmlns"http://java.sun.com/xml/ns/j…

TSINGSEE青犀/视频分析/边缘计算/AI算法·人员/区域入侵功能——多场景高效运用

TSINGSEE青犀视频人员/区域入侵功能可对重要区域进行实时监测&#xff0c;对监控区域进行7*24全天候管控&#xff0c;当监测到有人员靠近、闯入时&#xff0c;AI算法后台就会立即发出告警及时通知管理人员&#xff0c;变被动“监督”为主动“监控”&#xff0c;真正做到事前预警…

2023计算机毕业设计题目 毕设选题大全

文章目录 0 前言1 java web 管理系统 毕设选题2 java web 平台/业务系统 毕设选题3 游戏设计、动画设计类 毕设选题 (适合数媒的同学)4 算法开发5 数据挖掘 毕设选题6 大数据处理、云计算、区块链 毕设选题7 网络安全 毕设选题8 通信类/网络工程 毕设选题9 嵌入式 毕设选题10 开…

Newman+Jenkins实现接口自动化测试

一、是什么Newman Newman就是纽曼手机这个经典牌子&#xff0c;哈哈&#xff0c;开玩笑啦。。。别当真&#xff0c;简单地说Newman就是命令行版的Postman&#xff0c;查看官网地址。 Newman可以使用Postman导出的collection文件直接在命令行运行&#xff0c;把Postman界面化运…

uniapp项目实践总结(十三)封装文件操作方法

导语&#xff1a;在日常 APP 开发过程中&#xff0c;经常要进行文件的保存、读取列表以及查看和删除文件等操作&#xff0c;接下来就看一下具体的方法。 目录 原理分析方法实现实战演练案例展示 原理分析 主要是以下 API。 uni.saveFile&#xff1a;保存文件到本地缓存列表…

小白备战大厂算法笔试(四)——哈希表

文章目录 哈希表常用操作简单实现冲突与扩容链式地址开放寻址线性探测多次哈希 哈希表 哈希表&#xff0c;又称散列表&#xff0c;其通过建立键 key 与值 value 之间的映射&#xff0c;实现高效的元素查询。具体而言&#xff0c;我们向哈希表输入一个键 key &#xff0c;则可以…

K210-CanMV IDE开发软件

K210-CanMV IDE开发软件 界面功能简介连接设备临时运行开机运行程序 界面功能简介 区域①菜单栏&#xff1a;操作文件&#xff0c;使用工具等。 区域②快捷按钮&#xff1a;区域①中的文件和编辑中部分功能的快捷方式。 区域③连接设备&#xff1a;连接设备和程序控制按钮。 …

2023-9-8 求组合数(二)

题目链接&#xff1a;求组合数 II #include <iostream> #include <algorithm>using namespace std;typedef long long LL; const int mod 1e9 7; const int N 100010;// 阶乘&#xff0c;阶乘的逆 int fact[N], infact[N];LL qmi(int a, int k, int p) {int res…

基于单片机压力传感器MPX4115检测-报警系统-proteus仿真-源程序

一、系统方案 本设计采用52单片机作为主控器&#xff0c;液晶1602显示&#xff0c;MPX4115检测压力&#xff0c;按键设置报警&#xff0c;LED报警。 二、硬件设计 原理图如下&#xff1a; 三、单片机软件设计 1、首先是系统初始化 /***************************************…

分布式秒杀方案--java

前提&#xff1a;先把商品详情和秒杀商品缓存redis中&#xff0c;减少对数据库的访问&#xff08;可使用定时任务&#xff09; 秒杀商品无非就是那几步&#xff08;前面还可能会有一些判断&#xff0c;如用户是否登录&#xff0c;一人一单&#xff0c;秒杀时间验证等&#xff0…

OpenCV 03(数据结构--Mat)

一、Mat介绍 Mat是OpenCV在C语言中用来表示图像数据的一种数据结构.在python中转化为numpy的ndarray. Mat由header和data组成, header中记录了图片的维数, 大小, 数据类型等数据. 1.1 Mat拷贝 - Mat共享数据 在python中Mat数据对应numpy的ndarray, 使用numpy提供的深浅拷贝方…

C++——类与对象(下篇)

前言 前面已经介绍了类与对象&#xff08;上&#xff09;&#xff0c;类与对象&#xff08;中&#xff09;的两篇文章&#xff0c;下面是类与对象的最后一些重要知识点的介绍和总结。 目录 再谈构造函数Static成员友元内部类匿名对象拷贝对象时的一些编译器优化再次理解封装…

使用wkhtmltoimage实现生成长图分享

需求 用户可以选择以长图的形式分享本网页 方法 wkhtmltopdf wkhtmltopdf url filewkhtmltoimage url file java Runtime.getRuntime().exec() 下载 直接去官网下载对应的版本&#xff1a;官网 命令行使用WK > wkhtmltopdf https://www.nowcoder.com /opt/project/…

redis高可用——主从复制、哨兵模式、cluster集群

1、redis群集有三种模式 分别是主从同步/复制、哨兵模式、Cluster&#xff0c;下面会讲解一下三种模式的工作方式&#xff0c;以及如何搭建cIustr群集 主从复制:主从复制是高可用Redis的基础&#xff0c;哨兵和集群都是在主从复制基础上实现高可用的。主从复制主要实现了数据的…

功能测试常用的测试用例大全

登录、添加、删除、查询模块是我们经常遇到的&#xff0c;这些模块的测试点该如何考虑 1)登录 ① 用户名和密码都符合要求(格式上的要求) ② 用户名和密码都不符合要求(格式上的要求) ③ 用户名符合要求&#xff0c;密码不符合要求(格式上的要求) ④ 密码符合要求&#xff0c;…

WireShark抓包工具的安装

1.下载安装包 在官网或者电脑应用商城都可以下载 2.安装 打开安装包&#xff0c;点击next 点击next 选择UI界面&#xff0c;两种都装上 根据习惯选择 选择安装位置点击安装 开始安装安装成功