- node_modules 文件夹:项目依赖的第三方包放在这里
- public文件夹:一般用于存放静态资源,放在public中的静态资源,webpack打包时会原封不动的打包到dist文件夹中
- src 中的 assets 文件夹:一般也是存放静态资源的(多个组件共用的静态资源),需要注意,assets文件夹中的静态资源在webpack打包时,会将其当作一个模块,打包到JS文件里面
1. 配置当项目运行成功时自动打开浏览器;
--- 在package.json 中启动项目命令后加上 --open
"scripts": {
"serve": "vue-cli-service serve --open",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint"
},
2. 关闭eslint语法检查;
3. 配置src文件夹的别名,当文件较多时,查找文件方便
---在项目根目录下创建 jsconfig.json文件,并配置 @ 代表src目录
- 安装 npm i swiper --save;
- 由于 ContainerList和Floor组件中都要用到轮播图,因此直接在入口文件引入 swiper.css;
- 编写swiper轮播图的容器,即HTML结构;
- new Swiper();
问题:轮播图中要等待结构动态渲染出来之后才能new Swiper;但是请求数据是异步的,因此直接将 new Swiper放到mounted钩子中有问题,应该等待请求的数据回来之后再new Swiper;
解决方案:使用watch监听bannerList的变化,当数据变化,就调用 $nextTick() ,在$nextTick()的回调中new Swiper;即在数据改变并且视图渲染后new Swiper();
Floor 组件中的每一层是动态获取的数据,请求的是mock的数据,返回一个数组,每个数组元素是一层floor;由于Floor组件是用在Home组件中的,因此请求数据要在Home组件中;
当从一个路由跳到另一个路由时,滚动条的位置不会发生改变,如果想要路由切换时滚动条滚到顶部,需要再vue-router中使用 scrollBehavior 配置;
需要判断用户的输入是否合法,非法则需要纠正:
- 获取用户的输入 * 1; 如果输入了字符串,则*1的结果是NAN;
- 如果输入的是整数,则 *1 就是本身;
- 如果输入的是负数,则 *1 < 1;
- 如果是小数,则取整;
点击加入购物车后跳转成功页,需要将加入购物车的商品传递过去,而商品是一个对象,不适合使用query或params参数进行传递,因此使用sessionStorage进行存储,当加入购物车时就把对应的商品存到sessionStorage中,然后再在成功页取出来;这样每次加入购物车时都会覆盖上一次的数据,并且关闭浏览器数据就消失;
使用uuid生成唯一的游客id(对于每个游客只生成一次),然后存储在localStorage中,在每次发请求时,都在请求头userTempId中带上这个uuid,用于标识身份。
- 用户输入账号密码点击登录后,如果登陆成功,服务器会返回用户的token,客户端拿到token后将token存储在localStorage中,并跳转到home页;
- 请求拦截器:在每个请求的头部加上token字段,值从localStorage中取(如果用户没有登录,localStorage中自然没有这个值,用户登录后就有)
- 在Home组件时向服务器发起请求,索要用户的数据,如果用户登录了token就会被传过去,获取对应的用户信息,然后保存到vuex中;
- 在页面中如果要使用用户数据,就从vuex中取;
使用到了qrcode插件,根据字符串生成二维码; 使用了Element UI 的弹窗;
使用 vue-lazyload 插件实现图片懒加载;
使用 vee-validate 插件进行表单验证,3版本配合vue2; 可以注册为全局组件,也可以在表单所在组件注册为局部组件
路由懒加载: 访问对应路由时,才加载相应的组件 component: ()=>import('./search/vue') import() 返回的是一个Promise;当访问路由时,才会调用箭头函数,加载组件
- 执行 npm run build 打包项目后,会在js目录下生成js文件和map文件;由于打包后的js代码都是压缩和加密的,如果出现运行时错误,无法准确定位到错误位置;有了map文件就可以准确提示错误的代码位置;因此如果不想要map文件可以删掉;或者在 vue.config.js 中配置 productionSourceMap: false
- 将打包后的dist文件夹放到服务器中;如:放到服务器的 /root/whn/shopping/dist中;
- 在服务器上安装nginx: yum install nginx;
- 配置nginx,在/etc/nginx/nginx.conf文件中配置以下内容: location / { root /root/whn/shopping/dist; index index.html; try_files $uri $uri/ /index.html; } 即当访问服务器的根目录时,自动访问 /root/whn/shopping/dist/index.html 配置反向代理:帮服务器找数据服务器要数据 location /api { proxy_pass http://182.92.128.115; } proxy_pass 对应的地址是项目ajax请求所请求的后端服务器;会将所有/api为前缀的请求映射到配置的地址;
- service nginx start 启动nginx服务器;
- mock.js 用于模拟指定ajax请求需要返回的数据; Mock.mock(url, {})当请求url时返回对应的数据
- Swiper 轮播图插件,使用的是 Swiper 5版本
- uuid 用于生成游客的唯一id;
- qrcode 用于生成二维码;
- vue-lazyload 插件实现图片懒加载;版本:1.3.3
- vee-validate 插件实现表单验证;