黑马程序员前端 Vue3 小兔鲜电商项目——(一)初始化项目

本文主要是介绍黑马程序员前端 Vue3 小兔鲜电商项目——(一)初始化项目,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 了解 Vue3
    • 初始化项目
      • 创建项目
      • 启动项目
      • 添加目录
      • Git 管理项目
      • jsconfig.json 配置别名路径
    • ElementPlus 引入
      • 安装
      • 配置按需导入
      • 测试组件
    • 定制 elementPlus 主题
      • 安装sass
      • 准备定制化的样式文件
      • 自动导入配置
    • Axios 安装并简单封装
      • 安装 Axios
      • 基础配置
      • 封装请求函数并测试
    • 路由整体设计
      • 一级路由
        • 首页
        • 登录页
      • 二级路由
        • Home 页
        • 分类页
    • 静态资源引入
    • scss变量自动导入

了解 Vue3

Vue3是Vue.js最新的主要版本,它已经于2020年9月18日发布。它提供了许多新功能和性能改进,这些改进使得Vue更易于使用和更具可扩展性。

以下是Vue3的一些主要特性:

  1. 更快的渲染:Vue3使用重写的响应式系统,它使用Proxy对象来解决Vue2中的性能瓶颈问题。这使得Vue3的渲染速度比Vue2快许多倍。

  2. 更小的包:Vue3采用了Tree shaking的技术,只打包用到的模块,从而减少了Vue的文件大小。

  3. 更好的TypeScript支持:Vue3完全支持TypeScript,并提供了更好的类型推断和更智能的代码补全。

  4. 新的组合式API:Vue3提供了一组新的API,称为“组合式API”,它允许开发人员更好地组织和复用组件逻辑。这些API与Vue2中的Options API不同,使得代码更整洁且更易于维护。

  5. 更好的可扩展性:Vue3使用了模块化架构,使得开发人员可以更方便地扩展Vue。这使得Vue更易于集成到现有的应用程序中,并使得Vue更好地支持团队协作。

总之,Vue3是一个更快、更小、更易于扩展和更易于使用的Vue版本。如果您正在使用Vue,那么Vue3绝对值得一试。

初始化项目

创建项目

本地目录下,打开 cmd,在终端上运行命令创建一个 Vue3 项目,并选择 Router、Pinia、ESLint 配置:

npm init vue@latest

image-20230620180321472

使用 VSCode IDE 打开项目,如果不会安装,可以查看文章 Visual Studio Code 下载安装教程(含必备插件)进行安装:

image-20230620181046312

启动项目

在终端运行命令启动项目:

npm install
npm run dev

image-20230620181812246

访问链接:http://127.0.0.1:5173/

image-20230620181706317

添加目录

在 src 目录下添加文件夹用于区分指定文件:

image-20230620182339851

Git 管理项目

  1. 创建远程仓库 vue-rabbit:

    image-20230620182858727

  2. 在本地终端执行以下命令:

    git init # git 初始化
    git remote add origin git@github.com:ShiJieCloud/vue-rabbit.git # 添加远程仓库地址
    git branch -M main # 切换分支
    git add . # 添加文件
    git commit -m "init" # 提交
    git push origin main # 推送远程仓库
    

    image-20230620183726043

jsconfig.json 配置别名路径

在编写代码的过程中,一旦输入 @/,VSCode 会立刻联想出 src 下的所有子目录和文件,统一文件路径访问不容易出错:

image-20230620185050682

配置别名路径可以在写代码时联想提示路径:

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

ElementPlus 引入

Element-plus 官网:https://element-plus.org/

安装

在终端执行命令,选择 npm 的方式进行安装:

npm install element-plus --save

image-20230620185739098

配置按需导入

首先我们需要安装 unplugin-vue-componentsunplugin-auto-import 这两款插件才能实现按需导入。

  1. 安装自动导入插件

    npm install -D unplugin-vue-components unplugin-auto-import
    

    image-20230620192550607

  2. 把下列代码插入到 vite.config.ts 配置文件中,即可实现自动按需导入。

// vite.config.ts
import { defineConfig } from 'vite'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'export default defineConfig({// ...plugins: [// ...AutoImport({resolvers: [ElementPlusResolver()],}),Components({resolvers: [ElementPlusResolver()],}),],
})

测试组件

修改 Vue.app 中的代码:

<script setup></script><template><el-button type="primary">Primary</el-button>
</template>

启动项目,访问:http://127.0.0.1:5173/

image-20230620193053277

定制 elementPlus 主题

小兔鲜主题色和 elementPlus 默认的主题色存在冲突,通过定制主题让 elementPlus 的主题色和小兔鲜项目保持一致。采用 Scss 变量替换方案定制主题。

安装sass

基于vite的项目默认不支持css预处理器,需要开发者单独安装

npm install sass -D

准备定制化的样式文件

新建文件 styles/element/index.scss

