当前位置: 首页 > news >正文

智慧商城项目1-项目初始化创建

       这是一个面向移动端的项目,先看看做了这个项目能收获什么,注意这是vue2的项目, 是个经典项目,能为未来学习vue3项目打下基础。

首先来说一下为啥是vue2,因为vue3还没有大范围普及,目前大部分企业还在用vue2的选项式API的写法,vue3的组合式API风格是趋势(虽然我本人更喜欢vue3的语法嘿嘿~~因为更像后端那种风格,但是学了vue2的语法感觉vue2的语法挺简单的)。

  • 由于我是第一次写博客,里面文章的样式、格式可能没怎么操弄 ,大家可以指出调整意见,我会第一时间调整的。

 创建项目

基于vue-cli脚手架创建项目,输入

vue create hm-shopping

如果出现'vue' 不是内部或外部命令,也不是可运行的程序或批处理文件。这个报错,是因为你在nodejs里面缺乏vue.cmd,并且没有配置环境变量。具体解步骤可以把报错结果复制下来到csdn上搜索解决办法,我就不细说了。

接下来选择如下画红框的,

注意:第二个红框按空格相当于选择,选完红框中的四个之后回车即可,其他也是类似 

 我的最后一个选项有npm是因为我电脑装了npmpnpm,我选择了npm

 出现下面这个页面表示项目创建成功了

然后输入cd hm-shopping,再输入npm run serve去启动,之后在浏览器输入http://localhost:8080/ 如下图启动成功

 调整初始化目录

首先先把我画红框的删除,目录解构跟我不一样没关系,就是把components和views下的所有文件删除

之后把router下的index.js删成如图所示

App.vue只留一个路由出口,所有样式也删除掉

然后在src目录下面新建api和utils两个文件夹

两个目录作用如下:

① api接口模块:发送ajax请求的接口模块
② utils 工具模块:自己封装的一些工具方法模块

vant组件库

 vant导入

全部导入可查看官方文档:Vant 2 - Mobile UI Components built on Vue

推荐使用按需引入

先安装vant2,后面要加-force,不然会报错

npm i vant@latest-v2 -S -force

然后装插件

npm i babel-plugin-import -D -force

然后把这段代码复制到bable.config.js这个文件

plugins: [['import', {libraryName: 'vant',libraryDirectory: 'es',style: true}, 'vant']]

像这个样

之后在utils下的文件夹新建vant-ui.js,按需导入几个ui测试看看

import Vue from 'vue'
import { Button, Switch } from 'vant'Vue.use(Button).use(Switch)

实际上 以上代码本来都是在main.js编写的,但是随着导入的组件越来越多,会造成main,js代码量过大,于是把所有的组件导入和使用写在工具类utils下的vant-ui.js

然后在main.js导入vant-ui.js

import '@/utils/vant-ui'

然后在App.vue下中的template中的div里面填入如下代码,之后运行测试看看

<van-button type="primary">主要按钮</van-button>
<van-button type="info">信息按钮</van-button>
<van-button type="default">默认按钮</van-button>

在浏览器查看,出现组件说明运行成功

不过有可能报如下这个错误,这些都是ESLint代码格式不规范报的错

但是老是这样手动修改太麻烦,可以在vscode里面安装ESLint插件 ,

然后打开左下角的设置图标,选择设置选项,之后点击右上角的红框框

将这个配置代码保存进去即可

//保存的时候自动帮我们修正错误"editor.codeActionsOnSave": {"source.fixAll": true},//保存的时候不自动格式化"editor.formatOnSave": false

postcss插件实现--vw适配

这个插件的作用是量了多少px就显示多少vw,px/基准值(比如375) * 100 = vw

这个安装插件根据你自己的选择,你是npm就用我的,yarn就按照黑马的步骤来

我放上如下这张图片是在了解为什么要vw适配——毕竟本篇文章是作为我的学习笔记使用的,当然我会考虑到有些地方大家可能会报错,会尽量写的详细些的

  • 1.安装插件
  • npm add postcss-px-to-viewport@1.1.1 -D -force
  • 在根目录新建postcss.config.js文件,填入配置
    module.exports = {plugins: {'postcss-px-to-viewport': {viewportWidth: 375}}
    }
    

如图所示

 路由设计配置

