一言 PWA——一个展示一句话的网站

2017-10-23 17:46:12 +08:00
 tomato3

先放网址: https://hitokoto.heitaov.cn

这是一个展示一句话的渐进式网页应用,emmm.....可能有点鸡肋。如果你喜欢宋体,为了更好的视觉效果,建议在应用中开启思源宋体选项。

开发时间

今年 2 月就开始惦记,7 月开始编写代码,打算 9 月中旬写完然后发布到 V2 上来寻求面试机会的,结果 8 月底去网易面试然后通过了。然后从 9 月底继续编写,现在已经部署到线上了。

初衷

一开始是使用别人的一言 API,然后就惦记着单独做一个 PWA 应用。恰好看完了《松浦弥太郎的 100 个基本》,当时觉得书里这么多想法,自己一下子记不住,记住过段时间又会忘,那么有没有地方能够循环展示这些内容呢?

我一开始是打算做一个 PWA 版的 一个(就是韩寒工作室出的那个应用),但是在图文排版上不太好处理,图片的来源没有,而且使用的一言 API 也没有图片,最终还是回到了「展示一句话」这样的基本点上。

关于句子,有一个收集网站叫做句子迷,句子内容丰富,但是网页设计还停留在 Web2.0,移动端网页中也是传输的 HTML 页面,而不是常见 JSON 接口。很希望句子迷能够改版。

所以这个网页应用能够像句子迷网站那样收集自己喜欢的句子,并且能够展示出来。针对句子,采用了竖着排版和横着排版两种布局,不适合整篇文章。

怎么使用在「关于」选项里面有介绍,首页播放展示是以模式为主的。

技术

开启 gzip 后,网站大小为 200KB 左右,字体资源 24MB 是放在 CDN 上的。每次更新最多只会使用 200KB 的流量,字体资源下载后只要不被清理掉,就再也不会向网络请求获取。 网站采用的前端技术也没什么新鲜的东西,可能就多了一个 indexedDB 缓存 20m 的字体文件吧,indexedDB 非 https 的网站也能使用。 后台是用 restify+mongodb 写的,代码没有根据业余分割到各自的文件夹(为了使用类型提示),为了安全性暂时不公开后台源码,一年后再公开。

前端还存在的问题是

  1. 我 webpack production 的配置不能开启 uglifyPlugin,我不知道为什么 是因为 commonChunck 吗?我想让 ServiceWorker 增量更新资源,只更新 bundle,vender 使用以前的,不知道 OfflinePlugin 的逻辑是不是这样写的。
  2. 在 fullscreen 模式下,软键盘会遮住输入框。
  3. React 未做优化,有一些不必要的渲染。
  4. 24MB 的字体文件第一次解析时会导致页面卡顿。
7883 次点击
所在节点    分享创造
40 条回复
liweicomeon
2017-10-23 18:03:58 +08:00
不错,帮顶,马克
xshwy
2017-10-23 18:20:21 +08:00
如果能通过空格切换下一句就更好了
taifus
2017-10-23 18:40:55 +08:00
感觉挺不错的。
Keyblade
2017-10-23 19:04:19 +08:00
使用白色 UI 的话那些按钮都看不见了,是这样设定的还是 bug ?
tomato3
2017-10-23 19:08:33 +08:00
@xshwy emmm....这个可以加上~
misaka19000
2017-10-23 19:10:43 +08:00
这个不是有现成的吗。。。

hitokoto.cn
misaka19000
2017-10-23 19:11:08 +08:00
tomato3
2017-10-23 19:11:35 +08:00
@Keyblade 是给使用深色系的时候使用的 或者适合纯白色的颜色
Keyblade
2017-10-23 19:15:40 +08:00
@tomato3 #8 是哦你这么一说我想起来旁边有个改背景色
tomato3
2017-10-23 19:41:42 +08:00
@misaka19000 是的 还有很多 你可以在“第三方 API ”模式中看到有这个来源。你也可以自己搭自己的接口,然后在这个客户端上用,比如说解析句子迷网站的句子或者哔哩哔哩的弹幕的跨域 API,然后写好你的 adapter,也能用这个网站播放。
forestyuan
2017-10-23 22:20:11 +08:00
字是竖排的,看着好累
ck65
2017-10-23 23:46:01 +08:00
发现一个 bug:
打开首页,点「关于」,点「←」左箭头,点「关于」,点左箭头,点关于,点左箭头,白屏。有时三次后白屏,有时四次后白屏,Chrome 62 macOS 10.13 。
tomato3
2017-10-24 00:20:09 +08:00
@ck65 这是动画库的正常现象,你得等它一个动画完成后在去点击其他操作,不然在动画期间他会让两个元素都作为离场元素设置为透明度为 0,就像在 macro tasks 中间插入了 macro tasks。我使用的是进出场组件,对动画过程无法精确控制,不能中途强制认为某个动画已结束,执行新动画。 开发过程中,FullPageCard 在右侧其实还有一个关闭按钮。点击关闭按钮可以很快的关闭这个页面,但如果场景切换过快,会导致页面动画倒放以及你说的页面全白。我又给每一个组件设置 key 为 Date.now()能够解决这个问题,但是这样不能重用实例,是个反模式。所以就去掉了关闭按钮,Date.now 也去掉了。让你切换页面的鼠标移动距离变大,这样就不会那么快切换页面了。

但其实这个问题还是存在的,你在点我的收藏然后快速返回再进去几次,动画会倒放。
Keyblade
2017-10-24 00:43:23 +08:00
啊对了还有个建议
要不要考虑横向的时候固定一下按钮的位置呢
tomato3
2017-10-24 00:52:12 +08:00
@Keyblade 😂就是不知道该固定在哪儿啊。都不合适,只有等设计师出马了。PC 上已经可以用空格键来切换下一个了,如果你应用没更新,刷新一下页面就可以了。
xingxing09
2017-10-24 01:22:57 +08:00
很棒的网站 截了几张图 做壁纸
tomato3
2017-10-24 01:37:58 +08:00
@xingxing09 谢谢~点 logo 可以全屏哦~现在句子不是很丰富,你可以发布自己喜欢的句子到自己的句集里,然后点击句集上的「加入来源」,将这个来源加入一个模式(没有的话新建一个,一个模式可以有多个来源),然后回到首页,在页面设置将模式改为你设置的模式。这样可以截取自定义的句子作为壁纸。
shiny
2017-10-24 02:33:46 +08:00
思源宋体的效果堪称惊艳
irainsoft
2017-10-24 06:01:39 +08:00
无法访问此网站

找不到 hitokoto.heitaov.cn 的服务器 DNS 地址。

没有设置海外域名解析?
loading
2017-10-24 08:00:26 +08:00
阅读习惯好累。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/399992

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX