小兔鲜儿电商前台项目(一) —— 项目初始化

本文详细介绍了使用vue-cli创建电商前端项目的过程,包括项目初始化、目录结构调整、项目配置如src文件夹简写和eslint忽略设置。此外,文章还探讨了编程规范,如代码格式规范(ESlint & Prettier配合)、git提交规范(Commitizen、husky、commitlint等)。文章进一步讨论了vuex的扩展,如getters、modules和状态持久化,以及axios请求工具函数、路由设计、scss自动化导入、样式重置和其他插件(如nprogress)的使用。

一、创建项目

1. vue-cli 创建项目

  1. 打开控制台,输入 vue create 项目名 ,创建项目
    在这里插入图片描述

  2. 选择配置,然后回车
    在这里插入图片描述

  3. vue版本选择3
    在这里插入图片描述

  4. 路由是否使用history模式?选择 n
    如果项目中存在要求就使用history(即:y),但是一般还是推荐大家使用hash模式,毕竟history模式需要依赖运维
    在这里插入图片描述

  5. 选择一种CSS预处理类型,这个需要根据各个项目的要求使用那种css编译处理
    在这里插入图片描述

  6. eslint 风格,建议选择标准模式即可
    在这里插入图片描述

  7. 选择校验时机
    建议保存和修改时都进行检测
    在这里插入图片描述

  8. 配置文件的存放位置,一般存放在单独的文件中
    在这里插入图片描述

  9. 是否保存当前选择的配置项
    如果当前配置是经常用到的配置,建议选择y存储一下当前配置项。如果只是临时使用的话就不需要存储了
    在这里插入图片描述

  10. 等待安装完成
    在这里插入图片描述

  11. 安装完成
    在这里插入图片描述

2. 项目目录调整

2.1 初始项目目录

在这里插入图片描述

2.2 调整后的项目目录

在这里插入图片描述

2.3 vue3 中改变的文件

  1. router / index.js

    import {
         
          createRouter, createWebHashHistory } from 'vue-router'
    // 路由规则
    const routes = [
    ]
    
    // 创建路由实例
    const router = createRouter({
         
         
      // 使用hash路由模式
      history: createWebHashHistory(),
      routes
    })
    
    export default router
    
    
  2. store / index.js

    import {
         
          createStore } from 'vuex'
    
    // 创建仓库
    export default createStore({
         
         
      state: {
         
         
      },
      getters: {
         
         
      },
      mutations: {
         
         
      },
      actions: {
         
         
      },
      modules: {
         
         
      }
    })
    
  3. . main.js

    // 不再引入Vue构造函数,引入的是名为createApp的工厂函数,无需通过new调用
    import {
         
          createApp } from 'vue'
    // 引入根组件
    import App from './App.vue'
    // 引入路由实例
    import router from './router'
    // 引入仓库(vuex)实例
    import store from './store'
    // createApp(App):创建应用实例对象——app(类似于vue2中的vm,但app比vm更“轻”,即app没有vm那么多的方法属性等)
    const app = createApp(App)
    // 挂载
    app.mount('#app')
    

3. 项目配置

3.1 src文件夹简写,别名@的配置

  • 这个是针对项目进行配置的,如果vscode已经全局配置了,可以不进行配置
  • 新建 src / jsconfig.json
{
   
   
  "compilerOptions": {
   
   
      "baseUrl": "./",
          "paths": {
   
   
          "@/*": [
              "src/*"
          ]
      }
  },
  "exclude": [
      "node_modules",
      "dist"
  ]
}
  • 注意:配置后需要重启编辑器

3.2 忽略eslint校验

  • 新建 src / .eslintignore
/dist
/src/vender
  • eslint在做风格检查的时候忽略 dist 和 vender 不去检查

二、编程规范

1. 代码格式规范

通过 ESLint + Prettier + VSCode 配置 配合进行了处理。最终达到在保存代码时,自动规范化代码格式的目的

1.1 ESlint 和 Prettier 配合解决代码格式问题

  1. VSCode中安装prettier插件
  2. 新建prettier配置文件: .prettierrc
    注意:复制过去时,不能加注释!!!!
{
   
   
    // 不尾随分号
    "semi": false,
    // 使用单引号
    "singleQuote": true,
    // 多行逗号分割的语法中,最后一行不加逗号
    "trailingComma": "none"
  }
  1. 修改VSCode配置
    在这里插入图片描述
  2. 打开VSCode设置面板,不用选择或者搜索,找到如下代码,将4修改为2
    在这里插入图片描述
  3. 解决多个代码格式化工具之间的冲突
  • 在vscode中右键选择 “使用…格式化文档”,选择“prettier”
    在这里插入图片描述
    在这里插入图片描述
  1. 解决 ESLint 和 Prettier之间冲突问题
  • 打开 .eslintrc.js 在 rules 下新增 'space-before-function-paren': 'off'

2. git 提交规范

2.1 工具 —— Commitizen

约定式提交

当使用 commitizen 进行代码提交(git commit)时,commitizen 会提交你在提交时填写所有必需的提交字段!

  1. 全局安装commitizen
