电商平台项目----项目搭建

2023-10-31

目录

项目介绍

其他配置

eslint 校验功能关闭

src文件简写方法,配置别名

项目路由分析(vue-router)

路由

路由组件

完成非路由组件 Header Footer 组件

步骤

配置less

路由组件的搭建-

路由组件与非路由组件的区别

$router与$route

路由的跳转

组件的显示与隐藏

路由传参

第一种

第二种 模板字符串

第三种 对象 需要路由配置name(命名路由)

接收

面试题

路由传递参数(对象写法)path是否可以结合params一起使用?

如何指定params可传可不传?

params传递的是空串如何解决

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

报错

重写push与replace方法

cla||apply区别


项目介绍

vue cli 脚手架初始化项目

node + webpack+ 淘宝镜像

  • node_modules:项目依赖文件
  • public:存放静态资源(图片)webpack打包时会原封不动的放到dist目录
  •  src源代码
  1.     assets 放置静态资源 webpack打包时,会把静态资源当做一个模块打包到js里
  2.     components:非路由组件
  3.     App.vue 根组件 (.vue)
  4.     main 入口文件(整个程序最先执行的文件)
  • babel.config 配置文件(babel相关)
  • package.json:记录项目依赖

其他配置

eslint 校验功能关闭

声明变量没有使用 eslint 校验工具报错

在根目录下创建一个 vue.config,js { lintOnSave: false }

src文件简写方法,配置别名

创建jsconfig.json文件 【@】代表src文件夹,不可以在"node_modules", "dist"使用

{
    "compilerOptions": {
        "baseUrl": "./",
        "paths": {
            "@/*": [
                "src/*"
            ]
        }
    },
    "exclude": [
        "node_modules",
        "dist"
    ]
}

项目路由分析(vue-router)

路由

前端所谓的路由kv键值对   key:URL(地址栏中的路径)  value:相对应的组件

路由组件

Home首页路由组件 Search搜索组件 login登录组件 Refister注册组件

非路由组件:

Header(首页,搜索页)

Footer(首页,搜索页) 登录页,注册没有

完成非路由组件 Header Footer 组件

步骤

书写静态页面   拆分组件   获取服务器数据动态展示  完成交互逻辑

使用组件 [非路由组件]:创建或者定义 引入 注册 使用

配置less

浏览器不识别less,需要通过 less less-loader 配置版本5   组件中加 style lang="less"

路由组件的搭建-

vue-router配置路由:放置在router文件中 

main的js挂载     //注册路由:kv一致省略v(小写)    //注册路由信息:组件身上拥有$router与$route

app.vuez主页面放router-view 路由容器

路由组件与非路由组件的区别

components:放置非路由组件  pages【views】:放置路由组件

路由组件需要在router文件中注册(使用的是组件的名字)

重定向:在项目跑起来之后,立马定项到首页 redirect

$router与$route

route:获取路由信息[路径 ,query,params 参数]

router(路由器):编程式导航跳转【push/replace】

push压栈有记录 replace替换

路由的跳转

声明式导航 router-link 必须有to属性

编程时导航 router.push,replace

声明式能做的编程式都可以编程式,可以做业务逻辑

组件的显示与隐藏

Footer: Home Search显示 登录注册时不显示

使用v-show 控制display:none 减少重排和重绘

可以使用route的路由信息 $route.path == '/Home'(不推荐)

可以使用路由元信息:配置路由时使用meta v-show="$route.meta.show"

路由传参

声明式导航 router-link 必须有to属性

编程时导航 router.push,replace

params:参数属于路径的一部分(配置路由时需要占位)path: '/Search/:keyWord',

query:类似以ajax中的queryString/home?k=v&k=v(不需要占位)

第一种

this.$router.push("/Search/" + this.keyWord + "?k=" + this.keyWord.toUpperCase())

第二种 模板字符串

this.$router.push(`/Search/${this.keyWord}?k=${this.keyWord.toUpperCase()}`);

第三种 对象 需要路由配置name(命名路由)

    this.$router.push({
        name: "Search",
        params: this.keyWord,
        query: { k: this.keyWord.toUpperCase() },
      });

接收

<h1>params路径参数----{{ this.$route.params.keyWord }}</h1>

<h1>query参数-----{{ this.$route.query.k }}</h1>

面试题

路由传递参数(对象写法)path是否可以结合params一起使用?

对象的的写法 不可以结合path一起使用 要使用name

如何指定params可传可不传?

配置路由的的时候占位了,但是路由跳转的时候不传递路径会出问题

在配置路由的加上一个问号代表可有可无path: '/Search/:keyWord?',

