安装与基本配置

npm install -g @vue/cli        安装脚手架
vue -V      查看是否安装脚手架
vue create shop-client         创建名为 shop-client 的项目
cd shop-client       进入到 shop-client 文件夹下
npm run serve      本地运行npm i -g serve      安装静态资源服务
npm run build       打包项目
serve dist  -p 5000     在端口5000上运行打包后的项目(打包后的项目必须用静态资源服务运行)

Eslint配置

1、package.json : 全局规则配置文件

 "eslintConfig": {... ..."rules": {'no-new': 'off'}},

2、vue.config.js:

module.exports = {lintOnSave : 'warning',    // 只输出提示信息,项目正常运行// lintOnSave : false,    //关闭 Eslint 检查
}

让vscode提示@开头的模块路径引入

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

关于配置文件:

package.json 是npm的配置文件
vue.config.js 是webpack的配置文件
jsconfig.json 是让编辑器识别的配置文件

引入公共样式

公共样式文件放在项目目录下的public / css /reset.css
public 文件夹与 src 文件夹同级
在 index.html 文件中引入 reset.css ,引入文件的路径要写 / 不能写 . /:
<link type="text/css" rel="styleSheet" href="/css/reset.css" />

引入less预编译器

npm i -D less less-loader

引入vue-router、vuex

npm install -S vue-router

1、router/index.js:
路由器对象模块

import Vue from 'vue'
import VueRouter from 'vue-router'
//引入路由文件
import routes from './router'//声明使用vue插件
Vue.use(VueRouter)//向外暴露一个路由器插件
const router = new VueRouter({mode : 'history',//配置应用中的所有路由routes
})export default router

2、router/router.js:

import Home from '@/pages/Home'export default [{path:'/',component : Home},{path:'/home',component : Home},
]

3、router/main.js:

import Vue from 'vue'
import App from './App.vue'
//引入路由器
import router from './router'Vue.config.productionTip = falsenew Vue({render: h => h(App),//配置路由器router
}).$mount('#app')

Header组件

面试问题: 如何指定params参数可传可不传?
path: ‘/search/:keyword?’
面试问题: 指定params参数时可不可以用path和params配置的组合?
不可以用path和params配置的组合
只能用name和params配置的组件
面试问题: 如果指定name与params配置, 但params中数据是一个"", 地址栏路径有问题
如果有参数数据, 指定params
如果没有参数数据, 不指定params
面试问题: 路由组件能不能传递props数据?
可以: 可以将query或且params参数映射/转换成props传递给路由组件对象
实现: props: (route) => ({
keyword1: route.params.keyword,
keyword2: route.query.keyword
})

Footer组件