配置一级路由

在视图views里面新建6个文件夹,每个文件夹代表一个模块。其中搜索页搜索列表都是搜索功能,两个可以合并成一个模块。  

layout:首页模块,                   login:登录模块,                        myorder:订单管理,                        pay:结算支付,                        prodetail:订单详情,                search:两个搜索模块。

 之后在每个模块文件夹都新建模块的组合性index.vue文件,在export default里加个属性name配置这个模块的名称,由于ESLint的语法规范,要求名字必须是多个单词组成,并且是大驼峰命名法,所以如图所示,属性name的值每个都是某某Index的格式,比如prodetail中的index.vue里面的name是ProDetailIndex。

例外:search有两个模块,一个搜索列表,一个搜索页。如下图:我们把搜索页的模块放在index.vue里面(左图),搜索列表放在list.vue里面(右图)。

 然后在router下面的index.js去配置各个模块的路由,直接复制以下代码到里面

import Vue from 'vue'
import VueRouter from 'vue-router'
import Login from '@/views/login'
import Layout from '@/views/layout'
import Myorder from '@/views/myorder'
import Pay from '@/views/pay'
import ProDetail from '@/views/prodetail'
import SearchList from '@/views/search/list'
import Search from '@/views/search'Vue.use(VueRouter)
const router = new VueRouter({routes: [{ path: '/login', component: Login },{ path: '/', component: Layout },{ path: '/myorder', component: Myorder },{ path: '/pay', component: Pay },// 动态路由传参,确定是那个商品{ path: '/prodetail/:id', component: ProDetail },{ path: '/search', component: Search },{ path: '/searchlist', component: SearchList }]
})export default router

完成底部导航栏

由于二级路由是全部在首页里面的,他底部有个导航栏的,所以先实现底部的导航栏

首先在utils文件夹下的vant-ui.js按需导入。

import { Button, Switch, Tabbar, TabbarItem } from 'vant'Vue.use(Tabbar)
Vue.use(TabbarItem)

你就把上面代码复制下来粘贴上去,由于前面配置了自动ESLint修改,按住Ctrl+S保存后,会自动帮我们调整好

之后在首页模块layout文件夹下的index.vue,在template标签里的div标签粘贴如下代码

<van-tabbar active-color="#ee0a24" inactive-color="#000"><van-tabbar-item icon="wap-home-o">首页</van-tabbar-item><van-tabbar-item icon="apps-o">分类页</van-tabbar-item><van-tabbar-item icon="shopping-cart-o">购物车</van-tabbar-item><van-tabbar-item icon="user-o">我的</van-tabbar-item>
</van-tabbar>

 同时把App.vue里面的画红框的删掉

 改成路由视图出口

 

然后npm run serve运行,vscode会出现这个画面,ctrl+点击打开第一个链接,

之后右键。拉到最底下选择检查,因为这是移动端的项目,首先选择左图的红框,调成移动端;然后选择最右边的三个点选择左右阅读模式

最后左边的效果图底部出现标签栏则成功

配置二级路由 

接下来配置二级路由,所有的二级路由都是在首页模块下的,所以在layout文件夹下新建 如下图画红框的四个文件,每个vue文件代表首页基于底部导航栏的不同的四个界面。每个文件呢按照绿框中的格式编写,当你配置过一级路由就知道是啥意思了

之后在配路由的router下的index.js中,将配置首页的路由{ path: '/',component: Layout }改成如下代码

{path: '/',component: Layout,redirect: '/home',children: [{ path: '/home', component: Home },{ path: '/category', component: Category },{ path: '/cart', component: Cart },{ path: '/user', component: User }]},

redict是重定向,表明访问’/‘这个路由是默认直接跳转到/home 

之后再在上方导入对应模块

import Home from '@/views/layout/home'
import Category from '@/views/layout/category'
import Cart from '@/views/layout/cart'
import User from '@/views/layout/user'

然后跳到layout文件夹下的index.vue中,在van-tabbar标签中 添加route表明添加了路由模式,然后在下面每个tabbar-item添加to="/xxx"的导航链接,之后在上方同样的加入二级路由出口<router-view></router-view>。

接下来在浏览器查看看是否成功。

  • #后面只保留/,回车看是否跳转到/home
  • 点击下方其余导航栏部分,观察上方的路由是否改变,空白区域是否变化

 没问题那么恭喜你,已经完成所有的路由配置

加下来会写关于登陆界面的布局以及axios的封装,和登录功能,敬请期待~~~,点个关注点个赞以后不迷路~~~

相关文章:

智慧商城项目1-项目初始化创建

这是一个面向移动端的项目&#xff0c;先看看做了这个项目能收获什么&#xff0c;注意这是vue2的项目&#xff0c; 是个经典项目&#xff0c;能为未来学习vue3项目打下基础。 首先来说一下为啥是vue2&#xff0c;因为vue3还没有大范围普及&#xff0c;目前大部分企业还在用vue2…...

Java集合(四)--treeset/treemap/章节练习题目/去重原理的解读和应用

文章目录 1.treeset结构2.treemap结构3.集合去重辨析总结4.对于arraylist的练习题目5.对于HashMap的练习题目6.第三点的去重运用7.HashSe练习题目 1.treeset结构 下面的这个就是对于这个treeset结构进行测试的一个程序&#xff0c;在这个里面&#xff0c;add表示的就是对于这个…...

如何开启华为交换机 http

系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 例如&#xff1a;第一章 Python 机器学习入门之pandas的使用 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目…...

SpringBoot中的RedisTemplate对象中的setIfAbsent()方法有什么作用?

文章目录 原子性操作用于分布式锁可选的过期时间 setIfAbsent() 方法是 Redis 中用于设置一个键值对的命令&#xff0c;只有在该键不存在时才会设置成功。它通常用于实现分布式锁的逻辑 主要功能: 原子性操作 setIfAbsent() 是一个原子性操作&#xff0c;意味着在执行该操作的…...

《合肥工业大学学报(自然科学版)》

《合肥工业大学学报(自然科学版)》以基础理论、应用科学和工程技术为主的综合性学术刊物&#xff0c;主要刊登机械工程、仪器科学与光电工程、材料科学与工程、电气与自动化工程、计算机与信息工程、电子科学与应用物理、土木与水利工程、资源与环境工程、汽车与交通工程、化学…...

Android11 USB Camera会出现预览绿屏问题

目录 一、问题描述 二、问题原因 三、解决方法 一、问题描述 DDR容量是4G及以上的机器&#xff0c;USB Camera会出现预览绿屏问题。 串口中会刷如下log: 二、问题原因 RGA2使用超过4G内存会异常&#xff0c;导致USB Camera调用rga相关操作报错&#xff0c;从而预览绿屏 三…...

Mongodb 获取集合(collection)的统计信息

在MongoDB中&#xff0c;获取指定集合&#xff08;collection&#xff09;的统计信息可以通过执行collStats命令来实现。这个命令提供了关于集合的详细信息&#xff0c;包括&#xff1a; 集合的大小索引的大小和数量文档的数量存储空间的使用情况各种统计数据&#xff0c;如平…...

Java中的集合(1)——List、Map和Set

Java标准库自带的java.util包提供了集合类&#xff1a;Collection&#xff0c;它是除Map外所有其他集合类的根接口。Java的java.util包中提供了以下三种类型的集合&#xff1a; List&#xff1a;一种有序列表的集合&#xff0c;例如&#xff0c;按索引排列的Student的List&…...

MySQL8.0主从同步报ERROR 13121错误解决方法

由于平台虚拟机宿主机迁移&#xff0c;导致一套MySQL主从库从节点故障&#xff0c;从节点服务终止&#xff0c;在服务启动后&#xff0c;恢复从节点同步服务&#xff0c;发现了如下报错&#xff1a; mysql> show slave status\G; *************************** 1. row *****…...

【论文阅读】03-Diffusion Models and Representation Learning: A Survey

Abstract&#xff08;摘要&#xff09; 扩散模型是各种视觉任务中流行的生成建模方法&#xff0c;引起了人们的广泛关注它们可以被认为是 自监督学习方法【通过数据本身的结构和特征来训练模型&#xff0c;而不是依赖外部标签】 的一个独特实例&#xff0c;因为它们独立于标签注…...

【深度学习】RNN的简单实现

目录 1.RNNCell 2.RNN 3.RNN_Embedding 1.RNNCell import torchinput_size 4 hidden_size 4 batch_size 1idx2char [e, h, l, o] x_data [1, 0, 2, 2, 3] # 输入&#xff1a;hello y_data [3, 1, 2, 3, 2] # 期待&#xff1a;ohlol# 独热向量 one_hot_lookup [[1, …...

每次请求时,检查 JWT Token的有效期并决定是否需要刷新

为了在每次请求时检查 access_token 的有效期&#xff0c;并在过期时自动刷新&#xff0c;可以通过以下步骤实现&#xff1a; 1. 解析 JWT Token 获取过期时间 JWT token 的有效期是编码在 token 本身的&#xff0c;你可以通过解析 token 来获取它的到期时间。JWT token 是由…...

AI大模型开发架构设计(13)——LLM大模型的向量数据库应用实战

文章目录 LLM大模型的向量数据库应用实战1 大模型的局限性大模型的4点局限性大模型的4点局限性的改进实践方法 2 向量数据库使用场景以及改建大模型向量数据库向量数据库选型知识库文档检索增强(Retrieval Augmented Generation) 3 向量数据库应用技术架构剖析向量数据库应用技…...

WPF中Grid、StackPanel、Canvas、WrapPanel常用属性

Grid常用属性 Grid 控件在 WPF 中非常强大&#xff0c;它提供了多种属性来定义行和列的布局。以下是一些常用的 Grid 属性&#xff1a; RowDefinitions 和 ColumnDefinitions&#xff1a; Grid 控件使用 RowDefinitions 和 ColumnDefinitions 来定义行和列的集合。每个 RowDef…...

【芙丽芳丝净润洗面霜和雅漾舒护活泉喷雾

1. 洁面产品&#xff1a; - 芙丽芳丝净润洗面霜&#xff1a;氨基酸洗面奶的经典产品&#xff0c;成分温和&#xff0c;不含酒精、香料等刺激性成分。泡沫丰富细腻&#xff0c;能够有效清洁皮肤的同时&#xff0c;不会过度剥夺皮肤的油脂&#xff0c;洗后皮肤不紧绷&#xff0c;…...

ubuntu更新Cmake

CMake 先验知识创建软链接如何删除符号链接如何找出失效链接并将其删除PATH 优先级查看当前CMake命令的位置 高版本 CMake 安装参考 先验知识 创建软链接 ln -s <path to the file/folder to be linked> <the path of the link to be created>ln 是链接命令&…...

CMOS晶体管的串联与并联

CMOS晶体管的串联与并联 前言 对于mos管的串联和并联&#xff0c;一直没有整明白&#xff0c;特别是设计到EDA软件中&#xff0c;关于MOS的M和F参数&#xff0c;就更困惑了&#xff0c;今天看了许多资料以及在EDA软件上验证了电路结构与版图的对应关系&#xff0c;总算有点收…...

从IT高管到看门大爷:53岁我的职场华丽转身

该文讲述了一位1971年出生的男士&#xff0c;在53岁时因日企撤资而失业。他曾是IT技术员&#xff0c;后晋升为IT高管兼工会主席&#xff0c;但失业后数百份简历石沉大海&#xff0c;面试也因年龄被取消。他意识到年龄是求职的障碍&#xff0c;开始调整心态&#xff0c;降低期望…...

Redis入门到精通(三):入门Redis看这一篇就够了

文章目录 Redis分布式锁的实现原理Redis实现分布式锁如何合理的控制锁的有效时常&#xff1f;**redisson实现的分布式锁**redisson实现的如何保证主从一致性 Redis的集群方案1.主从复制主从数据的同步原理全量同步增量同步 2.哨兵模式Redis的集群脑裂是什么&#xff1f;3.分片集…...

IP基本原理

IP的定义 当前唯一的网络层协议标准定义数据网络层的封装方式、编址方法 MTU 最大传输单元接口收发数据支持的单个包的最大长度不同二层链路类型的接口的MTU不一致。以太网接口默认MTU1500Byte。PPPoE接口默认MTU1480Byte。 IP头部封装格式 IP 头部长度不固定&#xff0c;2…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要&#xff1a; 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式&#xff08;自动驾驶、人工驾驶、远程驾驶、主动安全&#xff09;&#xff0c;并通过实时消息推送更新车…...