使用 Vue 和 epub.js 制作电子书阅读器
ePub 简介
ePub 是一种电子书的标准格式,平时我看的电子书大部分是这种格式。在手机上我一般用“多看”阅读 ePub 电子书,在 Windows 上找不到用起来比较顺心的软件,所以很久之前就想折腾一下,自己开发一个 ePub 电子书阅读器。这两天趁着有空,做了一个简单的阅读器。虽然还有些 bug,但基本功能算是齐全了。自己开发的有很多好处,以后只要稍微修改一下,就可以实现导出 HTML 或者 导出 Markdown 的功能,方便保存读书笔记,这一点比大多数软件好用多了。
epub.js 简介
ePub 作为一种标准格式,自然而然地会有很多开源的实现。基于 Javascript 的库不多,epub.js 算是做得最好的了。使用起来比较简单,官方的示例和第三方例子也比较丰富,有兴趣的自己去看,这里不多说。
indexedDB
第一次在项目中使用 indexedDB,之前一直用 localStorage 作为存储方案。之所以用 indexedDB,是因为 localStorage 只有 5M 的存储空间,只能选择 indexedDB。
本想用 Promise 封装 indexedDB 的,奈何能力不够,没有成功。感觉 indexedDB 兼容性还是不怎么样,浪费了半天的时间在调试上面,还是没成功,结果升级一下浏览器就解决了,也是醉了。项目快做好的时候发现了一个封装库 localForage,感觉还不错,可以避免少采坑,在这里推荐一下。
项目介绍
epub-front 是一个 Web 版的 ePub 电子书阅读器,使用 Vue、epub.js、indexedDB 和 rangy 开发。
你可以点击这里 使用该阅读器来阅读 ePub 电子书。
近期可能会增加一些功能、比如导出 Markdown、编辑 ePub 什么的,看心情。
欢迎 star、PR。
使用 Vue 和 epub.js 制作电子书阅读器的更多相关文章
- Rem是什么,牛逼的Vue,Epub竟然可以实现阅读器功能。太牛了。
rem 相当于根元素font-size值的倍数. 1rem=根元素font-size 2rem=根元素font-size * 2 // 1rem = fontSize px // 1px = (1/f ...
- 基于React实现的【绿色版电子书阅读器】,支持离线下载
代码地址如下:http://www.demodashi.com/demo/12052.html MyReader 绿色版电子书阅读器 在线地址:http://myreader.linxins.com ...
- 基于Core Text实现的TXT电子书阅读器
本篇文章的项目地址基于Core Text实现的TXT电子书阅读器. 最近花了一点时间学习了iOS的底层文字处理的框架Core Text.在网上也参考很多资料,具体的资料在文章最后列了出来,有兴趣的可参 ...
- js制作ppt阅读文档类型
前几天开发中,客户要求在页面中展示一个类似ppt文档的一个东西,用轮播展示,但是有缩略图,和展示的大图,本想找些插件来做,后来想想,自己试下吧.. 有些简陋,但是能用,毕竟一行一行写的,留下来当笔记用 ...
- HTML+纯JS制作音乐播放器
该篇文章会教你通过JavaScript制作一个简单的音乐播放器.包括播放.暂停.上一曲和下一曲. 阅读本文章你需要对HTML.CSS和Javascript有基本的了解. 话不多说,先上图. emmm. ...
- SWT JFace 小制作 文本阅读器
1 package swt_jface.demo11; 2 import java.io.File; 3 import java.io.FileInputStream; 4 import java.i ...
- GitBook制作电子书详细教程(命令行版)
GitBook 是一款基于 Node.js 开发的开源的工具,可以通过命令行的方式创建电子书项目,再使用 MarkDown 编写电子书内容,然后生成 PDF.ePub.mobi 格式的电子书,或生成一 ...
- 电子书及阅读器Demo
电子书阅读器(Kindle,电子纸技术.LCD.电子墨水技术等: 亚马逊/当当网站) 电子书产业可分5大环节:内容供应商.数字格式制作商.内容流通服务平台.传输平台以及终端阅读器产品. 全球电子书市 ...
- Linux版EPUB阅读器
Linux版EPUB阅读器 如果说用平板电脑看书尚属主流的话,那么在电脑上读书就非常少见了.专注阅读16世纪的书是非常困难的了,没人希望后台蹦出QQ聊天窗口.但是如果你非要在电脑上打开电子书的话,那么 ...
随机推荐
- ASP.NET Core 一步步搭建个人网站(7)_Linux系统移植
摘要 考虑我们为什么要选择.NET Core? 因为它面向的是高性能服务器开发,抛却了 AspNet 的臃肿组件,非常轻量,加上微软的跨平台战略,对 Docker 的亲和性,对于开发人员也非常友好,所 ...
- 华为/华三交换机snmp配置
snmp-agent /使能snmp服务/snmp-agent local-engineid 000007DB7F000001000049DD /系统自 ...
- [转]Git教程【译】
[转]Git教程[译] http://www.cnblogs.com/zhangjing230/archive/2012/05/09/2489745.html 原文出处:http://www.voge ...
- 关于eclipse安装Genymotion插件的方法
其实Genymotion的安装方法也有两种:在线安装和离线安装,不过推荐使用在线安装,这个更快.这里我只说在线安装的方法. 打开eclipse,点击help-install new software ...
- Pythonic
这个词翻译过来就是 这很python,其产生的目的就是写出更简洁的,没有冗余的python代码. 1.元素交换 a, b = b, a 看到网上有人解释的很好,首先,建立元组的重点不在于括号'()', ...
- Effective Java 第三版——37. 使用EnumMap替代序数索引
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...
- web api 路由规则和接收数据
1:默认是不带action的 所以再访问的时候 只需要 api/控制 2:加了action 就要 api/控制器/方法名字 接收方法 传参 json 序列化传参
- Dagger2的基本概念与实际应用。
本文系原创博客,文中不妥烦请指出,如需转载摘要请注明出处! Dagger2的基本概念与实际应用 Alpha Dog 2016-11-30 10:00:00 本文Demo的github地址:https ...
- java日期格式大全 format SimpleDateFormat
http://www.cnblogs.com/loveyakamoz/archive/2011/08/18/2145047.html
- 多线程 Synchronized关键字和Lock
Synchronized 分为实例锁和全局锁. 实例锁为 synchronized(this) 和 非static synchronized方法. 也加对象锁. 只要一个线程访问这类的一个syn ...