前端和用户直接打交道,他们把各种创意做成现实。豆瓣阅读中大量的使用HTML5、CSS3 等特性,通过复杂而又精细的编码实现优雅的阅读体验。在6月27日的 Adobe创意技术沙龙中,豆瓣阅读的前端工程师石岩将做主题为「Type is Beautiful」的分享,介绍使用前端技术为电子书实现专业的字体、版式等工作。借此机会,InfoQ 对他做了采访,聊聊豆瓣阅读产品在前端构建过程中的一些感受:

\

InfoQ:请您先做下自我介绍?

\

\

石岩:大家好,我叫石岩,是豆瓣的前端工程师,在豆瓣工作有四年的时间;最近两年主要做豆瓣阅读这个产品,专注于阅读器以及改进用户 Web 阅读体验方面的工作。我本人对于设计,特别是字体与版式设计比较敏感,所以在做这方面的前端工作时很有心得。

\

\

InfoQ:豆瓣阅读作为一个前端导向的产品,您认为它和之前所做过的前端工作有哪些不同?

\

\

石岩:首先豆瓣阅读所涉及的是一个较新的领域,同时在我之前所做的项目中没有触及类似 typography 这类专业领域(之前它们并不属于前端开发或是 Web 设计的范畴)所以我们在动手前需要跟设计师、产品经理去讨论如何用 Web 的方式去实现。

\

\

InfoQ:比如哪些方面?

\

\

石岩:主要是字体排印以及传统印刷品中的各类版式呈现,细节来讲,包括标点禁则、标点压缩、注释、插图的处理等。所以需要我们更细致地去探究 Web 中文本的展示。

\

\

InfoQ:在豆瓣阅读的前端设计中会有哪些设计理念,怎么把信息更好的呈现给用户?是利用拟物风格的,就是完全图书的那种形式呢?还是你们有自己的一套方式?

\

\

石岩:豆瓣阅读分为自出版和电子书两个平台。对于自出版平台中的排版系统,功能是第一位,所以视觉和交互更多地是考虑如何帮助用户更好地完成文字编辑工作。出于对特殊用户群以及复杂需求的考虑,排版系统在前端实现方面也是破天荒地只支持高级浏览器,这样大大降低了开发成本,同时也让用户体验到前沿技术所带来的丰富功能。电子书平台面向读者,支付和阅读体验是设计重点。至于设计理念,我本身不是设计师,所以也讲不出什么专业观点[笑],我想应该是延续了豆瓣一贯的凸显内容价值的质朴风格。

\

\

InfoQ:刚才你谈到会用一些像 typography 方面的一个开发,那这块有哪些重点?你们遇到一些问题是怎么来做解决的?

\

\

石岩:首先是字体渲染这一块,渲染引擎在不同操作系统、浏览器上差别很大,显示屏幕的类型更是决定着实际显示效果。所以需要我们了解字体在不同条件下的渲染方式,这样才能着手做分别的处理和优化。再一个重点就是刚才提到的文字版式处理。具体会在我 27 号的 分享 中介绍。

\

面对这些问题,我们最主要是查资料、求助社区,有机会的话会当面询问专业人员,听取他们的建议。通过权衡现有技术以及实现成本来评定解决方案。在参考纸书优秀版式的同时,还要突出电子阅读的优势,比如代码高亮、运行,大尺寸插图、多媒体组件等。

\

\

InfoQ:豆瓣阅读其实是面向两种人群:读者和作者。在读者阅读时,你之前的分享中提到“会进行一些预渲染的工作”,这样主要是为了提高性能吗?

\

\

石岩:对于 Web 阅读,用户设备的屏幕尺寸以及缩放后的浏览器尺寸无法预知,所以我们不得不在阅读页版心调整后做重新分页。你提到的预渲染可能是在分页前进行的一个必要步骤。

\

\

