- Day 1: Bower - 管理你的客户端依赖关系
- Day 2: AngularJS - 对 AngularJS 的初步认识
- Day 3: Flask - 使用 Python 和 OpenShift 进行即时 Web 开发
- Day 4:PredictionIO - 如何创建一个博客推荐器
- Day 5: GruntJS - 重复乏味的工作总会有人做(反正我不做)
- Day 6:在 Java 虚拟机上使用 Grails 进行快速 Web 开发
- Day 7: GruntJS 在线重载 提升生产率至新境界
- Day 8: Harp.JS - 现代静态 web 服务器
- Day 9: TextBlob - 对文本进行情感分析
- Day 10: PhoneGap - 开发手机应用如此简单
- Day 11: AeroGear 推送服务器:使应用的通知推送变得简单
- Day 12: OpenCV - Java 开发者的人脸检测
- Day 13: Dropwizard - 非常棒的 Java REST 服务器栈
- Day14:使用斯坦福 NER 软件包实现你自己的命名实体识别器(Named Entity Recognition,NER)
- Day 15:Meteor - 从零开始创建一个 Web 应用
- Day 16: Goose Extractor - 好用的文章提取工具
- Day 17: 使用 JBoss Forge 和 OpenShift 构建部署 JAVA EE 6 应用
- Day 18: BoilerPipe - Java 开发者的文章提取工具
- Day 19: EmberJS 入门指南
- Day 20: 斯坦福 CoreNLP - 用 Java 给 Twitter 进行情感分析
- Day 21:Docker 入门教程
- Day 22: 使用 Spring、MongoDB 和 AngularJS 开发单页面应用
- Day 23:使用 TimelineJS 构建精美的时间轴
- Day 24: 使用 Yeoman 自动构建 Ember 项目
- Day 25: 联合 Tornado、MongoDB 和 AngularJS 进行应用开发
- Day 26: TogetherJS - 让我们一起来编程!
- Day 27: Restify - 在 Node.js 中构建正确的 REST Web 服务
- Day 28: OpenShift 的 Eclipse 集成
- Day 29:编写你的第一个 Google Chrome 扩展程序
- Day 30: Play Framework - Java 开发者的梦想框架
Day 23:使用 TimelineJS 构建精美的时间轴
确定今天的主题费了我不少工夫,我开始打算学习 brain ,后来又去看了看 Twitter Server ,但是我最后决定学习 TimelineJS。本文将介绍如何使用 TimelineJS 为一系列文章创建一个精美的时间轴。
TimelineJS 是什么?
TimelineJS 是一个开源库,可以帮助你创建精美、可交互的时间轴。它可以使用 Google 试算表或基于 JSON 的 REST 后端作为数据来源。它可以处理不同种类的内容,从多个来源获取媒体文件,包括:
- Google Plus
- Flickr
- Youtube , Vimeo , DailyMotion
- Google Maps
TimelineJS Demo
我今天构建的示例程序以时间轴的形式展示我的 《30 天学习 30 种新技术》 系列文章。它部署在 OpenShift 上,你可以 在此 访问。
用户访问应用的 /
时,将看到包括所有已发表文章的时间轴。这背后通过 REST(/api/v1/stories) 获取文章信息。
GitHub 仓库
今天的示例应用代码可以从 GitHub 获取。
两分钟内运行
这里假设你已经安装了 OpenShift 客户端工具。请参阅 OpenShift 文档获取安装信息 。
我们将开始创建名为 day23demo
的示例应用。
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}
(域名有时也被称为命名空间)。
应用部署完成后,你可以使用 curl
来创建新文章:
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>
这是今天的内容。要继续反馈哦~
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论