安装与基本配置

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. Linux下安装GCC5.3.0
  2. python event多线程回调
  3. OpenCV作图像处理和识别方面的编程时常用的基础语句积累
  4. 算法工程师如何改进豆瓣电影
  5. linux虚拟机如何加网卡,linux虚拟机添加新的网卡
  6. 云计算作为当前趋势 能带给你哪些好处?
  7. [css] 为什么说对opacity进行动画要比box-shadow进行动画性能更好呢?
  8. 高并发架构解决方案总结
  9. C语言之设计模式——单例模式
  10. 5.5 tensorflow2实现多项式回归与神经网络、未来一个月购买量预测——python实战
  11. 洛谷 3951 小凯的疑惑
  12. xheditor form java,xheditor多个实例,如何在后台取值
  13. 单相全桥逆变原理及仿真实验
  14. linux内核版本指什么意思,Linux的内核版本是怎么回事
  15. 如何从Windows 10注销其他用户
  16. 穷人与富人的差距:越有钱的人负债越高
  17. 一文搞懂FIFO深度计算
  18. sync.Map详解
  19. 使用imap接收网易邮箱的邮件
  20. 单容水箱液位pid控制实验报告_实验二(单容水箱液位PID控制实验)实验报告电子版2014...

热门文章

  1. 双目立体匹配之视差优化
  2. JS统计一个字符串中数字字符的个数。
  3. c++ string的构造函数
  4. Unity Application.wantsToQuit使用注意项
  5. crossdomain.xml的简单用法
  6. 2021年黄冈副高考试成绩查询,2021年黄冈中考成绩排名查询,黄冈中考个人成绩排名查询...
  7. 深度学习卷积神经网络学习小结2
  8. Centos7查看外网IP地址
  9. jsp和servlet的区别
  10. grep或zgrep的时候Binary file (standard input) matches 怎么解决?