params传递的是空串如何解决

使用undefined解决:params: this.keyWord||undefined

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

三种写法

路由配置props:true 只可以传递params

对象写法prors{a:1,b:2}

函数写法 可以把params,query参数通过props组件传递给路由组件

报错

Uncaught TypeError: (0 , vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent) is not a function

 卸载当前vue-router版本

 使用低版本 npm  install vue-router@3

重写push与replace方法

编程式路由导航跳转(参数不变) 多次执行会抛出 navigation的警告 声明式导航没有此类问题,内部已经处理

"vue-router": "^3.5.3" 引入了promise

必须传入成功或者失败的回调可以解决 传入一个空函数结果为undefined promise为成功

this.$router.push(
        {
          name: "Search",
          params: this.keyWord,
          query: { k: this.keyWord.toUpperCase() },
        },
        () => {},
        () => {}
      );

从根本解决问题、

this:组件实例

this.$router属性:是一个对象属性值是vueRouter的实例(注册路由时,给组件实例添加的$router $routets属性)、let $router=new vueRouter

push 是 vueRouter原型上的方法 push方法的上下文应该为vueRouter类的一个实例,也就是 $router

//先把VueRouter的push方法保存一份
let orginPush = VueRouter.prototype.push;
// 重写push、replace
// 第一个参数告诉push往那跳(传递的参数)
VueRouter.prototype.push = function (location, reslove, reject) {
    //this为VueRouter的实例
    if (reslove && reject) {
        // orginPush() this为window 应该保证为VueRouter的实例
        orginPush.call(this, location, reslove, reject)
    } else {
        orginPush.call(this, location, () => { }, () => { })
    }
}
let orginReplace = VueRouter.prototype.replace;
VueRouter.prototype.replace = function (location, reslove, reject) {
    //this为VueRouter的实例
    if (reslove && reject) {
        orginReplace.call(this, location, reslove, reject)
    } else {
        orginReplace.call(this, location, () => { }, () => { })
    }

}

cla||apply区别

// 都可以调用函数一次,可以修改this指向

// 传参格式不一样 call参数用逗号隔开 apply为数组

// bind会立即调用函数一次

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