如何控制footer/header组件在部分路由组件上不显示?
利用路由的meta配置:

  meta: {isHideFooter: true, // 标识footer是否隐藏}
< Footer v-if="!$route.meta.isHideFooter"/>

Home组件

将多个组件共用的组件,设置为全局组件

main.js:import Vue from 'vue'
import App from './App.vue'
import router from './router'
//引入这个全局组件
import TypeNav from '@/components/TypeNav'Vue.config.productionTip = false
//注册为全局组件
Vue.component('TypeNav',TypeNav)new Vue({render: h => h(App),router
}).$mount('#app')

API 接口相关

对axios请求二次封装

npm install -S axios nprogress

需要的功能:

  1. 配置通用的基础路径和超时
  2. 显示请求进度条
  3. 成功返回的数据不再是response, 而直接是响应体数据response.data
  4. 统一处理请求错误, 具体请求也可以选择处理或不处理
api/ajax.js:import axios from 'axios'
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'//创建一个新的axios的实例
const ajax = axios.create({baseURL : '/api',timeout : 20000
})//不显示右上角的旋转进度条
NProgress.configure({ showSpinner: false });//添加请求拦截器
ajax.interceptors.request.use((config) => {//显示进度条NProgress.start();return config
})//添加响应拦截器
ajax.interceptors.request.use(response => {//关闭进度条NProgress.done();return response.data},error => {//关闭进度条NProgress.done();alert('请求出错:' + error.message || '位置错误')// return new Promise(() => {})  //中断Promise链,具体请求不处理return Promise.reject(error)   // 返回失败的Promise,具体请求可以处理},
)export default ajax

封装接口请求函数

api/index.js:import ajax from './ajax.js'//首页三级分类
export default reqBaseCategoryList = () => ajax('/product/getBaseCategoryList')

配置代理服务器

vue.config.js:module.exports = {lintOnSave : 'warning',devServer: {proxy: {'/api': {target: 'http://182.92.128.115/',changeOrigin: true}}}
}

vuex

npm install -S vuex

store/index.js:import Vue from 'vue'
import Vuex from 'vuex'
import modules from './modules'Vue.use(Vuex)export default new Vuex.Store({modules
})
store/modules/index.js:import home from './home'export default {home
}
store/modules/home.js:const state = {}
const mutations = {}
const actions = {}
const getters = {}
export default {state,getters,mutations,actions
}
main.js:import store from './store'new Vue({store, // 注册vuex的store对象  ==> 所有组件对象都有一个$store属性
})

TypeNav 组件

功能:
1、组件与vuex交互
2、控制2/3级分类列表的显示与隐藏
3、点击分类项用router-link跳转到搜索,并携带query参数
4、对高频触发的事件进行函数节流处理
npm i --save lodash

import _ from 'lodash'  引入全部的lodash

使用时 _.throttle()
5、对lodash库实现按需引入, 减小打包文件

import throttle from 'lodash / throttle'  只引入throttle 函数

<input type="text" placeholder="口罩限时1元秒" v-model="keywordPrefix" @input="throttleInput"/>
--------------------------------------------------------------------//变更input发送请求async onTimeKeyWords(event){this.keywordPrefix = event

shop-client 电商项目详解相关推荐

  1. hcj小兔鲜电商项目详解(一)

    1项目目录 2项目代码准备 seo三大标签: title description keywords base.css /* 清除默认样式的代码 */ /* 去除常见标签默认的 margin 和 pad ...

  2. 电商库存详解:三层(销售层、调度层、仓库层)来看库存设计

    库存管理作为供应链管理的重要组成部分,不论对于电商企业还是实体企业都至关重要.库存体系的构建异常复杂,目前没见到特别满意的库存体系介绍.笔者有幸参与多系统的搭建,特从电商供应链产品体系总结了库存体系, ...

  3. Python 爬虫学习笔记(十(2))scrapy爬取图书电商实战详解

    目标是爬取某一系列图书的信息,例如名称.价格.图片等. 一.创建scrapy项目 在PyCharm终端依次输入: scrapy startproject dangdang cd dangdang\da ...

  4. K8S 部署电商项目

    Ingress 和 Ingress Controller 概述 在 k8s 中为什么会有 service 这个概念? Pod 漂移问题 Kubernetes 具有强大的副本控制能力,能保证在任意副本( ...

  5. 暑期学习与“懒人电商”项目经验总结

    该文章作为本人暑期学习和实战的经验总结,既是笔记也是自己踩过的坑,分享给大家,如有错误请各位大佬指正. 一.HTML与CSS的知识点总结 (1)  autocomplete="off&quo ...

  6. 电商项目——商品服务-API-属性分组——第十一章——上篇

    电商项目--初识电商--第一章--上篇 电商项目--分布式基础概念和电商项目微服务架构图,划分图的详解--第二章--上篇 电商项目--电商项目的虚拟机环境搭建_VirtualBox,Vagrant-- ...

  7. 尚硅谷2020微服务分布式电商项目《谷粒商城》学习笔记

    尚硅谷2020微服务分布式电商项目<谷粒商城> 项目简介 资料 百度云 链接:https://pan.baidu.com/s/1eGCTi6pLtKbDCwBs-zCOzQ 提取码:1pm ...

  8. 谷粒商城电商项目 分布式高级篇

    更多视频,JAVA收徒 QQ:987115885谷粒商城电商项目 分布式高级篇102.全文检索-ElasticSearch-简介.mp4103.全文检索-ElasticSearch-Docker安装E ...

  9. 电商项目构建springcloud

    0.学习目标 了解电商行业 了解乐优商城项目结构 能独立搭建项目基本框架 能参考使用ES6的新语法 1.了解电商行业 学习电商项目,自然要先了解这个行业,所以我们首先来聊聊电商行业 1.1.项目分类 ...

最新文章

  1. 北京内推 | 美团用户平台NLP中心招聘图学习(GNN)方向实习生
  2. 实现quartz定时器及quartz定时器原理介绍
  3. Python参考手册----第一章: Python简介(四)
  4. Java 获取当前项目的类路径
  5. 第 3-3 课:泛型和迭代器 + 面试题
  6. 新手如何开始学习3D建模?美术基础重不重要?
  7. 将一个二维数组合并成一个一维数组
  8. php5+init,PHP mysqli_stmt_init() 函数
  9. 关于Boost库的split函数在不同的编译器下的使用
  10. 找出数组中第二大的值
  11. 用DISKGEN恢复硬盘数据
  12. 用matlab指数传递函数nyquist,用MATLAB制Nyquist图.ppt
  13. 卡诺图化简 之 和之积形式 与 积之和形式
  14. 信息系统项目管理师复习方法学习计划
  15. 华为路由器交换机常用命令(随时补充更新)
  16. 动态规划石子排序java_动态规划之石子归并
  17. 创建虚拟机、安装centos6,centos7系统,图形化界面
  18. APP加密,ios代码混淆工具,虚拟化技术 适用于移动应用程序的虚拟化加密软件
  19. 唇语识别!AI 领域的下一个万亿市场?
  20. SpringBoot+Mybatis实现图片按用户上传存储和获取用户图片功能

热门文章

  1. python写出下列程序的功能_10.下列Python程序的运行结果是( )。
  2. ORB-SLAM3中的双目稀疏立体匹配
  3. P(AB)与P(B|A)区别!!!!!!
  4. 机器学习模型的误差分析-逼近误差、泛化误差、优化误差
  5. AutoCAD+坐标系变换
  6. iOS 8最佳适配——被点赞的百度输入法
  7. 会声会影2023导出视频的清晰度一般选哪个 导出视频怎么保持清晰度
  8. html如何做好看的图片效果,CSS使用图片美化的漂亮菜单效果
  9. WorkManager 流程分析和源码解析 | 开发者说·DTalk
  10. 爱上经典之罗大佑《鹿港小镇》