Skip to content
This repository has been archived by the owner on Nov 24, 2022. It is now read-only.

Latest commit

 

History

History
220 lines (140 loc) · 7.39 KB

shiu_dev.asciidoc

File metadata and controls

220 lines (140 loc) · 7.39 KB

Shiu 开发记录

1. 缘由

受「http://yishu.cnbang.net/[伊书 by @bang]」启发。

2. 项目结构

3. Html5

3.1. manifest

Manifest 文件是用来配置需要缓存的或者一定要保持联网缓存的配置文件。

记得加上 version 来手动控制文件的更新。


3.2. meta

3.3. window.navigator.standalone

检测 Web 页面 的 iPhone 是否 App 运行状态。

3.4. 本地存储

iOS 5 localStorage 限制 5M,用户申请之后可以获取 10M。 我现在解决办法是不放太长的书 + 分卷。 可以考虑使用 Web SQL Database。

3.5. app cache 事件

appCache.onprogress = function(e) {
	var percent = "";
	if (e && e.lengthComputable) {
		percent = Math.round(100 * e.loaded / e.total)
	} else {
		percent = Math.round(100 * (++progresscount / 8))
	}
	self.ui.updateDownloadPercent(percent);
};

3.6. 页面排版

Dom 切换 vs 多栏 -webkit-column-width

获取分栏之后的栏位数目 $('#content chapter > :last'.potion() )。

3.7. 动画切换

jQuery 实现 jQuery.animate({'left': left}, 200)

CSS3 实现 -moz-transition: left 201ms;

CSS3 WebGL 硬件加速实现 不错

self.$chapter.css('-webkit-transform','translate3d(' + left + 'px, 0, 0)'); // 硬件加速

4. JS

4.1. Zepto

Zepto 和 jQuery 完全兼容,并且更小。

优点:

  • 更精简,加载更快

  • 只支持「现代浏览器」

  • 适合开发移动应用

4.2. 结构设计

MCRV 结构设计。

Shiu 拆分了 App / Model / Ui / UiCompent / Db / Util

孙峻文同学的 Behind Tetris5 系列

4.3. 触摸事件

阻止滚动:

http://127.0.0.1:9999/jiangye/

5. 开发工具

5.1. manager.py

受 Django / RoR 启发,我写了一个 Python 脚本 manager.py 用来管理项目, 功能包括:启动一个静态服务器 / 转换图书格式。

运行 ./manager.py -s -p <PORT> 运行静态服务器,默认端口是9999。 运行 ./manager.py --parse-txt ./book/src/jiangye/* --parse-txt-output ./book/jiangye.js 来转换文本格式。 运行 ./manager.py --help 可以查看到帮助。

5.2. QUnit

jQuery 团队出的 JavaScript 单元测试工具。

5.3. JSLint

使用 JSLint 来控制 Javascript 质量。

5.4. 调试工具

Chrome 隐身模式。

Chorme Console

iPhone Safari 调试控制台

5.5. Github

绑定自定义域名 http://shiu.log4d.com