电商平台项目----项目搭建 的相关文章

  • 在javascript中使用“return !0”有什么意义吗?

    如果您转到谷歌结果页面并运行rwt toString 你会看到这个函数的返回调用是 return 0 我想不出任何理由为什么这不会总是如此true 这只是一个简写吗true 还是还有更多事情发生 总是如此 但下载需要 2 个字节 0是 2
  • 如何根据按钮单击折叠和展开 Kendo UI 树视图中的所有树节点?

    这是行不通的 您可以使用此代码 1 崩溃 折叠kendoTree查看文档 http docs kendoui com api web treeview methods collapse treeview kendoTreeView var
  • 如何使用 axios / jest 测试失败的请求

    我创建了一个非常小的应用程序 如果您传递硬币和数量 它可以计算为某些加密货币支付的总价格 我想测试错误 但我总是收到 收到的承诺已解决而不是被拒绝 我相信这是因为如果 url 错误 axios 仍然会解决承诺 我遇到的第二个问题是 我尝试测
  • 使用闭包和自调用函数制作计数器

    我想知道为什么这段代码不起作用 var uniqueInteger function var counter 0 return function return counter console log uniqueInteger 0 cons
  • 通过 SVG 背景传递鼠标事件

    我有两个 SVG 元素 每个元素覆盖整个屏幕 html body height 100 svg position absolute top 0 left 0 bottom 0 right 0
  • 如何从表中选择所有偶数 id?

    我想从 MySQL 数据库的表中选择所有甚至帖子 ID 然后显示它们 我还想获取所有带有奇怪 id 的帖子并将它们显示在其他地方 我想使用 PHP 来完成此操作 因为这是我使用的服务器端语言 或者 我是否必须选择所有帖子 然后使用 Java
  • Three.js - 在代码中包含网格数据

    我有这个 Three js 代码 其中 JSON 加载器从文件 models mountain json 加载网格 var Three new function this scene new THREE Scene this camera
  • 是否可以将反应组件导出为非反应项目中的函数

    有没有办法在非 React 项目中将 React 组件导出为函数并传入 props 作为函数的参数 我最近用 create react app 完成了一个 React 项目 现在我想将它用于其他非 React 项目 纯 Javascript
  • JQuery 动画文本

    找到简单 简单的动画文本是非常困难的 喜欢这个网站上的 内爆 http codecanyon net item jquery text animation full screen preview 233445 http codecanyon
  • 具有行组的 JQuery 斑马条纹表

    我通常将斑马条纹表行设置为奇数 偶数 如下所示 效果很好 table tbody tr visible even this addClass even table tbody tr visible odd this addClass odd
  • Telegram 授权无默认按钮

    使用 Telegram 第 3 方授权的唯一有记录的方法是使用其提供的脚本https core telegram org widgets login https core telegram org widgets login 这个脚本 正如
  • jQuery Blur() 在 Chrome 上不起作用

    我在 MacOSX 上运行这个http jsfiddle net q84wv http jsfiddle net q84wv on Chrome最新版本 它不会工作 在 Firefox 上运行时它工作得很好 有什么线索吗 假设您想要aler
  • Chrome Javascript 调试器暂停时不会重新加载页面

    有时 当我在 Chrome 中调试某些 javascript 并且暂停了 javascript 时 如果我尝试重新加载页面 chrome 只会 继续 调试器 单步执行到下一个断点 似乎没有任何方法可以强制 javascript 完全停止运行
  • setInterval 内的返回值

    我想在 setInterval 内返回一个值 我只想以一定的时间间隔执行一些操作 这就是我尝试过的 function git limit var i 0 var git setInterval function console log i
  • Postman - 如何计算 JSON 响应中特定对象的出现次数

    我是 JSON 和 Postman 的新手 我相信我正在尝试做一些非常简单的事情 我创建了一个 GET 请求 它将获得如下所示的 JSON 响应 在下面的例子中我想得到count响应中所有 IsArchived 属性 这些属性的数量因响应而
  • 使用Promise而不拒绝它会导致内存泄漏吗? [复制]

    这个问题在这里已经有答案了 代码如下 function test value return new Promise function fulfill reject try fulfill true catch e throw e 我担心的是
  • ThreeJS无法加载Json文件

    首先 我已经读过这个问题 https stackoverflow com questions 17201888 three js exporter export object not working with jsonloader r58没
  • 使用 jQuery Tablesorter 操作后如何恢复当前页面?

    我正在使用 tablesorter 但无法找到有关插件 tablesorter 寻呼机的任何文档 问题是我有一个显示一些数据的表 并且在每一行中都有一个删除链接 该链接附加了要删除的元素的唯一标识符 显然 是否可以保存我正在删除的页面 然后
  • Dojo/on 和捕获阶段

    有没有办法用 dojo on 在捕获阶段 而不是冒泡阶段 触发事件 我最终在这里寻找有关 on 的前身 dojo connect 的信息 就其价值而言 dojo connect 似乎不支持捕获阶段的事件侦听器 它的工作原理是将事件处理程序作
  • Laravel 使用 laravel-cors 和 axios 进行 POST 的“CSRF 令牌不匹配”

    我有一个正在运行的domain A拉拉维尔 5 8返回 API 的引擎网络路线 它必须检查来源才能只服务几个域 包括domain B Barryvdh laravel cors我安装了barryvdh laravel cors https

