【Web系列】小說在線閱讀
01-29
寫在前面
https://github.com/bajdcc/OnlineReader
時常有讀小說的煩惱,下了幾MB的txt電子書,然而在電腦端上看真是慘不忍睹,所以做了個網站來解析小說。
要求的小說格式是:
- 第一行是小說的標題,即書名
- 空一行
- 第三行是章節名,如「引子」或「第XXX章」
- 空一行
- 正文
- 下一章節名
- ……
渣效果圖
根據正文生成的目錄:
網站主體如題圖所示。設計思路
搭一個網站可以用很多工具,這裡後端採用PHP,前端用Vue.js。
自動載入觸發機制:localhost/getmenu.php?id=書名,如1000.txt,書名是1000,不包括後綴名,因此請求是localhost/getmenu.php?id=1000,請求後系統自動導入小說。
當載入一個小說如「1000.txt」的時候,系統做:
- 如果沒有db.sqlite,新建一個,返回失敗
- 再次請求時,系統找到1000.txt,讀文件(in getmenu.php)
- 按「引子」、「第XXX章」將文章進行分割,記錄分割後各個片段的起始位置和終點位置(in getmenu.php),並保存入db.sqlite中,序列化方式是json和base64
- 之後請求時,從db.sqlite取出位置,然後從1000.txt中根據位置找出相應小說片段,並返回給前端
分頁規則
在utils.php中的_filterRegexp方法中,目前是
/^(引子|第.{1,15}章)/n
使用方法
php開擴展sqlite3,然後serve即可。
如我下了本新小說,將它命名成2000.txt,在主頁上輸入2000,點載入,然後即可開始閱讀。
其他特性
- 系統按IP保存當前閱讀進度
- 觸屏滑動支持
- 快捷鍵翻頁支持
- 查詢章節名
總結
建個小網站,造個小輪子,不亦樂乎啊。
推薦閱讀:
※JS trick之babel-stage語法雜談
※極樂技術周報(第十八期)
※作為前端負責人,團隊成員工作自己不能分配,前端工作又要我協調,好痛苦?
※什麼是 Impure Component