# vue-ts-daily

基于Vue.js的2.5.13版本和TypeScript编写的模仿原生应用的WebApp.
[源码地址](https://github.com/xiaomuzhu/vue-ts-daily) 欢迎star

[项目演示地址](http://day.xiaomuzhu.top/)

![扫描二维码](http://omrbgpqyl.bkt.clouddn.com/18-5-15/73469590.jpg)

建议直接添加到主屏幕(ios端体验差一些).

![](http://omrbgpqyl.bkt.clouddn.com/18-5-16/49737422.jpg)

## 前言

为什么做这个项目?

1. 学习vue全家桶,很长一段时间在用React。
2. 利用PWA技术来模仿原生应用,来探究PWA与原生的差异。
3. 作者声称2.5之后vue增强了对TS的支持,探究TS在vue中的支持情况。

那么为什么模仿一款"习惯养成APP"而不是饿了么、美团、头条等著名APP?

原生APP与WebApp最大的区别就是离线能力,我们希望做一款以离线能力为主的app,这种类型的app绝大多数都是工具类的,例如番茄闹钟、效率工具等等,诸如美团、头条这种app离线场景价值有限(离线怎么点餐看新闻啊?缓存里的应该叫旧闻了)。

这个项目跟其他Vue仿饿了么和qq音乐的项目有何不同?

1. 我们全程Typescript编写,组件完全Class化,写法更贴近Angular,ts是构建健壮应用的必备良药,众多团队在ts化自己的项目了,而github上我找不到任何一个ts+vue的完整app,此项目可以供你学习.

2. 我们利用了pwa技术,pwa目前已经被ios支持(虽然支持得烂),所以,开花结果是迟早的事情,vue+pwa的项目也是十分有限,尤其是在vue-cli 3.0之后就没有相关的项目供参考了.

## 技术栈

vue2.5 + Typescript + vuex + vue-router

## 项目启动
```
git clone https://github.com/xiaomuzhu/vue-ts-daily
npm i && npm run dev

```

## 开发环境
> MacOS 10.12.6 node10.0.0

# 目标功能

- [x] 习惯新建 -- 完成
- [x] 习惯编辑 -- 完成
- [x] 习惯归档 -- 完成
- [x] 习惯删除 -- 完成
- [x] 习惯激活 -- 完成
- [x] vuex持久化 -- 完成
- [x] 当日习惯展示 -- 完成
- [x] 对之前习惯的补签和取消 -- 完成
- [x] 默认习惯选择列表 -- 完成
- [x] 习惯图标与背景颜色的编辑 -- 完成
- [x] 习惯的重复日期、激励语、重复时间段的编辑-- 完成
- [x] 奖励卡领取 -- 完成
- [x] 不同时间段不同习惯的tab筛选 -- 完成
- [x] 习惯的总天数、当前连续天数、历史最高纪录等记录逻辑 -- 完成
- [x] 登录 -- 完成
- [x] 反馈 -- 完成
- [x] 更新日志 -- 完成
- [x] 远程同步信息 -- 完成
- [ ] 开启https实现pwa
- [ ] 加入后台推送功能
- [ ] 加入主题更换
- [ ] 丰富动画效果

## 项目截图
首页

![](http://omrbgpqyl.bkt.clouddn.com/18-5-15/98606536.jpg)

习惯管理

![](http://omrbgpqyl.bkt.clouddn.com/18-5-15/60061652.jpg)

习惯记录

![](http://omrbgpqyl.bkt.clouddn.com/18-5-16/88199965.jpg)

新建习惯

![](http://omrbgpqyl.bkt.clouddn.com/18-5-16/36512417.jpg)

编辑习惯

![](http://omrbgpqyl.bkt.clouddn.com/18-5-16/55413901.jpg)

## 最后

本项目是还原了APP Store一个精选习惯管理app,叫"小日常"。

整体功能还原了90%以上,身为工具类的app还是以逻辑为主,有两个点比较难处理.
1. 逻辑耦合严重,例如一个习惯成功打卡或者取消打卡后,相关的连续天数、总天数、当前天数、习惯当前的ui、日历ui、弹窗逻辑全部要响应.
2. 时间处理,习惯养成工具最主要的还是要处理时间,例如日历组件,当天之后的补签是不能响应的,因此需要做一个时间上的判断,而补签之前的相关连续记录要做改变,这个时候需要计算这个补签是否改变了连续的记录,其中又得涉及时间的处理,整个逻辑就是处理跟时间的关系.

[在线+源码]vue全家桶+Typescript开发一款习惯养成APP的更多相关文章

  1. Vue 全家桶 + Electron 开发的一个跨三端的应用

    代码地址如下:http://www.demodashi.com/demo/11738.html GitHub Repo:vue-objccn Follow: halfrost · GitHub 利用 ...

  2. vue全家桶+Koa2开发笔记(6)--app开发

    1.环境配置 详见文章<Nuxt 开发 - 项目初始化> 1.1  使用nuxt脚手架  https://zh.nuxtjs.org/guide/installation 1.2 在nod ...

  3. vue全家桶+Koa2开发笔记(8)--开发网页

    1.使用 mongoose 动态倒入数据 mongoimport -d student -c areas areas.dat -d 后面是数据库名称: -c后面是表名称 最后是数据源 2.使用vue的 ...

  4. vue全家桶+Koa2开发笔记(7)--登陆注册功能

    1 文件结构:pages中放置页面代码:server 分为 dbs 和interface两个文件夹: dbs设置有关数据库的代码:interface设置接口信息: 2.2 先看dbs的,在dbs的配置 ...

  5. vue全家桶+Koa2开发笔记(5)--nuxt

    1. nuxt项目初始化报错 下面是使用 koa 模板方法初始化一个项目,使用该方法需要将 nuxt 的版本降至1.4.2: 官方 https://zh.nuxtjs.org/guide/instal ...

  6. vue全家桶+Koa2开发笔记(1)--vuex

    1.  安装webpack的问题: webpack坑系列--安装webpack-cli 2.  vue-cli(vue脚手架)超详细教程 3.  在命令行中使用 touch 执行新建文件: 4.  关 ...

  7. vue全家桶+Koa2开发笔记(4)--redis

    redis用来在服务器端存放session 1 安装redis    brew install redis 启动redis   redis-server 2 安装两个中间件  npm i koa-ge ...

  8. vue全家桶+Koa2开发笔记(3)--mongodb

    1. 安装 momgodb brew install mongodb安装成功后执行 which mongod启动:mongod 2. 下载可视化操作数据库的软件 https://robomongo.o ...

  9. vue全家桶+Koa2开发笔记(2)--koa2

    1. 安装koa脚手架的时候 执行命令 koa2 -e koa-learn 注意要使用-e的方式,才会生成ejs的模板 2. async await的使用方法:存在的意义:提高promise的可读性 ...

随机推荐

  1. Zabbix-agentd错误整理

    一.无法启动 (一).当时环境 Firewalld与Selinux,Iptables都为关闭 配置环境 OS:CentOS Zabbix-server IP:10.18.43.71 Hostname: ...

  2. luogu2279_[HNOI2003]消防局的设立 贪心

    传送门 不需要树形dp 关于深度排序 当前节点到最近的消防局(f[u])>2时要建新的与u的上面(v)的上面(w) 同时w的上面和上面的上面也要更新f值 #include <bits/st ...

  3. 佳木斯集训Day7

    毒瘤出题人!!! T2的题面和样例不一样,所以我挂了(没错这就是我写模拟写挂了的理由) T1 大水题,懒得解释了,五分钟AC #include <bits/stdc++.h> #defin ...

  4. BFS DFS模板

    转载于https://blog.csdn.net/alalalalalqp/article/details/9155419 BFS模板: #include<cstdio> #include ...

  5. .lib .dll 区别介绍、使用(dll的两种引入方式)

    .lib .dll文件都是程序可直接引用的文件,前者就是所谓的库文件,后者是动态链接库(Dynamic Link Library)也是一个库文件.而.pdb则可以理解为符号表文件.DLL(Dynami ...

  6. eclipse Maven配置以及使用方法

    简述: 现需要在Eclipse中配置Maven插件,同时安装maven应用,配置Maven环境变量,建立Maven管理的工程,并用Maven导入Gson包, 编写简易Json输出程序 步骤: 1. 首 ...

  7. bottombar——Fragment

    首先是依赖   compile 'com.hjm:BottomTabBar:1.1.1' 下面是activity.xml文件 <RelativeLayout xmlns:android=&quo ...

  8. springBoot入门教程(图文+源码+sql)

    springBoot入门 1   springBoot 1.1 SpringBoot简介 Spring Boot让我们的Spring应用变的更轻量化.比如:你可以仅仅依靠一个Java类来运行一个Spr ...

  9. python历史背诵

    一.python简介 python2:源代码不统一 有重复功能的代码 默认编码是ascii 没有中文 输出中文需要用头文件 #-*-coding=utf-8-*- 进行转换 py3:源代码统一 没有重 ...

  10. 性能测试学习第五天-----Jmeter测试脚本&基础元件使用

    JMeter简介:一个100%的纯Java桌面应用,由Apache组织的开放源代码项目,它是功能和性能测试的工具.具有高可扩展性.支持Web(HTTP/HTTPS).SOAP.FTP.JAVA等多种协 ...