vue2商城项目-01-总结

1.配置相关

1.1eslint关闭

说明:根目录创建vue.config.js

module.exports = {// 关闭eslintlintOnSave: false,};

1.2src配置别名

说明:根目录创建jsconfig.json文件

{"compilerOptions": {"baseUrl": "./","paths": {"@/*":["src/*"]}},"exclude": ["node_modules","dist"]
}
  • "compilerOptions":这是 JavaScript 编译器的选项部分。
    • "baseUrl":指定了基本路径,即相对于该配置文件的路径。在这个例子中,基本路径被设置为当前目录(./)。
    • "paths":这是一个路径映射配置,用于将特定的模块路径映射到实际的文件路径。
      • "@/*":这是一个自定义的模块路径前缀,以 @/ 开头的模块路径将被映射到 src/ 目录下的对应文件。
        • rc/*":这是实际的文件路径,表示所有以 src/ 开头的模块路径都将映射到 src/ 目录下的对应文件。
  • "exclude":这是一个排除配置,用于指定哪些文件或目录应该被排除在 JavaScript 编译之外。
    • "node_modules":指定了排除 node_modules 目录下的所有文件和子目录。
    • "dist":指定了排除 dist 目录下的所有文件和子目录。

2. 组件使用

说明:非路由组件一般放置components里面

2.1创建组件

2.2引入组件

2.3注册组件

2.4展示组件

3.路由组件

说明:路由组件一般放置pages里面

3.1安装vue-router

npm i vue-router 

 

 3.2配置路由

说明:配置路由放置router文件中 ,并且vue--router是插件,需要Vue.use()

//另一个专门写routes.js文件
import routes from "./routes.js";
//VueRouter实例
let router = new VueRouter({routes,scrollBehavior(to, from, savedPosition) {// 始终滚动到顶部return { y: 0 };},
});
//暴露
export default router;
export default [{name: "center",path: "/center",component: Center,meta: {show: true,}
]

 3.3注册路由

import router from "@/router";
new Vue({render: (h) => h(App),router
}).$mount("#app");

3.4展示路由组件

说明:路由出口

    <router-view></router-view>

3.5总结:

1.位置不同:非路由组件一般放置components里面,而路由组件一般放置page里面

2.路由组件一般需要在router文件夹中进行注册(使用的是组件的名字),而非路由组件使用是以标签的形式使用

3.路由组件和非路由组件中有$route:一般获取路由信息(路径,query,params等);$router:一般进行编程式导航路由跳转(push|replace)。

3.5路由重定向

  //重定向,当项目跑起来的时候,立马定向首页,路径{path: "*",redirect: "/home",},

4.路由的跳转

4.1声明式导航 

<router-link to="/login">

4.2编程式导航 

说明:声明式导航可以做的,编程式导航都可以做。

    goSearch() {this.$router.push(location);}

5.路由元信息

说明: 指定的路由组件+v-show进行展示或者隐藏

5.1路由配置

  {path: "/login",component: Login,meta: {show: false,},},

5.2 vue页面

    <!-- 在login,register是隐藏的 --><Footer v-show="$route.meta.show"></Footer>

6.路由传参

说明:参数有params参数:属于路径中的一部分,需要占位;query参数不属于路径的一部分,/login?name=123

6.1params参数

说明:通过在路由配置中使用问号 ? 来表示可选参数,可以灵活地处理不同情况下的路由匹配和参数传递。

  {name: "search",path: "/search/:keyword?",component: Search,meta: {show: true,},},
 this.$router.push("/search/"+this.keyword)

6.2query参数

 this.$router.push("/search/"+"?"+this.keyword)

6.3总结

     6.3.1.字符串形式

     this.$router.push("/search/"+this.keyword+"?"+this.keyword)

     6.3.2.模板字符串的写法

       this.$router.push(`/search/${this.keyword}?k=${this.keyword.toLocaleLowerCase()}`)

      6.3.3.对象的写法

      说明:路由对象要名字,而不是path, 如果有query参数,也应该传过去;这query不传入?是因为Vue Router 会自动处理查询参数的拼接和编码

   let location = {name: "search",params: { keyword: this.keyword || undefined },query:{k:this.keyword|| undefined}};location.query = this.$route.query;// 解释:往哪儿跳转,带什么参数,需要用name写路由组件this.$router.push(location);

6.4路由传参面试题

6.4.1路由传参对象写法中path是否可以结合parmas参数一起使用?

说明:path这种写法不能与params参数一起使用

6.4.2如何指定params可传可不传入?

说明:如果路由要求传递params参数,你不传入,那么路由路径就会出问题。配置路由后面添加一个问号,代表着可传入可不传入。?(正则表达式) 

6.4.3但是params传递的是空字符串,如何解决?

说明:用逻辑中断undefined

6.4.4路由组件可不可以传递props数据?

说明:

布尔模式 :如果 props 被设置为 trueroute.params 将会被设置为组件属性。

对象模式:如果 props 是一个对象,它会被按原样设置为组件属性。当 props 是静态的时候有用。

 props: { keyword: false }

函数模式:

  props: $route => ({ query: route.query.keyword })

7.重写push和replace

说明:因为编程式导航跳转到当前路由(参数不变),多次执行会抛出NavigationDuplicated的警告错误?

解释:vue-router引入了Promise;通过给push方法传递相应的成功,失败回调,可以捕获错误。但是治标不治本。push是VueRouter类的实例,是在它的原型上面

// 以下解决编程式问题
let originPush = VueRouter.prototype.push;
let orginReplace = VueRouter.prototype.replace;
// 重写push|replace
// 第一个参数:告诉你往哪儿跳
// 无论你传入不传成功和失败回调,都写
// 改变原型
VueRouter.prototype.push = function (location, res, rej) {if (res && rej) {// originPush()this的指向是window,如果都传入了,那么就和原来一样originPush.call(this, location, res, rej);} else {originPush.call(this,location,() => {},() => {});}
};
VueRouter.prototype.replace = function (location, res, rej) {if (res && rej) {orginReplace.call(this, location, res, rej);} else {orginReplace.call(this,location,() => {},() => {});}
};

 8.三级联动

说明:组件在多次使用,注册成全局组件,直接使用。

//三级联动组件---全局组件、
import TypeNav from "@/components/TypeNav";// 第一个参数:全局组件的名字,第二个参数:哪一个组件
Vue.component(TypeNav.name, TypeNav);

9.配置代理服务器

说明:

  • proxy:这个配置项用于设置代理,将特定的请求路径转发到目标服务器。
  • "/list":这是需要代理的请求路径前缀。例如,所有以 /list 开头的请求将被代理。
  • target:这是目标服务器的地址。你需要将 "********" 替换为实际的目标服务器地址。
  • ws: true:这个配置项用于启用 WebSocket 代理。
  • changeOrigin: true:这个配置项用于修改请求头中的 Origin 字段,以便目标服务器可以正确识别请求的来源。
  • pathRewrite:这个配置项用于重写请求路径。在这个示例中,将 /list 前缀重写为空字符串,即去掉 /list
  • secure: false:这个配置项用于禁用 SSL 安全验证。
module.exports = {// 关闭eslintlintOnSave: false,devServer: {proxy: {"/list": {target: "********",ws: true,changeOrigin: true,pathRewrite: { "^/list": "" },secure: false,},},},
};

10.美文收尾

落霞与孤鹜齐飞,秋水共长天一色!

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

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

相关文章

[Docker实现测试部署CI/CD----相关服务器的安装配置(2)]

目录 6、Jenkins安装配置安装jdk安装maven拉取镜像启动jenkins修改数据卷权限浏览器访问安装插件配置jenkins移动JDK和Maven配置JDK和Maven 6、Jenkins安装配置 Jenkins 是一个开源软件项目&#xff0c;是基于 Java 开发的一种持续集成工具&#xff0c;用于监控持续重复的工作&…

java中io流、属性集Properties、缓冲流、转换流、序列化和反序列化、打印流、网络编程(TCP通信程序、文件复制案例、文件上传案例、B/S服务案例)

IO流&#xff1a; io流中i表示input输入&#xff0c;o表示output输出&#xff0c;流表示数据&#xff08;字符&#xff0c;字节&#xff0c;1个字符2个字节8个位&#xff09;&#xff1b;这里的输入输出是以内存为基础&#xff0c;将数据从内存中输出到硬盘的过程称为输出&…

Docker实战-操作Docker容器实战(一)

导语   在之前的分享中&#xff0c;我们介绍了关于如何去操作Docker镜像&#xff0c;下面我们来看看如何去操作容器。 简单来讲&#xff0c;容器是镜像运行的一个实例&#xff0c;与镜像不同的是镜像只能作为一个静态文件进行读取&#xff0c;而容器是可以在运行时进行写入操…

SpringBoot中Redis报错:NOAUTH Authentication required

1、问题 org.springframework.dao.InvalidDataAccessApiUsageException: NOAUTH Authentication required.; nested exception is redis.clients.jedis.exceptions.JedisDataException: NOAUTH Authentication required. … 2、解决 如果提供了密码还没解决&#xff0c;那可能是…

如何从 Android 设备恢复已删除的文件?

从 Android 设备恢复已删除的文件很简单&#xff0c;但您需要了解内部恢复和SD 卡恢复之间的区别。 目前销售的大多数 Android 设备都配备了 SD 卡插槽&#xff08;通常为 microSD&#xff09;&#xff0c;可以轻松添加额外的存储空间。该存储空间可用于存储照片、视频、文档&a…

枫叶时代:打造中国特色的传统文化IP

近年来&#xff0c;取材于传统文化的影视作品在文化产业市场受到前所未有的关注。作为一种兼具辨识度、影响力和流量变现能力的文化符号&#xff0c;影视IP既是文化产业的一个重要环节&#xff0c;也是国家文化软实力的直接体现。优秀的影视IP可以超越文字、语言、民族的障碍&a…

Stable Diffusion - SDXL 模型测试 (DreamShaper 和 GuoFeng v4) 与全身图像参数配置

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/132085757 图像来源于 GuoFeng v4 XL 模型&#xff0c;艺术风格是赛博朋克、漫画、奇幻。 全身图像是指拍摄对象的整个身体都在画面中的照片&…

Redis 客户端有哪些?

文章目录 JedisLettuceRedisson最佳实践 - 到底用哪个&#xff1f; Redis 最常见的 Java 客户端有两个&#xff0c;Jedis 和 Lettuce&#xff0c;高级客户端有 Redisson&#xff0c;见下图&#xff08;图源 Clients | Redis&#xff09; Jedis Github地址&#xff1a;redis/j…

Redis主从复制原理

持久化机制是在一台Redis主机上进行操作&#xff0c;如果这台机器出了问题&#xff0c;如果是持久化数据的硬盘出了问题&#xff0c;那数据就会丢失。主从复制就是为了解决单点故障的。 同时&#xff0c;主从模式下采用的是读写分离来对外提供服务 于是&#xff0c;将主服务器和…

Cocos Creator的 Cannot read property ‘applyForce‘ of undefined报错

序&#xff1a; 1、博主是看了这个教程操作的时候出的bug>游戏开发 | 17节课学会如何用Cocos Creator制作3D跑酷游戏 | P9 代码控制对象移动_哔哩哔哩_bilibili 2、其实问题不是出在代码上&#xff0c;但是发现物体就是不平移 3、node全栈的资料》node全栈框架 正文…

AMEYA360:瑞萨电子MCU和MPU产品线将支持Microsoft Visual Studio Code

全球半导体解决方案供应商瑞萨电子宣布其客户现可以使用Microsoft Visual Studio Code&#xff08;VS Code&#xff09;开发瑞萨全系列微控制器&#xff08;MCU&#xff09;和微处理器&#xff08;MPU&#xff09;。瑞萨已为其所有嵌入式处理器开发了工具扩展&#xff0c;并将其…

QTableWidget对单元格(QWidget/QTableWidgetItem)的内存管理[clearContents()]

目录 现象结论代码验证clearContents() 会释放QTableWidgetItem 和QWidget 对象&#xff0c;但是不指向nullptrmemorytable.hmemorytable.cpp断点情况 验证clearContents()是延时释放QWidget 的而QTableWidgetItem 立即释放 现象 结论 clearContents() 会清除表格中的所有单元格…