- 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 8: Harp.JS - 现代静态 web 服务器
到目前为止,我们的 “30 天学习 30 种技术” 系列已经讨论了 Bower 、 AngularJS 和 GruntJS 。这些最新的技术可以帮助开发者更高效地开发,也可以减轻开发者的负担。今天,我们将学习另一项新 JavaScrit 技术,它叫做 Harp。在本文中,我们将开始了解 Harp 的基础,接着我们将创建一个简单的 Harp 应用,最后将此应用部署到 OpenShift。
Harp 是什么?
Harp 是为现代 web 应用准备的开源静态服务器。它可以为 Jade、Markdown、EJS、CoffeeScript、LESS、Stylus 和 HTML、CSS、Javascript 提供服务,无需任何配置。
由于越来越多的开发转向客户端,开发者们开始使用替代语言,然后将其编译为原生语言。比如,我们使用诸如 Jade 和 EJS 之类的模板库,而不是直接编写 HTML。同理,我们可以使用 CoffeeScript,而不是直接写 JavaScript。至于样式,我们可以用 Stylus 和 LESS 取代 CSS。
Harp 是零配置的服务器,用于为静态资源提供服务。它内置了对 .jade
、 .markdow
、 .ejs
、 .coffee
、 .less
、 .styl
和 .html
、 .css
、 .js
的支持。
Harp 依赖
Harp 依赖于 NodeJS 和 NPM 包管理器(node.js 安装自带 NPM)。你可以从 官网 下载最新版的 NodeJS。一旦安装了 node.js 和 NPM,就可以使用 NPM 安装 Harp。
安装 Harp
输入如下命令安装 Harp。
npm install -g harp
以上命令将全局安装 harp 包,这样在任何目录都可以使用 harp
命令。
(取决于你系统的设置,你可能需要在命令前加上 sudo
。)
创建 Harp 项目
harp
命令行让我们可以方便地创建 harp 应用。创建一个应用,只需使用 harp init
命令。
harp init blog
这会创建一个名为 blog
的目录,结构如下:
harp 创建的项目默认使用 Jade(html) 和 LESS(css)。
启动 Harp 服务
我们可以使用 harp server
命令来运行应用:
$ cd blog
$ harp server
_____ _____ _____ _____
/l l /l l /l l /l l
/::l____l /::l l /::l l /::l l
/:::/ / /::::l l /::::l l /::::l l
/:::/ / /::::::l l /::::::l l /::::::l l
/:::/ / /:::/l:::l l /:::/l:::l l /:::/l:::l l
/:::/____/ /:::/__l:::l l /:::/__l:::l l /:::/__l:::l l
/::::l l /::::l l:::l l /::::l l:::l l /::::l l:::l l
/::::::l l _____ /::::::l l:::l l /::::::l l:::l l /::::::l l:::l l
/:::/l:::l l /l l /:::/l:::l l:::l l /:::/l:::l l:::l____l /:::/l:::l l:::l____l
/:::/ l:::l /::l____l/:::/ l:::l l:::l____l/:::/ l:::l l:::| |/:::/ l:::l l:::| |
l::/ l:::l /:::/ /l::/ l:::l /:::/ /l::/ |::::l /:::|____|l::/ l:::l /:::|____|
l/____/ l:::l/:::/ / l/____/ l:::l/:::/ / l/____|:::::l/:::/ / l/_____/l:::l/:::/ /
l::::::/ / l::::::/ / |:::::::::/ / l::::::/ /
l::::/ / l::::/ / |::|l::::/ / l::::/ /
/:::/ / /:::/ / |::| l::/____/ l::/____/
/:::/ / /:::/ / |::| ~| ~~
/:::/ / /:::/ / |::| |
/:::/ / /:::/ / l::| | Harp v0.9.4
l::/ / l::/ / l:| | Static Web Server
l/____/ l/____/ l|___| By Chloi Inc. 2012-2013
Your server is listening at http://localhost:9000/
现在,访问 http://localhost:9000/ 你会看到如下页面:
https://www.openshift.com/sites/default/files/images/harp-sample-app.png
我们打开 index.jade
文件,做一些改动:
h1 Welcome to Harp.
h3 This is my blog. Enjoy.
刷新一下浏览器,我们就能看到改动了。
部署到云端
部署 harp 应用有多种方式,详见 文档 。我将介绍如何部署到 OpenShift 。
OpenShift 是一个公开的 PAAS,你可以使用 OpenShift 免费部署 Java、NodeJS、Ruby、Python 和 PHP 应用。
在我们部署应用到 OpenShift 之前,我们需要先设置一下:
- 注册一个 OpenShift 账号 。注册是完全免费的,Red Hat 给每个用户三枚免费的 Gear,可以用 Gear 运行你的应用。在写作此文的时候,每个用户能免费使用总共 1.5 GB 内存和 3 GB 硬盘空间。
- 安装 rhc 客户端工具 。
rhc
是 ruby gem,因此你的机子上需要装有 ruby 1.8.7 以上版本。 只需输入sudo gem install rhc
即可安装 rhc 。如果你已经安装过了,确保是最新版。运行sudo gem update rhc
即可升级。关于配置 rhc 命令行工具的详细信息,请参考: https://openshift.redhat.com/community/developers/rhc-client-tools-install - 使用 rhc 的 setup 命令配置你的 OpenShift 账号。这个命令会帮助你创建一个命名空间,同时将你的 ssh 公钥上传至 OpenShift 服务器。
设置之后,我们可以通过如下命令创建一个新的 OpenShift 应用。
rhc create-app blogonopenshift nodejs-0.10
这会为我们创建一个名为 gear 的应用容器,并自动配置相应的 SELinux 政策和 cgroup 设置。OpenShift 同时会为我们创建一个私有的 git 仓库,并将其克隆到本地。最后,OpenShift 会自动配置 DNS。应用可以在如下地址访问
http://blogonopenshift-{domain-name}.rhcloud.com/
将 {domain-name}
替换为你自己的 OpenShift 域名(也叫命名空间)。
接着,跳转到 blogonopenshift 文件夹,初始化一个新的 harp 项目。
cd blogonopenshift
harp init _harp
这会在 blogonopenshift 目录的 _harp
文件夹中创建 harp 应用。
修改 blogonopenshift 目录中的 package.json
,添加 harp 依赖。
{
"dependencies": {
"harp" : ">=0.8"
}
}
然后,使用 NPM 安装依赖:
npm install
接着修改 server.js
:
require('harp').server("_harp", { ip : process.env.OPENSHIFT_NODEJS_IP, port: process.env.OPENSHIFT_NODEJS_PORT})
在上面的例子中,我们创建了一个 harp 服务器的实例。我们把与该服务器绑定的 OpenShift 环境下的 ip 地址和端口号传递给它。在云环境中,建议使用环境变量,而不是写死了的值。
如果你现在将代码推送到 OpenShift,它还不能工作。这是因为 harp API 没有提供配置 IP 地址的选项。为此我在 GitHub 的 harp 仓库上开了一个 工单 。就目前而言,我们需要打开 node_modules/harp/lib
目录下的 index.js
文件,修改下 server
函数:
/**
* Server
*
* Host a single Harp Application.
*
*/
exports.server = function(dirPath, options, callback){
connect.createServer(
middleware.regProjectFinder(dirPath),
middleware.setup,
middleware.underscore,
middleware.mwl,
middleware.static,
middleware.poly,
middleware.process,
middleware.fallback
).listen(options.port,options.ip , callback)
}
本地提交代码,然后推送变动到云端。
git add .
git commit -am "blogonopenshift app deployed to cloud"
git push
推送代码之后,应用被部署到 OpenShift 上,我们可以在 http://blogonopenshift-{domain-name}.rhcloud.com
上访问我们的应用。我们的示例应用跑在 http://blog-shekhargulati.rhcloud.com 上。
今天就这些了。我希望这会有用。请继续反馈。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论