/* 只需要重写你需要的即可 */
@forward 'element-plus/theme-chalk/src/common/var.scss' with ($colors: ('primary': (// 主色'base': #27ba9b,),'success': (// 成功色'base': #1dc779,),'warning': (// 警告色'base': #ffb302,),'danger': (// 危险色'base': #e26237,),'error': (// 错误色'base': #cf4444,),)
)

自动导入配置

这里自动导入需要深入到 elementPlus 的组件中,按照官方的配置文档来:

  1. 自动导入定制化样式文件进行样式覆盖
  2. 按需定制主题配置 (需要安装 unplugin-element-plus)
export default defineConfig({plugins: [vue(),AutoImport({resolvers: [ElementPlusResolver()],}),Components({// 1.配置 elementPlus 采用 sass 样式配色系统resolvers: [ElementPlusResolver({ importStyle: "sass" })],}),],resolve: {alias: {'@': fileURLToPath(new URL('./src', import.meta.url))}},css: {preprocessorOptions: {scss: {// 2.自动导入定制化样式文件进行样式覆盖additionalData: `@use "@/styles/element/index.scss" as *;`,}}}
})

Axios 安装并简单封装

安装 Axios

在终端执行命令安装 Axios:

npm install axios

基础配置

官方文档地址:https://axios-http.com/zh/docs/intro

基础配置通常包括:

  1. 实例化:baseURL + timeout
  2. 拦截器:携带 token、401 拦截等

在 utils 包下创建一个 http.js 文件,添加以下内容:

import axios from 'axios'// 创建axios实例
const http = axios.create({baseURL: 'http://pcapi-xiaotuxian-front-devtest.itheima.net',timeout: 5000
})// axios请求拦截器
http.interceptors.request.use(config => {return config
}, e => Promise.reject(e))// axios响应式拦截器
http.interceptors.response.use(res => res.data, e => {return Promise.reject(e)
})export default http

封装请求函数并测试

在 apis 目录下创建 testAPI.js 文件:

import http from '@/utils/http'export function getCategoryAPI () {return http({url: 'home/category/head'})
}

在 main.js 中调用方法测试:

//测试接口函数
import { getCategoryAPI } from './apis/testAPI'
getCategoryAPI().then(res=>{console.log(res);
})

启动项目,打开控制台:

image-20230620202008242

路由整体设计

路由设计原则:找页面的切换方式,如果是整体切换,则为一级路由,如果是在一级路由的内部进行的内容切换,则为二级路由。

一级路由

首页
  1. 在 src/views/ 目录下创建 Layout 目录,再在该目录下新建 index.vue 文件:

    image-20230620203640930

  2. 在 index.vue 文件中添加内容:

    <template><div>我是首页</div> 
    </template>
    
  3. 在 src/router/index.js 文件中添加:

    import Layout from '@/views/Layout/index.vue'const router = createRouter({history: createWebHistory(import.meta.env.BASE_URL),// path 和 component 对应关系的位置routes: [{path: '/',component: Layout}]
    })export default router
    
  4. 在 app.vue 中添加一级路由出口组件:

    <template><!--一级路由出口组件--><RouterView/>
    </template>
    
  5. 启动项目,访问页面:http://127.0.0.1:5173/

    image-20230620204112475

登录页
  1. 在 src/views/ 目录下创建 Login 目录,再在该目录下新建 index.vue 文件:

    image-20230620204203295

  2. 在 index.vue 文件中添加内容:

    <template><div>我是登录页</div> 
    </template>
    
  3. 在 src/router/index.js 文件中添加:

    import Login from '@/views/Login/index.vue'const router = createRouter({history: createWebHistory(import.meta.env.BASE_URL),// path 和 component 对应关系的位置routes: [{path: '/login',component: Login}]
    })export default router
    
  4. 在 App.vue 中添加一级路由出口组件:

    <template><!--一级路由出口组件--><RouterView/>
    </template>
    
  5. 启动项目,访问页面:http://127.0.0.1:5173/login

    image-20230620204329698

二级路由

Home 页
  1. 在 src/views/ 目录下创建 Home 目录,再在该目录下新建 index.vue 文件:

    image-20230620205257804

  2. 在 index.vue 文件中添加内容:

    <template>我是 Home 页
    </template>
    
  3. 在 src/router/index.js 文件中添加:

    import Layout from '@/views/Layout/index.vue'
    import Home from '@/views/Home/index.vue'const router = createRouter({history: createWebHistory(import.meta.env.BASE_URL),// 因为 Home 页是首页下的二级路由,所以配置在首页路径下routes: [{path: '/',component: Layout,children: [{// Home 页默认在首页显示,所以 path 为空path: '',component: Home,}]}]
    })export default router
    
  4. 在 Layout/index.vue 中添加二级路由出口组件:

    <template><div>我是首页<!--二级路由出口组件--><RouterView/></div> 
    </template>
    
  5. 启动项目,访问页面:http://127.0.0.1:5173/

    image-20230620205810917

分类页
  1. 在 src/views/ 目录下创建 Home 目录,再在该目录下新建 index.vue 文件:

    image-20230620205925349

  2. 在 index.vue 文件中添加内容:

    <template>我是分类页
    </template>
    
  3. 在 src/router/index.js 文件中添加:

    import Layout from '@/views/Layout/index.vue'
    import Home from '@/views/Home/index.vue'
    import Category from '@/views/Category/index.vue'const router = createRouter({history: createWebHistory(import.meta.env.BASE_URL),// 因为 Home 页是首页下的二级路由,所以配置在首页路径下routes: [{path: '/',component: Layout,children: [{// Home 页默认在首页显示,所以二级路由的 path 置空path: '',component: Home,},{path: 'category',component: Category,}]}]
    })export default router
    
  4. 在 Layout/index.vue 中添加二级路由出口组件:

    <template><div>我是首页<!--二级路由出口组件--><RouterView/></div> 
    </template>
    
  5. 启动项目,访问页面:http://127.0.0.1:5173/category

    image-20230620210011929

静态资源引入

  1. 图片资源:把 images 文件夹放到 assets 目录下;

  2. 样式资源:把 common.scss 文件放到 styles 目录下;

    在 main.js 中导入初始化样式文件:

    // 引入common.scss
    import '@/styles/common.scss'
    

scss变量自动导入

在项目里一些组件共享的色值会以 scss 变量的方式统一放到一个名为 var.scss 的文件中,正常组件中使用,需要先导入 scss 文件,再使用内部的变量,比较繁琐,自动导入可以免去手动导入的步骤,直接使用内部的变量。自动导入配置步骤如下:

  1. 新增一个 var.scss 文件,存入色值变量:

    $xtxColor: #27ba9b;
    $helpColor: #e26237;
    $sucColor: #1dc779;
    $warnColor: #ffb302;
    $priceColor: #cf4444;
    
  2. 通过 vite.config.js 配置自动导入文件:

    css: {preprocessorOptions: {scss: {// 自动导入scss文件additionalData: `@use "@/styles/element/index.scss" as *;@use "@/styles/var.scss" as *;`,}}
    }
    

这篇关于黑马程序员前端 Vue3 小兔鲜电商项目——(一)初始化项目的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/373578

相关文章

vite搭建vue3项目的搭建步骤

《vite搭建vue3项目的搭建步骤》本文主要介绍了vite搭建vue3项目的搭建步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1.确保Nodejs环境2.使用vite-cli工具3.进入项目安装依赖1.确保Nodejs环境

Nginx搭建前端本地预览环境的完整步骤教学

《Nginx搭建前端本地预览环境的完整步骤教学》这篇文章主要为大家详细介绍了Nginx搭建前端本地预览环境的完整步骤教学,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录项目目录结构核心配置文件:nginx.conf脚本化操作:nginx.shnpm 脚本集成总结:对前端的意义很多

前端缓存策略的自解方案全解析

《前端缓存策略的自解方案全解析》缓存从来都是前端的一个痛点,很多前端搞不清楚缓存到底是何物,:本文主要介绍前端缓存的自解方案,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、为什么“清缓存”成了技术圈的梗二、先给缓存“把个脉”:浏览器到底缓存了谁?三、设计思路:把“发版”做成“自愈”四、代码

通过React实现页面的无限滚动效果

《通过React实现页面的无限滚动效果》今天我们来聊聊无限滚动这个现代Web开发中不可或缺的技术,无论你是刷微博、逛知乎还是看脚本,无限滚动都已经渗透到我们日常的浏览体验中,那么,如何优雅地实现它呢?... 目录1. 早期的解决方案2. 交叉观察者:IntersectionObserver2.1 Inter

Vue3视频播放组件 vue3-video-play使用方式

《Vue3视频播放组件vue3-video-play使用方式》vue3-video-play是Vue3的视频播放组件,基于原生video标签开发,支持MP4和HLS流,提供全局/局部引入方式,可监听... 目录一、安装二、全局引入三、局部引入四、基本使用五、事件监听六、播放 HLS 流七、更多功能总结在 v

idea+spring boot创建项目的搭建全过程

《idea+springboot创建项目的搭建全过程》SpringBoot是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目,:本文主要介绍idea+springb... 目录一.idea四种搭建方式1.Javaidea命名规范2JavaWebTomcat的安装一.明确tomcat

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②

vue监听属性watch的用法及使用场景详解

《vue监听属性watch的用法及使用场景详解》watch是vue中常用的监听器,它主要用于侦听数据的变化,在数据发生变化的时候执行一些操作,:本文主要介绍vue监听属性watch的用法及使用场景... 目录1. 监听属性 watch2. 常规用法3. 监听对象和route变化4. 使用场景附Watch 的

前端导出Excel文件出现乱码或文件损坏问题的解决办法

《前端导出Excel文件出现乱码或文件损坏问题的解决办法》在现代网页应用程序中,前端有时需要与后端进行数据交互,包括下载文件,:本文主要介绍前端导出Excel文件出现乱码或文件损坏问题的解决办法,... 目录1. 检查后端返回的数据格式2. 前端正确处理二进制数据方案 1:直接下载(推荐)方案 2:手动构造