InfoQ:比如说用户改变他们屏幕大小的时候,豆瓣阅读会相应的去更新渲染,这样实时的过程会不会特别占用浏览器的资源?

\

\

石岩:以目前的实现方式,要根据一本书的长度而定。对于在 IE8 下渲染长篇作品,用户确实会觉得第一次渲染很慢。随着后端作品结构重构完毕,我们已经打算着手进行前端优化,从根本上解决这个问题,做到真正的按需加载按需分页。

\

\

InfoQ:目前的用户呈现方面还在做哪些工作?

\

\

石岩:像刚才提到的,速度肯定还是有优化的空间。一些同类产品,比如 Cloud Reader、Google Books,看得出他们在这方面就做了很多工作,和他们相比还是有一定差距。当然一部分是因为中国的国情,豆瓣阅读要支持更低端的浏览器,所以在实现方面有点束手束脚,所以我们也打算将特性开关应用到分页及渲染上,但所涉及的问题有些复杂,得需要些时间。

\

\

InfoQ:所以你们也会主动去做一些努力把低端的浏览器的量减少?

\

\

石岩:对,现在低端浏览器的访问比例已经很小了。豆瓣阅读会对 IE6、7 用户做提示升级,同时建议国产双核浏览器用户切换到极速模式。

\

\

InfoQ:之前沟通你提到在面向作者的功能中,数据的保存、同步、文档多人共享协作还有一些需要解决的问题?

\

\

石岩:多人协作暂时还没有实现,这也是在人员配备和工作重点两方面权衡后做出的决定。其他的问题,大多已经有了方案,但要一个一个解决。豆瓣的排版系统在不断发展、演化的过程中肯定是要朝更专业的在线文字处理系统去转变,你看现在 Word 和 Pages 都相继推出了各自的 Web 版,所以这方面还是有很多发展空间的。

\

\

InfoQ:豆瓣阅读需要能够在浏览器端保存用户阅读的进度,目前是用 sessionStorage 来做的?

\

\

石岩:进度是后端同步的,前端主要是记录段落 ID 以及跨页时文字的偏移量。这样就可以实现在不同设备上的进度同步了。

\

\

InfoQ:之前豆瓣阅读的一次更新有一个比较大的调整,当时好像是用户不能使用了,你们会不会通过一些方式实现静默升级?

\

\

石岩:之前有太多东西放在 localStorage 里,虽然包含了更新提醒机制,但只考虑了文章的内容,忽略了阅读器本身的一些特性升级,从而造成了数据上的不一致。现在我们已经完善了这个功能,只要有影响到前端展示的功能上线,就会做本地数据的更新。

\

\

InfoQ:行,问题就到此结束。

