编者注:咱们发现了比较有趣的系列文章《30天学习30种新技术》,准备翻译,一天一篇更新,年终礼包。下面是第8天的内容。javascript
到目前为止,咱们的“30天学习30种技术”系列已经讨论了Bower、AngularJS和GruntJS。这些最新的技术能够帮助开发者更高效地开发,也能够减轻开发者的负担。今天,咱们将学习另外一项新JavaScrit技术,它叫作Harp。在本文中,咱们将开始了解Harp的基础,接着咱们将建立一个简单的Harp应用,最后将此应用部署到OpenShift。css
Harp是为现代web应用准备的开源静态服务器。它能够为Jade、Markdown、EJS、CoffeeScript、LESS、Stylus和HTML、CSS、Javascript提供服务,无需任何配置。html
因为愈来愈多的开发转向客户端,开发者们开始使用替代语言,而后将其编译为原生语言。好比,咱们使用诸如Jade和EJS之类的模板库,而不是直接编写HTML。同理,咱们可使用CoffeeScript,而不是直接写JavaScript。至于样式,咱们能够用Stylus和LESS取代CSS。java
Harp是零配置的服务器,用于为静态资源提供服务。它内置了对 .jade
、.markdow
、.ejs
、.coffee
、.less
、.styl
和.html
、.css
、.js
的支持。node
Harp依赖于NodeJS和NPM包管理器(node.js安装自带NPM)。你能够从官网下载最新版的NodeJS。一旦安装了node.js和NPM,就可使用NPM安装Harp。git
输入以下命令安装Harp。github
npm install -g harp
以上命令将全局安装harp包,这样在任何目录均可以使用harp
命令。web
(取决于你系统的设置,你可能须要在命令前加上sudo
。)npm
harp
命令行让咱们能够方便地建立harp应用。建立一个应用,只需使用harp init
命令。json
harp init blog
这会建立一个名为blog
的目录,结构以下:
harp建立的项目默认使用Jade(html)和LESS(css)。
咱们可使用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 上。
今天就这些了。我但愿这会有用。请继续反馈。