

基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)
source link: https://juejin.im/post/5a5349b9f265da3e290c0d12
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Vue全家桶商城全站升级之引入HTTPS,PWA,错误监控,持续构建。 - 掘金
Vue全家桶商城全站升级之引入HTTPS,PWA,错误监控,持续构建。
在线地址:fancy.czero.cn
手机扫描二维码查看:
项目主架构
- vue-cli (vue+webpack脚手架)
- vue-router(路由跳转)
- vuex(状态管理)
- axios(数据请求)
- mock.js(模拟后台数据)
- vue-touch(手势判断)
- fastclick(解决移动端浏览器 300 毫秒点击延迟问题)
- vue-lazyload(图片懒加载)
- swiper(轮播)
设计布局:
- HTML5
- rem(阿里用的那套rem算法)
- Flex(弹性布局)
- vue-touch(用于实现购物车左滑删除功能) *动画(vue原生transition实现原生app的效果)
数据请求:
- Mock(模拟后台数据)
- Axios(请求数据)
逻辑交互:
- vue(数据渲染,各个组件间的数值传递)
- vue-router(组件间的路由跳转)
- vuex(全局状态的管理)
- vConsole(在移动端查看调试器)
优化方案:
- 腾讯智图(压缩图片,减少图片的体积)
- vue-lazyload(图片懒加载,缓解加载数据,提高网页性能)
- fastclick(解决移动端300ms延迟,提高页面交互流畅度)
- vue-rouer(路由懒加载,分离app的js为多个js文件,到对应的页面再执行对应的js)
- webpack(config/index.js文件内的productionSourceMap改为false,这样打包出来的文件可以没有.map结尾的js文件,且文件体积减少至少一半)
Vuex刷新保存状态
使用Vuex做状态管理的时候,当用户刷新页面,Vuex里面的状态会全部丢失,从而引起程序的一场。解决思路是在creared()钩子函数里面添加以下方法:
created(){
console.log('页面执行刷新时,保存Vuex的状态到LocalStorage')
//在页面加载时读取localStorage里的状态信息
localStorage.getItem("userMsg") && this.$store.replaceState(Object.assign(this.$store.state,JSON.parse(localStorage.getItem("userMsg"))));
//在页面刷新时将vuex里的信息保存到localStorage里
window.addEventListener("beforeunload",()=>{
localStorage.setItem("userMsg",JSON.stringify(this.$store.state))
})
} 复制代码
上面代码的原理是,当页面刷新时,会将当前Vuex的状态存储到LocalStorage里面,刷新成功,再从LocalStorage赋值到Vuex里面.
媲美原生的页面前进和后退的动画实现:
- 指定transition:name
- 在data中声明默认的进出动画
- 在mounted()数据渲染初始化完成之后进行判断
- 拿到vuex的状态值
- 然后进行判断
- 最后将当前的组件名字传给vuex,实现不同的组件进去就有不同的切换动画。
下一页动画
.slide-go-enter-active,
.slide-go-leave-active {
transition: all .5s;
opacity: .8;
}
.slide-go-enter,
.slide-go-leave-to {
transition: all .5s;
transform: translate3d(100%, 0, 0);
opacity: .8;
}复制代码
返回上一页动画
.slide-back-enter-active,
.slide-back-leave-active {
transition: all .5s;
}
.slide-back-enter,
.slide-back-leave-to {
transition: all .5s;
transform: translate3d(-100%, 0, 0);
}复制代码
购物车左滑删除
v-touch
在css中设置好删除按钮的偏移量
-webkit-transform: translate(-12%, 0);
-webkit-transition: all 0.3s linear;复制代码
左右滑方法
滑动的时候触发select样式,进行绑定
让当前的列表项==购物车的列表,样式会被激活,出现左滑删除
注意页面的盒子使用盒子之后会和原生页面出现冲突,导致滑动不流畅
因此,需要在main.js指定默认的滑动方式为横向滑动触发复制代码
订单页面,点击顶部导航和左右滑动进行组件的切换以及动画样式的判断
也是使用的v-touch组件,实现方式和组件切换类似。 我给每个订单状态的组件一个不同的数字,根据这个数字,判断组件是左滑动的动画还是又滑动的动画
Vue-cli开启PWA(Service Worker)和引入骨架屏
参考文章:
持续集成服务 Travis CI
利用Travis CI,监听Github项目master,一旦检测到master有代码变动,自动执行脚本,并把编译打包完成的项目自动发送部署到服务器,不用再像以前一样,需要ssh登录到服务器,再执行git pull操作。 本地添加.travis.yml
language: node_js
node_js:
- 8
branchs:
only:
- master
before_install:
- openssl aes-256-cbc -K $encrypted_87bf11d507f0_key -iv $encrypted_87bf11d507f0_iv
-in id_rsa.enc -out ~/.ssh/id_rsa -d
- chmod 600 ~/.ssh/id_rsa
- echo -e "Host 47.98.240.154\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config
script:
- npm install cnpm --registry=https://registry.npm.taobao.org
- cnpm install
- npm run build
- scp -r dist [email protected]:/var/www/html/fancy
- 复制代码
遇到了很多的坑,失败了无数次,终于知道问题所在:
生产环境错误监控
sentry是国外开源的错误监控库,有线上环境,也可以部署到自己的服务器,可以跟踪错误出现的步骤和错误的详细信息,方便开发人员进行快速定位。
免费升级到HTTPS
升级到https后,服务器可以开启http2.0版本,对比http1.x性能和缓存各方面要更好,还有其他新特性, 可以启动service work功能,更好的进行离线缓存,更好的离线体验。 HTTPS证书可以免费申请,阿里云跟腾讯云都可以申请,按照文档指示进行申请下载,然后将下载的证书上传到服务器,配置服务器的内容,就可以开启https、http2.0、service work等功能了。
项目代码已经都做好注释,可以直接查看源码,点击这里
#克隆项目
git clone https://github.com/czero1995/fancy-store.git
# 安装依赖
npm install
# DLL构建库(提高打包和编译的速度)
npm run dll
# 本地开发环境 访问http://localhost:8080
npm run dev
# 构建生产
npm run build复制代码
Recommend
-
165
XMall 作者本科毕业设计项目 期待您的捐赠支持 X系列项目宣传视频 作者亲自制作
-
7
iOS原生UITabBarController添加视图切换动画 做完UINavigationController的Push动画后想到:怎么样在UITabBarController上也做一个切换动画? 以前包括很多时候都是通过自定义TabBarController来实现更多UI,和动画,可不可以使用原生...
-
6
使用纯Css实现网站换肤和焦点图切换动画更新日期: 2022-09-13阅读: 103标签:
-
4
【秒杀购物商城业务服务】「分布式架构服务」盘点中间件服务的高可用模式及集群技术的方案分析 精选 原创
-
5
建设购物商城系统的优势 增长黑客 2023年4月11日 15:11 8...
-
5
购物商城系统建设优势有哪些? 增长黑客,
-
2
购物商城系统具有哪些特点呢? 增长黑客,
-
10
网上购物商城系统如何选择? 增长黑客,
-
5
如何选择购物商城源码? 增长黑客,
-
8
简析网上购物商城建设的思路 增长黑客,
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK