vue2商城项目-01-总结

news2024/11/14 22:03:44

1.配置相关

1.1eslint关闭

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

module.exports = {
  // 关闭eslint
  lintOnSave: 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 = {
  // 关闭eslint
  lintOnSave: false,
  devServer: {
    proxy: {
      "/list": {
        target: "********",
        ws: true,
        changeOrigin: true,
        pathRewrite: { "^/list": "" },
        secure: false,
      },
    },
  },
};

10.美文收尾

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

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

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

相关文章

通俗理解大模型的各大微调方法:从LoRA、QLoRA到P-Tuning V1/V2

前言 PEFT 方法仅微调少量(额外)模型参数&#xff0c;同时冻结预训练 LLM 的大部分参数 第一部分 高效参数微调的发展史 1.1 Google之Adapter Tuning&#xff1a;嵌入在transformer里 原有参数不变 只微调新增的Adapter 谷歌的研究人员首次在论文《Parameter-Efficient Tran…

代码随想录算法训练营day25 | 216. 组合总和 III,17. 电话号码的字母组合

目录 216. 组合总和 III 17. 电话号码的字母组合 216. 组合总和 III 难度&#xff1a;medium 类型&#xff1a;回溯 思路&#xff1a; 与77组合类似的题目。 代码随想录算法训练营day24 | 回溯问题&#xff0c;77. 组合_Chamberlain T的博客-CSDN博客 注意两处剪枝。 代码…

__attribute__((noreturn))

GNU C 的一大特色就是__attribute__ 机制&#xff0c;__attribute__ 可以设置函数属性&#xff08;Function Attribute&#xff09;、变量属性&#xff08;Variable Attribute&#xff09;和类型属性&#xff08;Type Attribute&#xff09;。 语法格式为: __attribute__((att…

gin框架学习

文章目录 配置go环境实现一个简单的web响应服务验证功能gin增加页面以及传递数据 配置go环境 去go官网下载对应的版本 go下载地址 tar -C /usr/local -xzf go1.4.linux-amd64.tar.gz 我们可以编辑 ~/.bash_profile 或者 /etc/profile&#xff0c;并将以下命令添加该文件的末…

linux安装Tomcat部署jpress教程

yum在线安装&#xff1a; 查看tomcat相关的安装包&#xff1a; [rootRHCE ~]# yum list | grep -i tomcat tomcat.noarch 7.0.76-16.el7_9 updates tomcat-el-2.2-api.noarch 7.0.76-16.el7_9 updat…

CI/CD—Docker初入门学习

1 docker 了解 1 Docker 简介 Docker 是基于 Go 语言的开源应用容器虚拟化技术。Docker的主要目标是build、ship and run any app&#xff0c;anywhere&#xff0c;即通过对应用组件的封装、分发、部署、运行等生命周期的管理&#xff0c;达到应用组件级别的一次封装、到处运…

综合与新综合与新型交通发展趋势[75页PPT]

导读&#xff1a;原文《综合与新综合与新型交通发展趋势[75页PPT]》&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。 完整版领取方式 完整版领取方式&#xff1a; 如需…

程序员副业指南:怎样实现年入10w+的目标?

大家好&#xff0c;这里是程序员晚枫&#xff0c;全网同名。 今天给大家分享一个大家都感兴趣的话题&#xff1a;程序员可以做什么副业&#xff0c;年入十万&#xff1f; 01 推荐 程序员可以从事以下副业&#xff0c;以获得一年收入10w&#xff1a; 兼职编程&#xff1a;可…

Element的Dialog+Form使用问题

在Element的Dialog中使用表单时&#xff0c;可能会出现以下问题 无法清空表单校验 <el-dialog title"新建资产" :visible.sync"addAssetsFormVisible" close"resetForm(addAssets)">resetForm (formName) {this.$refs[formName].resetFie…

推荐几款主流的Css Reset

CSS Reset CSS Reset&#xff08;CSS重置&#xff09;是一种技术&#xff0c;用于消除不同浏览器之间默认样式的差异&#xff0c;以确保网页在各个浏览器中的显示一致性。由于不同浏览器对元素的默认样式有所不同&#xff0c;使用CSS Reset可以将这些默认样式归零或统一&#x…

idea添加翻译插件并配置有道翻译

1、安装Translation插件 2、 创建有道云应用 有道智云控制台 3、设置idea 4、效果&#xff08;选中文本右键翻译&#xff0c;默认快捷键CtrlShiftY&#xff09;

OpenCV学习笔记--以车道线检测入门

本笔记gitee源代码&#xff1a; https://gitee.com/hongtao-jiang/opencv_lanedetect.git 2023.8.5 文章目录 1、OpenCV安装2、图片的读入、保存3、Canny算法边缘检测4、ROI mask5、霍夫变换6、离群值过滤7、最小二乘拟合8、直线绘制9、视频流读写 1、OpenCV安装 conda管理虚…

如何用限制立方样条(RCS)做生存分析?

一、引言 在医学和统计学领域&#xff0c;生存分析是一种分析个体生命长度和生存时间的重要方法。了解人们生存的期限和影响因素&#xff0c;对于制定健康政策、优化医疗资源的分配以及个体护理方案的制定都至关重要。传统的生存分析方法如Kaplan-Meier曲线和Cox比例风险模型已…

XXL-JOB定时任务框架(Oracle定制版)

特点 xxl-job是一个轻量级、易扩展的分布式任务调度平台&#xff0c;能够快速开发和简单学习。开放源代码并被多家公司线上产品使用&#xff0c;开箱即用。尽管其确实非常好用&#xff0c;但我在工作中使用的是Oracle数据库&#xff0c;因为xxl-job是针对MySQL设计的&#xff…

北邮22信通:第五章 图 最短路径 Dijkstra算法

北邮22信通一枚~ 跟随课程进度每周更新数据结构与算法的代码和文章 持续关注作者 解锁更多邮苑信通专属代码~ 获取更多文章 请访问专栏&#xff1a; 北邮22信通_青山如墨雨如画的博客-CSDN博客 一. 算法核心思想 Dijkstra算法是用来求取图中两个结点之间最短路径的算…

mysql大表的深度分页慢sql案例(跳页分页)

1 背景 有一张表&#xff0c;内容是 redis缓存中的key信息&#xff0c;数据量约1000万级&#xff0c; expiry列上有一个普通B树索引。 -- test.top definitionCREATE TABLE top (database int(11) DEFAULT NULL,type varchar(50) DEFAULT NULL,key varchar(500) DEFAULT NUL…

java+ssm校园高校足球联赛管理系统tdl2g

随着计算机技术发展&#xff0c;计算机系统的应用已延伸到社会的各个领域&#xff0c;大量基于网络的广泛应用给生活带来了十分的便利。所以把足球联赛管理与现在网络相结合&#xff0c;利用计算机搭建足球联赛管理系统&#xff0c;实现足球联赛管理系统的信息化。则对于进一步…

直线导轨在视觉检测设备中的应用

随着科技的不断发展&#xff0c;视觉检测设备已经逐渐代替了传统的人工品检&#xff0c;成为了工业生产中的一部分&#xff0c;在五金配件、塑胶件、橡胶件、电子配件等检测工业零部件表面外观缺陷尺寸方面应用&#xff0c;视觉检测设备具有优势。 直线导轨作为视觉检测设备中重…

EVE-NG MPLS L2VPN static lsp

目录 1 拓扑 2 配置步骤 2.1 配置接口IP 和路由协议 2.2 配置MPLS LDP 2.3 配置L2VPN PW 2.4 验证L2VPN 1 拓扑 2 配置步骤 2.1 配置接口IP 和路由协议 PE1 interface LoopBack 0ip address 1.1.1.9 32 quitinterface GigabitEthernet1/0ip address 10.1.1.1 255.255…

【数理知识】求刚体旋转矩阵和平移矩阵,已知 N>=3 个点在前后时刻的坐标,且这 N>=3 点间距离始终不变代表一个刚体

序号内容1【数理知识】自由度 degree of freedom 及自由度的计算方法2【数理知识】刚体 rigid body 及刚体的运动3【数理知识】刚体基本运动&#xff0c;平动&#xff0c;转动4【数理知识】向量数乘&#xff0c;内积&#xff0c;外积&#xff0c;matlab代码实现5【数理知识】协…