基于 Vue(2.6) + Vuex +Vue-Router + Axios + Vant UI + Scss + ES6 等开发一款小说 WebApp,UI 界面参考了移动版版的起点中文网、flex 布局适配常见移动端。
在线地址
因为服务器很不给力,所以加载很慢,急性子的大神可以clone下来,运行看效果。如果可以的话一会再访问应该就没什么问题了,出现这样的问题,实在抱歉。
项目演示地址:仿小说网WebApp。(纯属个人练手,巩固知识,无其他用途)
项目源码地址:vue-fiction,觉得还可以的话给个star 在这先谢谢了~
推荐使用手机访问,电脑在 Chrome 调试模式下食用效果更佳,开启调试模式的手机模式后,如果不能滚动,刷新一下页面即可。
预览
开发目的
通过学习开发一个 Vue 全家桶项目,让自己更熟练的使用 Vue 全家桶、模块化开发、ES6 等等知识,提高自己的技术能力。
技术栈
前端
Vue:用于构建用户界面的 MVVM 框架
vue-router:为单页面应用提供的路由系统,使用了Lazy Loading Routes技术来实现异步加载优化性能
vuex:Vue 集中状态管理,在多个组件共享某些状态时非常便捷
vue-lazyload:实现图片懒加载,节省用户流量,优化页面加载速度
vant ui:移动端ui框架,支持TypeScript,目前用过最好用的没有之一,组件多而且实用。(源码用TS写的,Fork出来,自己研究,扩展。蛮好的)
SCSS:css 预编译处理器
ES6:ECMAScript 新一代语法,模块化、解构赋值、Promise、Class 等方法非常好用
后端
Node.js:利用 Express 搭建的本地测试服务器
vue-axios:用来请求后端 API
chreeio:jquery核心功能的一个快速灵活而又简洁的实现,主要是为了用在服务器端需要对DOM进行操作的地方
其他工具
vue-cli:Vue 脚手架工具,快速初始化项目代码
eslint:代码风格检查工具,帮助我们规范代码书写(一定要养成良好的代码规范)
iconfont:阿里巴巴图标库,谁用谁知道
fastclick:消除 click 移动游览器 300ms 的延
个人收获
css方面
1、transition + transform-scale + ::before/::after伪元素 : 实现图标X效果
2、text-align:justify:实现文段两端对齐
3、counter-reset + counter-increment + ::before {content: counter()}: 实现列表序列号
4、animation + background-image: linear-gradient():实现加载时效果
js方面
1、window.requestAnimationFrame:实现限时免费倒计时
2、el.addEventListener('scroll') + e.target.scrollTop: 实现记录滚动位置 (e.target.scrollTo真机测试无效)
3、变量解构赋值
4、async/await 解决页面多请求同步化
5、Object.freeze():解决vue长列表数据影响性能和Object.prototype原型污染
等等
TODO
1、添加登录模块
2、添加后台管理系统
3、使用TS重构项目
4、升级为vue3.0项目
最后
最后欢迎各路大神GitHub上Issues指出不足感激不尽,欢迎star~~