# 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. go 学习笔记之走进Goland编辑器

    工欲善其事必先利其器,命令行工具虽然能够在一定程度上满足基本操作的需求,但实际工作中总不能一直使用命令行工具进行编码操作吧? 学习 Go 语言同样如此,为此需要寻找一个强大的 IDE 集成环境帮助我们 ...

  2. weblogic10.3.6漏洞修改方案

    1.CVE-2018-2628漏洞 CVE-2018-2628漏洞利用的第一步是与weblogic服务器开放在服务端口上的T3服务建立socket连接,可通过控制T3协议的访问来临时阻断攻击行为. W ...

  3. 利用python自动生成verilog模块例化模板

    一.前言 初入职场,一直忙着熟悉工作,就没什么时间更新博客.今天受“利奇马”的影响,只好宅在家中,写写技术文章.芯片设计规模日益庞大,编写脚本成了芯片开发人员必要的软技能.模块端口动不动就几十上百个, ...

  4. 分享一个非常好用又好看的终端工具--Hyper (支持windows、MacOS、Linux)

    分享一个非常好用又好看的终端工具--Hyper 官网地址: https://hyper.is/ 打开官网,选择对应版本安装即可:(可能网络原因,无法下载, 可以从我分享的链接下载 链接: https: ...

  5. ES 26 - 通过partial update局部更新索引文档 (partial update增量修改原理)

    目录 1 什么是partial update 1.1 全量修改文档的原理 1.2 修改指定field的思路 1.3 partial update的优势 1.4 partial update的使用 2 ...

  6. python基础--列表,元组

    list1 = [1,2,3,4,5,6]list2 = ['wang','cong']# 1对列表中的元素取值(通过索引)print(list1[3]) # 4print(list2[1]) # c ...

  7. 洛谷 P3628 特别行动队

    洛谷题目页面传送门 题意见洛谷. 这题一看就是DP... 设\(dp_i\)表示前\(i\)个士兵的最大战斗力.显然,最终答案为\(dp_n\),DP边界为\(dp_0=0\),状态转移方程为\(dp ...

  8. hadoop开启Service Level Authorization 服务级认证-SIMPLE认证-过程中遇到的坑

    背景描述: 最近在进行安全扫描的时候,说hadoop存在漏洞,Hadoop 未授权访问[原理扫描],然后就参考官方文档及一些资料,在测试环境中进行了开启,中间就遇到了很多的坑,或者说自己没有想明白的问 ...

  9. Codeforces 868E Policeman and a Tree

    题意简述 给你一颗有n个点的树,每条边有边权,有一个警察一开始在点S,他的速度是1,即通过一条长度为x的边要花x单位时间. 有m个罪犯,一开始第i个在点x[i],他们的速度无限快. 如果罪犯和警察到达 ...

  10. (五)c#Winform自定义控件-复选框

    前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. 开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control ...