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

这篇具有很好参考价值的文章主要介绍了黑马程序员前端 Vue3 小兔鲜电商项目——(一)初始化项目。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

了解 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

vue电商项目,Vue3,# 小兔鲜电商项目,前端,vue.js,javascript

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

vue电商项目,Vue3,# 小兔鲜电商项目,前端,vue.js,javascript

启动项目

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

npm install
npm run dev

vue电商项目,Vue3,# 小兔鲜电商项目,前端,vue.js,javascript

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

vue电商项目,Vue3,# 小兔鲜电商项目,前端,vue.js,javascript

添加目录

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

vue电商项目,Vue3,# 小兔鲜电商项目,前端,vue.js,javascript

Git 管理项目

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

    vue电商项目,Vue3,# 小兔鲜电商项目,前端,vue.js,javascript

  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 # 推送远程仓库
    

    vue电商项目,Vue3,# 小兔鲜电商项目,前端,vue.js,javascript

jsconfig.json 配置别名路径

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

vue电商项目,Vue3,# 小兔鲜电商项目,前端,vue.js,javascript

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

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

ElementPlus 引入

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

安装

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

npm install element-plus --save

vue电商项目,Vue3,# 小兔鲜电商项目,前端,vue.js,javascript

配置按需导入

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

  1. 安装自动导入插件

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

    vue电商项目,Vue3,# 小兔鲜电商项目,前端,vue.js,javascript

  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/

vue电商项目,Vue3,# 小兔鲜电商项目,前端,vue.js,javascript

定制 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);
})

启动项目,打开控制台:

vue电商项目,Vue3,# 小兔鲜电商项目,前端,vue.js,javascript

路由整体设计

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

一级路由

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

    vue电商项目,Vue3,# 小兔鲜电商项目,前端,vue.js,javascript

  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/

    vue电商项目,Vue3,# 小兔鲜电商项目,前端,vue.js,javascript

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

    vue电商项目,Vue3,# 小兔鲜电商项目,前端,vue.js,javascript

  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

    vue电商项目,Vue3,# 小兔鲜电商项目,前端,vue.js,javascript

二级路由

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

    vue电商项目,Vue3,# 小兔鲜电商项目,前端,vue.js,javascript

  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/

    vue电商项目,Vue3,# 小兔鲜电商项目,前端,vue.js,javascript

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

    vue电商项目,Vue3,# 小兔鲜电商项目,前端,vue.js,javascript

  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

    vue电商项目,Vue3,# 小兔鲜电商项目,前端,vue.js,javascript

静态资源引入

  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 配置自动导入文件:文章来源地址https://www.toymoban.com/news/detail-612279.html

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