cnpm install -g commitizen
  1. 安装并配置 cz-customizable 插件

通过 cz-customizable 自定义提交规范

  • 使用 npm 下载 cz-customizable
cnpm i --save-dev  cz-customizable
  • 添加以下配置到 package.json 中
"config": {
   
   
    "commitizen": {
   
   
      "path": "node_modules/cz-customizable"
    }
  }
  • 项目根目录下创建.cz-config.js 自定义提示文件
module.exports = {
   
   
  // 可选类型
  types: [
    {
   
    value: 'feat', name: 'feat:     新功能' },
    {
   
    value: 'fix', name: 'fix:      修复' },
    {
   
    value: 'docs', name: 'docs:     文档变更' },
    {
   
    value: 'style', name: 'style:    代码格式(不影响代码运行的变动)' },
    {
   
   
      value: 'refactor',
      name: 'refactor: 重构(既不是增加feature,也不是修复bug)'
    },
    {
   
    value: 'perf', name: 'perf:     性能优化' },
    {
   
    value: 'test', name: 'test:     增加测试' },
    {
   
    value: 'chore', name: 'chore:    构建过程或辅助工具的变动' },
    {
   
    value: 'revert', name: 'revert:   回退'
小兔鲜儿电商项目个基于 Vue 3 的前端实战项目,涵盖了多个核心功能模块的实现。以下是对项目代码结构和功能的详细说明,并结合引用内容提供相关信息。 ### 项目结构概述 小兔鲜儿电商项目的代码通常按照 Vue 3 的标准项目结构组织,包括以下几个主要部分: 1. **组件**:如 `HomeCategory`、`GoodsItem` 等,用于展示商品分类和商品列表[^2]。 2. **Pinia 状态管理**:通过 Pinia 实现全局状态管理,例如 `useCategoryStore` 用于存储商品分类数据[^3]。 3. **API 请求**:使用异步方法获取后端数据,例如 `getSubCategoryAPI` 用于加载商品子分类数据[^2]。 4. **事件处理**:通过 Vue 3 的组合式 API (`script setup`) 实现交互逻辑,例如按钮点击事件 `addCount`[^4]。 以下是项目中几个关键文件的代码示例: --- ### 文件:`HomeProduct.vue` 该文件展示了商品分类页面的基本结构和功能。 ```vue <script setup> import { ref } from 'vue' import { getSubCategoryAPI } from '@/api/home.js' // 商品列表数据 const goodsList = ref([]) const reqData = ref({ page: 1, pageSize: 10 }) // 是否禁用加载更多 const disabled = ref(false) // 加载更多商品 const load = async () => { reqData.value.page += 1 const res = await getSubCategoryAPI(reqData.value) goodsList.value = [...goodsList.value, ...res.result.items] if (res.result.items.length === 0) { disabled.value = true } } </script> <template> <div class="home-product"> <div class="body" v-infinite-scroll="load" infinite-scroll-disabled="disabled"> <!-- 商品列表 --> <GoodsItem v-for="good in goodsList" :key="good.id" :good="good" /> </div> </div> </template> <style scoped> .home-product { padding: 20px; } </style> ``` --- ### 文件:`LayoutHeader.vue` 该文件实现了顶部导航栏的功能,包含商品分类和搜索框。 ```vue <script setup> import { useCategoryStore } from '@/stores/category.js' // 使用 Pinia 状态管理 const categoryStore = useCategoryStore() </script> <template> <header class="app-header"> <div class="container"> <h1 class="logo"> <RouterLink to="/">小兔</RouterLink> </h1> <ul class="app-header-nav"> <li class="home" v-for="item in categoryStore.categoryList" :key="item.id"> <RouterLink to="/">{{ item.name }}</RouterLink> </li> </ul> <div class="search"> <i class="iconfont icon-search"></i> <input type="text" placeholder="搜搜" /> </div> </div> </header> </template> <style scoped> .app-header { background-color: #fff; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); } </style> ``` --- ### 文件:`Counter.vue` 该文件展示了 Vue 3 中组合式 API 的基本用法。 ```vue <script setup> import { ref } from 'vue' const count = ref(0) const addCount = () => count.value++ </script> <template> <button @click="addCount"> {{ count }} </button> </template> <style scoped> button { padding: 10px 20px; font-size: 16px; cursor: pointer; } </style> ``` --- ### 如何获取完整源码? 由于小兔鲜儿电商项目为教学用途开发,其完整源码通常可以通过以下方式获取: 1. **官方课程资源**:如果该项目来源于某个在线课程,可以查看课程提供的配套资源下载链接[^1]。 2. **GitHub 仓库**:许多类似的 Vue 3 实战项目会开源到 GitHub,可以通过搜索关键词(如“Vue3 小兔鲜儿”)找到相关仓库。 3. **联系作者**:如果是私人项目,可以尝试联系开发者或课程讲师获取源码。 --- ### 注意事项 在实际开发中,需要确保项目依赖正确安装,并配置好环境变量(如 API 地址)。此外,建议参考官方文档学习 Vue 3 和 Pinia 的最新用法。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值