首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

impress.js 源码分析

之前做展示用幻灯片,我一直热衷于使用PPT,刚开始学习PPT时总是强行使用各种页面特效,越做越复杂。现在看来,学技术大概都要经历一个从简到繁再到简的过程吧。后来,无意间接触到prezi,被它强大的展示逻辑所折服,但用了段时间,发现使用prezi破解版有诸多不便,最关键的是,除了很炫的转场特效,单页的设计感不及PPT,总感觉不尽如人意。   总结下,PPT的单页设计感强,普及率高;prezi的展示思路清晰,变现力强,跨平台,但制作流程稍显不便。   最近,学习H5+CSS3时我突发奇想,为何不用H5来做幻灯片展示呢?刚开始两天,纯靠自己手写页面和转场,不是一般累。我试图去抽取常用的公共方法,尝试做成框架组件的形式,发现工作量巨大,而且以自己目前水平,写出来的代码通用性很差。在Google上搜索时,我发现了impress.js的存在,与我的设想不谋而合,于是乎……不再自己造轮子,又花了两天时间熟悉使用impress.js来设计幻灯片,效果完全超越了我的预期。   impress.js简单来说仅仅是实现了幻灯片的转场特效的框架,虽说将单页限制在框架之内,但所有单页还是需要自己用代码设计。虽然花费的时间远远超过了PPT和prezi,但是能够完全使用代码来定制幻灯片,能够使用几乎每台电脑必备的浏览器放幻灯片,何尝不是一种幸福!   花了一天探索了下impress.js源码,其实并不复杂,个人感觉收获颇丰,以下阐述我的收获。

02

60行代码实现简单模板语法

不久前看过一篇不错的文章,作者用了15行代码就实现了一个简单的模板语法,我觉得很有趣,建议在阅读本文之前先看一下这个,本文不会讲解一些细节实现,这里是传送门:只有20行的Javascript模板引擎 这个模板语法实现的核心点是利用正则表达式来匹配到模板语法里面的变量和JS语句,遇到变量就将匹配到的字符串 push 到一个数组中,遇到 JS 语句就执行,最后再把数组中的字符串 join 起来,用 Function 来解析执行这串字符串,最终将执行后的结果放到指定 DOM 节点的innerHTML 里面。 但是这个模板语法还是有很多不足,比如不支持取余运算,不支持自定义模板语法,也不支持if、for、switch 之外的JS语句,缺少 HTML 实体编码。 恰好我这阵子也在看 underscore 源码,于是就参考了一下 underscore 中 template 方法的实现。 这个是我参考 template 后实现的模板,一共只有60行代码。

02
领券