到了这里,关于黑马程序员前端 Vue3 小兔鲜电商项目——(一)初始化项目的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【前端Vue】Vue3+Pinia小兔鲜电商项目第1篇:认识Vue3,1. Vue3组合式API体验【附代码文档】

    通过 Counter 案例 体验Vue3新引入的组合式API 特点: 代码量变少 分散式维护变成集中式维护 ![image.png]( create-vue是Vue官方新的脚手架工具,底层切换到了 vite (下一代前端工具链),为开发提供极速响应 ![image.png]( 前置条件 - 已安装16.0或更高版本的Node.js 执行如下命令,这一指

    2024年03月17日
    浏览(54)
  • 【前端Vue】Vue3+Pinia小兔鲜电商项目第2篇:什么是pinia,1. 创建空Vue项目【附代码文档】

    Pinia 是 Vue 的专属状态管理库,可以实现跨组件或页面共享状态,是 vuex 状态管理工具的替代品,和 Vuex相比,具备以下优势 提供更加简单的API (去掉了 mutation ) 提供符合组合式API风格的API (和 Vue3 新语法统一) 去掉了modules的概念,每一个store都是一个独立的模块 搭配

    2024年03月21日
    浏览(45)
  • 【前端Vue】Vue3+Pinia小兔鲜电商项目第4篇:静态结构搭建和路由配置,1. 准备分类组件【附代码文档】

    Vue3+ElementPlus+Pinia开发小兔鲜电商项目完整教程(附代码资料)主要内容讲述:认识Vue3,使用create-vue搭建Vue3项目1. Vue3组合式API体验,2. Vue3更多的优势,1. 认识create-vue,2. 使用create-vue创建项目,1. setup选项的写法和执行时机,2. setup中写代码的特点。什么是pinia,创建空Vue项目并安装

    2024年04月11日
    浏览(46)
  • 购物车功能实现(小兔鲜儿)【Vue3】

    购物车业务逻辑梳理拆解 整个购物车的实现分为两个大分支, 本地购物车操作和接口购物车操作 由于购物车数据的特殊性, 采取Pinia管理购物车列表数据并添加持久化缓存 本地购物车 - 加入购物车实现 添加购物车 基础思想:如果已经添加过相同的商品,就在其数量count上加一

    2024年02月15日
    浏览(44)
  • 黑马程序员前端学习接口变更

    VUE 刘老师离职了,VUE的接口失效的,一律换为黑马官方接口 axios.defaults.baseURL = \\\'https://www.escook.cn\\\' 换成 axios.defaults.baseURL = \\\'https://applet-base-api-t.itheima.net\\\'    微信小程序 https://api-ugo-web.itheima.net https://www.uinav.com 刘老师博客简介为不再讲课的程序员,但他真的是一位不错的老师

    2024年02月09日
    浏览(51)
  • 登录页的具体实现 (小兔鲜儿)【Vue3】

    整体认识 登录页面的主要功能就是 表单校验和登录登出业务 准备模板 配置路由跳转 为什么需要校验 作用:前端提前校验可以 省去一些错误的请求提交 ,为后端节省接口压力 表单如何进行校验 ElementPlus表单组件内置了表单校验功能,只需要 按照组件要求配置必要参数 即

    2024年02月15日
    浏览(52)
  • CSS笔记(黑马程序员pink老师前端)定位

    定位可以让盒子自由的在某个盒子内移动位置或者固定在屏幕中某个位置,并且可以压住其他盒子。 定位 = 定位模式 + 边偏移 定位模式 说明 static 静态定位,按标准流特性摆放,没有边偏移,很少用 relative 相对定位,相对自身原有位置移动,原有位置继续占有(不脱标) absolute 绝

    2024年02月09日
    浏览(52)
  • 小程序入门笔记(一) 黑马程序员前端微信小程序开发教程

    微信小程序基本介绍 小程序和普通网页有以下几点区别: 运行环境:小程序可以在手机的操作系统上直接运行,如微信、支付宝等;而普通网页需要在浏览器中打开才能运行。 开发技术:小程序采用前端技术进行开发,如HTML、CSS、JavaScript等;而普通网页也是使用类似的前

    2024年02月08日
    浏览(62)
  • CSS笔记(黑马程序员pink老师前端)浮动,清除浮动

    浮动可以改变标签的默认排列方式。浮动元素常与标准流的父元素搭配使用. 网页布局第一准则 :多个块级元素纵向排列找标准流,多个块级元素横向排列找浮动。 float属性用于创建浮动框,将其移动到一边,直到左边缘或右边缘触及包含块或另一个浮动框的边缘。 1.浮动元素

    2024年02月09日
    浏览(49)
  • 《JavaScript前端开发案例教程》课后习题及答案(黑马程序员编著)

    一、填空题 1.window.document.body可以简写为______。 2.console.log(alert(‘Hello’))在控制台的输出结果是______。 3.编辑器中“以UTF-8无BOM格式编码”中的BOM指的是______。 4.alert(‘测试’.length)的输出结果是______。 二、判断题 1.JavaScript是Java语言的脚本形式。( ) 2.JavaScript中的方法名不

    2024年02月09日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包