编者注:咱们发现了有趣的系列文章《30天学习30种新技术》,正在翻译,一天一篇更新,年终礼包。下面是第23天的内容。javascript
肯定今天的主题费了我很多工夫,我开始打算学习brain,后来又去看了看Twitter Server,可是我最后决定学习TimelineJS。本文将介绍如何使用TimelineJS为一系列文章建立一个精美的时间轴。html
TimelineJS 是一个开源库,能够帮助你建立精美、可交互的时间轴。它能够使用Google试算表或基于JSON的REST后端做为数据来源。它能够处理不一样种类的内容,从多个来源获取媒体文件,包括:前端
我今天构建的示例程序以时间轴的形式展现个人《30天学习30种新技术》系列文章。它部署在OpenShift上,你能够在此访问。html5
用户访问应用的/
时,将看到包括全部已发表文章的时间轴。这背后经过REST(/api/v1/stories)获取文章信息。java
今天的示例应用代码能够从GitHub获取。jquery
这里假设你已经安装了OpenShift客户端工具。请参阅OpenShift文档获取安装信息。git
咱们将开始建立名为day23demo
的示例应用。angularjs
rhc create-app day23demo tomcat-7 mongodb-2 --from-code=https://github.com/shekhargulati/day23-timelinejs-demo.git
这会为咱们建立一个应用容器——gear,而后设置公开的DNS,建立私有git仓库,最后利用你的Github仓库中的代码来部署应用。应用能够经过http://day23demo-{domain-name}.rhcloud.com/
访问。用你本身的OpenShift域名替换{domain-name}
(域名有时也被称为命名空间)。github
应用部署完成后,你能够使用curl
来建立新文章:web
curl -i -X POST -H "Content-Type: application/json" -d '{"url":"https://www.openshift.com/blogs/day-21-docker-the-missing-tutorial","startDate":"2013,11,18"}' http://day23demo-{domain-name}.rhcloud.com/api/v1/stories
这个应用包括两部分——使用Spring框架构建的后端和用TimelineJS、jQuery构建的前端。在我昨天的文章中,我详细介绍了如何使用Spring框架和MongoDB来构建一个REST后端。更多信息请参考day 22
TimelineJS使用的JSON格式以下:
{ "timeline":{ "headline":"30 Technologies in 30 Days -- By Shekhar Gulati", "type":"default", "text":"Learn 30 Technologies in 30 Days","startDate":"2013,10,29", "date":[ { "id":"528cb57de4b015e760ed06be", "url":"https://www.openshift.com/blogs/day-1-bower-manage-your-client-side-dependencies", "headline":"Day 1: Bower--Manage Your Client Side Dependencies", "text":"<p>...</p>", "startDate":"2013,10,29", "asset":{ "media":"https://www.openshift.com/sites/default/files/bower- logo.png" } }, { "id":"528cb5bee4b015e760ed06bf", "url":"https://www.openshift.com/blogs/day-2-angularjs-getting-my-head-around-angularjs", "headline":"Day 2: AngularJS--Getting My Head Around AngularJS", "text":"...", "startDate":"2013,10,30", "asset": { "media":"https://www.openshift.com/sites/default/files/angularjs-from-30k-feet.png" } } ] } }
id
和url
是可选的。
index.html
指明应用的用户接口。咱们使用jQuery发起GET请求。GET请求获取的信息交给TimelineJS在id为timeline
的div中渲染。createStoryJS
函数初始化新的时间轴。
<!DOCTYPE html> <html lang="en"> <head> <title>30 Technology in 30 Days Timeline</title> <meta charset="utf-8"> <meta name="description" content="30 Technology in 30 Days Timeline"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-touch-fullscreen" content="yes"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0"> <!-- Style--> <style> html, body { height:100%; padding: 0px; margin: 0px; } </style> <!-- HTML5 shim, for IE6-8 support of HTML elements--><!--[if lt IE 9]> <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script><![endif]--> <script type="text/javascript" src="lib/jquery-min.js"></script> <script type="text/javascript" src="js/storyjs-embed.js"></script> <script> $(document).ready(function() { $.get('/api/v1/stories',function(result){ createStoryJS({ type: 'timeline', width: '100%', height: '600', source: result, embed_id: 'timeline', debug: true }); }); }); </script> </head> <body> <div id="timeline"></div> </body> </html>
这是今天的内容。要继续反馈哦~
原文 Day 23: TimelineJS--Build Beautiful Timelines
翻译 SegmentFault