豆瓣石岩谈豆瓣阅读前端排版工作的感受相关推荐

  1. 浅谈百度阅读/文库NA端排版技术

    导读:当前主流的排版引擎:Gecko.Blink.Trident.Webkit/Webcore等等,虽然能实现基本的图.文排版需求,但对于复杂的版面,特别是图书类文档的排版,无法实现或者实现起来非常困 ...

  2. 我的家乡网页设计_Graphic Design|康石石浅谈LOGO设计在作品集中的创作方法

    写在前面的话 平面设计范畴极广,其领域不仅限于常见的版式设计.海报设计.LOGO设计.VI设计.书籍装帧.广告设计.网页设计.在艺术留学申请过程中,学习平面设计的同学们需依据目标院校对作品集项目及页数 ...

  3. 浅谈ipad阅读类应用设计

    自古以来,人们从阅读中了解最新资讯,学习知识,陶冶情操.随着社会和科技的发展,新的阅读设备,阅读方式,丰富的多媒体展示,让阅读这一人类行为更加高效化和多样化.对于平板电脑这个较新的媒介,我们如何能进一 ...

  4. 移动端PDF阅读器重排版效果对比-小白PDF阅读器与KOReader重排版效果对比

    PDF是一种跨操作系统平台的电子文件格式,它能在各种不同的平台上以相同的版式显示.很多扫描书籍或者电子书籍都会采用PDF格式存储.但是移动端由于屏幕的限制,以原版展示PDF会导致画面缩放严重,影响阅读 ...

  5. 第一行代码android 豆瓣,豆瓣blog » Blog Archive » 豆瓣的初衷

    六年前,我开始写豆瓣第一行代码的时候,是想做一个关于生活发现的服务.也就是说,豆瓣想帮人发现真实生活里的好东西.今天豆瓣有一百多人的团队了,我们依然在做一个关于生活发现的服务. 这个想法可以在2005 ...

  6. 三菱fx2n-2ad编程实例_松岗石岩数控机床学徒学会模具编程高薪就业

    松岗石岩数控机床学徒学会模具编程高薪就业 本培训授课完全按照工厂五轴机床加工工艺,利用我们曾经在工厂五轴加工过的产品进行讲解.上课时间分全日制学和业余学,上课时间可根据学员的时间灵活安排 Powerm ...

  7. 你如何理解前端的工作(面试题)

    入坑前端到今天也将近两年半了,这两天突然想到了第一次面试时面试官的一个问题-------你怎样理解前端的工作? 对于当时我一个小白而言完全是胡说一通,词不达意,搞得面试官一脸懵逼,现在想想那可能就叫尬 ...

  8. 请谈一下Spring MVC的工作原理是怎样的?

    请谈一下Spring MVC的工作原理是怎样的? ①客户端的所有请求都交给前端控制器DispatcherServlet来处理,它会负责调用系统的其他模块来真正处理用户的请求. ②DispatcherS ...

  9. 谈一谈互联网产品设计阶段的工作流程

    谈一谈互联网产品设计阶段的工作流程 关于互联网产品设计阶段的工作流程,近几年好像有了一个标准的模式,大家都按照这么一个大概的流程来工作,又好像没有标准,每个团队又不尽相同,有的简单粗暴,有的复杂细致 ...

最新文章

  1. CentOS6.4_X86_64 安装Drupal-7.31必须成功版!
  2. Matplotlib 中文用户指南 7.2 Python shell 中使用 Matplotlib
  3. 企业级分布式事务设计实践解决方案
  4. layui 自定义排序_thinkphp5+layui异步修改排序
  5. react 面试题 高级_高级前端面试题目大全(一)
  6. python向数据库中添加参数_第四篇:python操作数据库时的传参问题
  7. 前端学PHP之文件操作(认真读读)
  8. RHEL7 -- 修改主机名
  9. SAP License:MM中的几个概念
  10. matlab计算macd_matlab计算MACD指标
  11. 利用Java发送邮件(含附件)的例子
  12. html开源类库,Js弹窗类库的开源库介绍
  13. 在Mac下,快速搭建针对WP8应用的PhoneGap开发环境
  14. 基于回声状态网络(ESN)的时间序列预测
  15. 微信小程序页面跳转方法总结
  16. 自动驾驶行业开源数据集调研
  17. fatal: unable to connect to gitee.com: gitee.com[0: 180.97.125.228]: errno=Unknown error
  18. 与同事协作一起维护发布同一个npm包,报错You do not have permission to publish
  19. hdu 4745 区间dp
  20. 机房动力环境集中监控系统

热门文章

  1. 孔维滢 20171010110《面向对象程序设计(java)》第十周学习总结
  2. 52abp前端angular 字体资源本地化
  3. 新编组织行为学作业 (3)
  4. 在Vivado下利用Tcl实现IP的高效管理
  5. EC600N-AT 软件包笔记
  6. 对抗式主动学习三部曲(GAAL 、VAAL、TA-VAAL)---入内不亏
  7. 《快速掌握PyQt5》第二十五章 Pyinstaller打包
  8. aws api gateway 网关的身份和访问管理
  9. Linux之LAMP部署
  10. pytorch搭建WGAN