创建vue项目(三)路由跳转、反向代理、本地存储、状态管理

数据更新渲染,axios请求数据,配置环境

一、路由跳转

  1. app.vue
<template><div id="app"><keep-alive><router-view/></keep-alive></div>
</template><script>
export default {name: 'app'
}
</script>
  1. 页面跳转
    .router-link-active
    在这里插入图片描述
  2. 二级路由
    在路由下添加 children 数组,继续写路由,需要注意的是 children 中的 path 不要加 " / "。为了让地址为 /workOrder 是有页面效果,需要重定向到指定的页面,用 redirect 重新定向。
    在这里插入图片描述
    表格中的路由跳转
    在这里插入图片描述

二、反向代理

  1. 项目根目录创建一个配置文件 vue.config.js ,我们将在此配置一些环境,具体可在 vue-cli 官网上进行查阅。
    在这里插入图片描述
    代码:
module.exports =  {devServer : {proxy : {'/api' : {target : "http:AA.BB.CC.DD:端口",changeOrigin : true,pathRewrite:{'^/api':'//connect' //此处将^/api替换为/api,即使用/api就变成了http:AA.BB.CC.DD:端口//connect}}}}
}

使用:
在这里插入图片描述
axios请求的路径中的 /api ,即 proxy 下的 ‘/api’ 代表的是在 vue.config.js 中配置的 http://AA.BB.CC.DD:端口号//connect;

  1. 安装 axios ,并引入;axios说明文档
    axios全局配置 - 简书
    https://www.jianshu.com/p/0da733d7a8df
    (1) npm install axios
    (2)cnpm install axios --save-dev
    (3)main.js 引入
import axios from 'axios'
Vue.prototype.$axios = axios;
  1. 关于vue跨域问题,修改代理后仍出现404
    (1) “重新运行cnpm run dev”,
    (2) “测试接口是否能够正常访问”

  2. vue在哪个生命周期进行数据请求
    (1)一般在 created(或beforeRouter) 里面就可以,如果涉及到需要页面加载完成之后的话就用 mounted;
    (2)在created的时候,视图中的html并没有渲染出来,所以此时如果直接去操作html的dom节点,一定找不到相关的元素
    而在mounted中,由于此时html已经渲染出来了,所以可以直接操作dom节点,(此时document.getelementById 即可生效了)。
    beforeCreate 创建之前:已经完成了 初始化事件和生命周期
    created 创建完成:已经完成了 初始化注册和响应
    beforeMount 挂载之前:已经完成了模板渲染
    mounted :挂载之后:已完成HTML虚拟化,创建了el节点 可以操作DOM了
    beforeDestroy :摧毁之前:整个vue都处在实时监控空渲染和更新
    destroyed: 已摧毁,已经摧毁了观察者,子元素和事件监听
    created:在模板渲染成html前调用,即通常初始化某些属性值,然后再渲染成视图。
    mounted:在模板渲染成html后调用,通常是初始化页面完成后,再对html的dom节点进行一些需要的操作。
    挂载到节点上的初始化方法通常用mounted去操作,主动调起的用methods里面封装方法。
    数据初始化一般放到created里面,这样可以及早发请求获取数据,如果有依赖dom必须存在的情况,就放到mounted(){this.$nextTick(() => { /* code */ })}里面
    Vue是异步执行dom更新的,一旦观察到数据变化,Vue就会开启一个队列,然后把在同一个事件循环 (event loop) 当中观察到数据变化的 watcher 推送进这个队列。如果这个watcher被触发多次,只会被推送到队列一次。这种缓冲行为可以有效的去掉重复数据造成的不必要的计算和DOm操作。而在下一个事件循环时,Vue会清空队列,并进行必要的DOM更新。

  3. 调用的时机:

created:在模板渲染成html前调用.

mounted:在模板渲染成html后调用

  1. 各自处理的事物

created: 数据的初始化,异步请求也适宜在这里调用。

mounted: 通常是初始化页面完成后,再对html的dom节点进行一些需要的操作

三、本地存储

对于不怎么发生变化的数据,可以使用本地存储,减少请求次数。
在这里插入图片描述
注意: 存储时,若为数组,要对数据类型进行转换。

四、状态管理

对于复杂组件之间的通讯,可以使用状态管理。为了方便以后的扩展,所采用的方式与路由类似。

  1. stores 文件夹下创建与路由一样名称的文件夹,在这些文件夹下新建 index.js 文件,用来写相关逻辑。
    index.js的代码:
    在这里插入图片描述
    还可以做一些简单的逻辑处理
    在这里插入图片描述

2. 然后在 stores 文件下的子 index.js 中注册

import 名称 from '文件路径';
exportdefault new Vuex.Store({ //新增一个modulesmodules : {名称}
});

3. 使用:
(1) html中使用: {{$store.state.city.nm}}
(2) 方法中:
在这里插入图片描述
4. 注意:
(1) window.localStorage.setItem() 不仅可以创建赋值,还可以设置重新赋值;

方法名:( nm , id ){this.$store.commit("名称/CITY_INFO",{ nm , id })
}

查看:
在这里插入图片描述
(2) 若存储的数据只有一条时,注意后面不需要加 .字段名
在这里插入图片描述
5. 监听vuex的变化在这里插入图片描述

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

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

相关文章

jinfo:JVM运行时配置的命令行浏览

在最近的几篇博客中&#xff08;特别是在对Java EE 7性能调优和优化以及WildFly性能调优的书的评论中&#xff09;&#xff0c;我引用了自己过去在某些Oracle JDK命令行工具上的博客文章。 令我震惊的是&#xff0c;我从来没有专门解决过漂亮的jinfo工具&#xff0c;这篇文章旨…

javascript---parseInt(08)或parseInt(09)转换返回0的解决办法

javascript parseInt函数使用率非常高&#xff0c;主要功能是将一个string转换为integer。有两个重载&#xff1a; parseInt(s);parseInt(s,radix)第一个方式不再多说&#xff0c;第二个方式&#xff0c;radix是s所基于的进制。范围为2-36&#xff08;不在此范围函数将返回NaN&…

创建vue项目(四)路由相关知识、路由守卫、插槽、打包小细节

一、路由相关点 1. 路由跳转传参以及接参 https://segmentfault.com/a/1190000012393587 方法一&#xff1a; &#xff08;1&#xff09; 参数配置&#xff1a; { path : xx/:参数变量,component:xx}(2) 使用 <router-link toxx/参数></router-link>(3) 传参 …

Luogu5298 [PKUWC2018]Minimax

太久没写博客了&#xff0c;过来水一发。感觉自己推式子的功力还不够。。。 题目链接&#xff1a;洛谷 首先我们想到&#xff0c;考虑每个叶节点的权值为根节点权值的概率。首先要将叶节点权值离散化。 假设现在是$x$节点&#xff0c;令$f_i,g_i$分别表示左/右节点的权值$i$的概…

js实现类名的添加与移除

方法1&#xff1a;使用className属性&#xff1b; 方法2&#xff1a;使用classList API&#xff1b; //用于匹配类名存在与否 function reg(name){return new RegExp((^|\\s) name (\\s |$)); }//hasClass addClass removeClass toogleClass var hasClass,addClass,removeCla…

js封装常用函数

自己封装函数时&#xff0c;参数最好不要超过3个&#xff0c;若要超过&#xff0c;可以用数组或者对象&#xff1b; 1. 利用&#xff08;Math.random&#xff09;写指定范围的随机数 2. 补零 3. 数组去重 4. 排序 5. 敏感词过滤 6. 判断数组中是否存在某一条数据&#xff0c;结…

redis学习(一)

1.redis安装&#xff08;来自 https://www.runoob.com/redis/redis-install.html&#xff09; window下安装 下载地址&#xff1a;https://github.com/MSOpenTech/redis/releases。 Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择&#xff0c;这里我们下载 R…

多项式相加链表

#include <stdio.h> #include <stdlib.h> typedef struct Node //一个项节点 { int modulus; //系数 int cover; //幂 struct Node* next; }List; void creatList(List *&l) //创建多项式链表 { List* r; List* s; int n; l (List*)malloc(sizeof(Node)); r …

JPA教程–在Java SE环境中设置JPA

JPA代表Java Persistence API&#xff0c;它基本上是一个规范&#xff0c;描述了一种将数据持久存储到持久存储&#xff08;通常是数据库&#xff09;中的方法。 我们可以将其视为类似于Hibernate的 ORM工具的东西&#xff0c;除了它是Java EE规范的正式组成部分&#xff08;并…

h5上传图片及预览

第一次做图片上传&#xff0c;记录一些问题。 1&#xff0c;图片的base64编码就是可以将一副图片数据编码成一串字符串&#xff0c;使用该字符串代替图像地址。而网页上的每一个图片&#xff0c;都是需要消耗一个http请求下载而来的&#xff0c;使用base64就不用请求http。 2&a…

JSON(一)

JSON&#xff1a;JavaScript Object Notation(JavaScript 對象表示法&#xff09; JSON是存儲和交換文本信息的語法。類似于XML。 JSON比XML更小&#xff0c;更快&#xff0c;更易解析。 什麼是JSON &#xff1f; JSON指的是JavaScript對象表示法 是輕量級的文本數據交換格式…

滚动条造成页面抖动问题

总结&#xff1a; 若用到 margin:0 auto; 使页面居中&#xff0c;若部分页面出现滚动条&#xff0c;滚动条默认有 20px&#xff0c;这样会造成页面抖动&#xff1b; 解决办法&#xff1a;参考 1. html{overflow:scoll;} 让页面一直显示滚动条。 overflow 的几个属性值&#xf…

编写数据访问代码测试–单元测试是浪费

几年前&#xff0c;我是为我的数据访问代码编写单元测试的那些开发人员之一。 我正在孤立地测试所有内容&#xff0c;我对自己感到非常满意。 老实说&#xff0c;我认为自己做得很好。 哦&#xff0c;男孩&#xff0c;我错了&#xff01; 这篇博客文章描述了为什么我们不应该为…

[JSON].typeOf( keyPath )

语法&#xff1a;[JSON].typeOf( keyPath ) 返回&#xff1a;[String | Number | Boolean | Json | Array | Function | 空字符] 说明&#xff1a;获取指定键名值的类型 示例&#xff1a; Set jsonObj toJson("{a: test, b: 1, c:true, d:[1,2,3,4], e:{a1:2}}"…

简单电商购物程序

sum0i1""shuruinput("请输入“手机”或“电脑”&#xff1a;")if shuru"手机": while True: sp{"iphoneX"7998,"华为P30"6998} print(sp) ainput("输入Buy进入结算,继续购买请输入物品名称&#xff1a;") if i&qu…

ie 浏览器布局中的 offset

出现原因&#xff1a; 此处的offset的值表示的是盒子模型经过计算后的实际偏移量&#xff0c;通常是margin及定位偏移量之和&#xff08;flex布局导致的偏移也会计算在内&#xff09;。在此处也无需消除。 解决办法&#xff1a; 父元素设置宽高。设置margin为负数&#xff0…

【Set jsonObj = toJson( jsonString )】创建JSON实例

创建JSON实例&#xff1a; 原型: toJson( jsonString ) 说明: 创建JSON实例 返回: [JSON] 参数:jsonString [可选] 可以用json格式字符串创建实例 示例&#xff1a; <% 方法一&#xff1a;创建一个空的JSON实例 Set jsonObj1 toJson() 方法二&#xff1a;用JSON字符串创建…

当我们的代码遇到问题的时候....;要想不遇到问题,写代码的时候要.....

当我们的代码遇到问题的时候&#xff1a;1&#xff0c;不要怨天怨地。出了问题&#xff0c;当然有可能是系统的bug&#xff0c;API的问题&#xff0c;但是那些几率往往比你犯低级错误的几率要低多了&#xff0c;先从自己身上找原因&#xff0c;是不是自己写错了。   2&#x…

为什么我不信任通配符,以及为什么我们仍然需要通配符

在将子类型多态性&#xff08;面向对象&#xff09;与参数多态性&#xff08;泛型&#xff09;相结合的任何编程语言中&#xff0c;都会出现方差问题。 假设我有一个字符串列表&#xff0c;键入List<String> 。 我可以将其传递给接受List<Object>的函数吗&#xff…

MySQL集群(PXC)入门

一、学习动机 伴随互联网行业的兴起&#xff0c;越来越多的领域需要相应的技术方案&#xff0c;比如&#xff1a;打出软件、电商平台、直播平台、电子支付、媒体社交。 身边常见的&#xff0c;校园出成绩那一年&#xff0c;我们会感觉网站异常的卡顿&#xff0c;因为访问人数太…