随机推荐

  • Mac 终端连接linux程服务器并相互传输文件

    连接远程Linux ssh p 22 用户名 ip地址 然后输入密码即可 从本地上传到远程 scp 本机地址 远程主机用户 远程ip 远程文件地址 从远程传输文件到本地 scp 远程主机用户 远程ip 远程文件地址 本机地址 如 scp r
  • springmvc+log4j.xml操作日志记录,详细配置

    原文地址 http www cnblogs com v weiwang p 4814050 html 参考地址 http rockelixir iteye com blog 1902352 需要导入包 log包 log4j 12 17 ja
  • 细粒度车型识别项目(基于DenseNet201, 数据集Stanfordcars-196,准确率:94.13%)

    之前做的一个细粒度车型识别项目 数据集 斯坦福大学公开细粒度车型识别数据集 196类 测试准确率达到94 13 深度学习框架 pytorch 下面是部分代码文件 有需要的联系我 wx cx157021
  • Linux不同方式安装卸载软件包如何区分(二进制、源码、rpm、yum)

    后续案例补充 二进制安装 源码安装 yum安装 rpm安装 描述 二进制包里面包括了已经编译完成 可以直接运行的程序 可以说相当于源码编译后打包 源代码包里面包括了程序原始的程序代码 需要在计算机上编译以后才可以产生可运行程序 从软件仓库安
  • Java中接口和抽象类有什么区别

    题目 请问Java中接口和抽象类有什么区别 解答 1 先看接口和抽象类的概念 接口是Java编程语言中的抽象类型 是抽象方法的集合 抽象类是一个类中含有抽象方法 抽象类前面用abstract关键词修饰 2 再说接口和抽象类间区别 接口可以含
  • MySQL的主键和外键

    使用 MySQL必知必会 中的表 向表products插入数据出错 从报错信息看 应当是表的主键和外键的问题 先用show create table products查看表products的创建信息 外键关系涉及一个包含中心数据值的父表 以
  • git高级特性之 - cherry-pick

    文章目录 背景 介绍 配置项 e edit n no commit x s signoff m parent number mainline parent number 实践案例 自动提交 不自动提交 增加额外说明信息 重新编辑提交信息 有
  • vue的优势为什么使用vue?

    问题网址 http bbs daxiangclass com thread 35 htm 轻量级框架 只关注视图层 是一个构建数据的视图集合 大小只有几十kb 简单易学 国人开发 中文文档 不存在语言障碍 易于理解和学习 双向数据绑定 保留
  • 使用 Spring 2.5 基于注解驱动的 Spring MVC

    概述 继 Spring 2 0 对 Spring MVC 进行重大升级后 Spring 2 5 又为 Spring MVC 引入了注解驱动功能 现在你无须让 Controller 继承任何接口 无需在 XML 配置文件中定义请求和 Cont
  • windows环境变量 set使用

    windows环境变量 set使用 一 查看所有环境变量的名称和值 Linux下 export Windows下 set 二 根据名称查该环境变量的值 Linux下 echo 环境变量名 比如 echo ORACLE HOME Window
  • 图像识别平台建设之路(自建+三方产品)

    强烈推荐一个大神的人工智能的教程 http www captainai net zhanghan 前言 之前做过东南亚的相关业务 业务流程中需要进行身份证或人脸识别 在国内相关的基础设施比较完善 但是在东南亚相对设施不健全 针对真人识别 有
  • 中间件的安装和优化——开源软件诞生6

    赤龙ERP软件及中间件的安装和配置 第6篇 用日志记录 开源软件 的诞生 赤龙ERP开源地址 点亮星标 感谢支持 与开发者交流 kzca2000 码云 https gitee com redragon redragon erp GitHub
  • vue.js 全局组件学习笔记

    用法 注册或获取全局组件 注册组件 传入一个扩展过的构造器 Vue component my component Vue extend 注册组件 传入一个选项对象 自动调用 Vue extend Vue component my compo
  • windows 10安装elasticsearch-head-master

    目录 1 下载安装包 2 安装依赖 2 1 安装node 2 2 安装grunt 3 安装head 1 下载安装包 es环境是在这个链接安装的 CentOS7 9安装elasticsearch 8 3 1 kibana 8 3 1和wind
  • Altium Designer学习2:如何屏蔽原理图中部分电路,保留电路的同时且不导入PCB?

    Altium Designer学习2 如何屏蔽原理图中部分电路 保留电路的同时且不导入PCB 注 本文章是我在使用Altium Designer中的总结 任何人不得商用 如有侵权 请联系我删除 谢谢 打开想要屏蔽的原理图 然后place g
  • C++ MFC学习 基于对话框实现猜数字游戏

    界面的设计 1 为控件添加变量 右键添加变量即可 Tips 为STATIC TEXT添加变量时 需要更改ID 后缀 不能为STATIC 2 初始化 OnInitDialog 中创建随机数种子 srand unsigned time NULL
  • Shell 脚本中经典的13个面试题

    经典的Shell十三问 1 为何叫做shell 2 Shell prompt PS1 与Carriage Return CR 的关系 3 别人echo 你也echo 是问echo知多少 4 双引号 与 单引号 有什么区别 5 var val
  • 解决“warning #188-D enumerated type mixed with another type”告警

    今天分享一个之前我之前在嵌入式开发时候遇到的一个告警提示 首先我们看一下这个告警提示 warning 188 D enumerated type mixed with another type 其翻译过来是 警告 188 D枚举类型与其他类
  • C--小Why的商品归位-- 牛客小白月赛77

    输入 3 3 1 1 2 1 3 2 3 输出 2 解析 先不考虑购物车的容量 即购物车容量为无限大 这样我们可以通过每种货物上车 下车的时间计算出每一个时间点内 购物车中货物的数量 统计出所有时间点内 货物数量的最大值max 这个最大值所
  • 电商平台项目----项目搭建

    目录 项目介绍 其他配置 eslint 校验功能关闭 src文件简写方法 配置别名 项目路由分析 vue router 路由 路由组件 完成非路由组件 Header Footer 组件 步骤 配置less 路由组件的搭建 路由组件与非路由组