【Web系列】小說在線閱讀

寫在前面

github.com/bajdcc/Onlin

時常有讀小說的煩惱,下了幾MB的txt電子書,然而在電腦端上看真是慘不忍睹,所以做了個網站來解析小說。

要求的小說格式是:

  1. 第一行是小說的標題,即書名
  2. 空一行
  3. 第三行是章節名,如「引子」或「第XXX章」
  4. 空一行
  5. 正文
  6. 下一章節名
  7. ……

渣效果圖

根據正文生成的目錄:

網站主體如題圖所示。

設計思路

搭一個網站可以用很多工具,這裡後端採用PHP,前端用Vue.js。

自動載入觸發機制:localhost/getmenu.php?id=書名,如1000.txt,書名是1000,不包括後綴名,因此請求是localhost/getmenu.php?id=1000,請求後系統自動導入小說。

當載入一個小說如「1000.txt」的時候,系統做:

  1. 如果沒有db.sqlite,新建一個,返回失敗
  2. 再次請求時,系統找到1000.txt,讀文件(in getmenu.php)
  3. 按「引子」、「第XXX章」將文章進行分割,記錄分割後各個片段的起始位置和終點位置(in getmenu.php),並保存入db.sqlite中,序列化方式是json和base64
  4. 之後請求時,從db.sqlite取出位置,然後從1000.txt中根據位置找出相應小說片段,並返回給前端

分頁規則

在utils.php中的_filterRegexp方法中,目前是

/^(引子|第.{1,15}章)/n

使用方法

php開擴展sqlite3,然後serve即可。

如我下了本新小說,將它命名成2000.txt,在主頁上輸入2000,點載入,然後即可開始閱讀。

其他特性

  • 系統按IP保存當前閱讀進度

  • 觸屏滑動支持
  • 快捷鍵翻頁支持
  • 查詢章節名

總結

建個小網站,造個小輪子,不亦樂乎啊。

推薦閱讀:

JS trick之babel-stage語法雜談
極樂技術周報(第十八期)
作為前端負責人,團隊成員工作自己不能分配,前端工作又要我協調,好痛苦?
什麼是 Impure Component

TAG:编程 | 小说阅读 | 前端开发 |