到目前为止,30天学习30种技术的挑战,咱们已经涉及了Bower, AngualrJS和GruntJSJavaScript技术。这些最新的技术专为开发者制定,让工做变得更轻松,提升生产力。今天咱们来学习另外一个新技术Harp. 这篇博客,咱们从Harp基础开始,再建个简单的Harp程序,最后发布到OpenShift上。css
Harp是新型Web程序的开源静态Web服务器,能够为Jade, Markdown, EJS, CoffeeScript, LESS, 做为HTML的Stylus, CSS 和JavaScript服务,且不须要配置。html
随着愈来愈多的开发转向了客户端,开发者开始选择替代语言,选择那些编译成原生语言的技术。例如,不直接写HTML而是用Jade或者EJS这样的模板库,一样,CoffeeScript能够是JavaScript的替代,对于格式,Stylus和LESS能够是CSS的替代。node
Harp不须要任何Web 服务器配置,用于服务静态资源,为服务.jade, .mardown, .ejs, .coffee, .less, 做为.html 的.style, .css和 .js 内置资源管道。git
Harp须要NodeJS 和Node.js安装时自带的NPM 包管理器,你能够从官网下载最新的NodeJS, 当你装完node.js和NPM后,就能够用NPM系统来安装Harp.github
安装Harp,只需输入如下命令。web
$ npm install -g harp
这个命令会全局安装harp包,使harp命令在任何路径可用。npm
Harp命令使得咱们能建立示例harp应用,只需输入harp init 命令。json
$ harp init blog
这样就在文件系统上建立了一个blog的路径,它有如下结构。浏览器
这个示例是harp建立的,为HTML用了Jade模板引擎,CSS用了less.ruby
用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/查看程序运行。
打开index.jade,作如下更改。
h1 Welcome to Harp.
h3 This is my blog. Enjoy.
刷新浏览器能够看到更新。
在介绍里面有几个可选方式发布程序,我来演示一下怎样发布到OpenShift上。
OpenShift是一个开源服务平台。能够免费发布Java, Python, Node.js或者PHP程序。
在OpenShift上发布应用以前,先作如下步骤:
sudo gem install rhc
若是已经安装了,确保是最新的,要更新rhc,输入
sudo gem update rhc
想了解rhc command-line 工具,更多帮助参考https://openshift.redhat.com/community/developers/rhc-client-tools-install。
安装以后,咱们能够运行如下命令来建立程序。
$ rhc create-app blogonopenshift nodejs-0.10
这会建立一个程序容器,叫gear,安装所需的SELinux策略和cgroup配置。OpenShift也会为你安装一个私有的git仓库,并克隆到本地。最后,OpenShift会把DNS 扩散到网络中。程序可访问http://linkbin-domain-name.rhcloud.com/.替换你本身惟一的OpenShift域名(有时也叫命名空间)。
而后,更改路径到blogonopenshift文件夹,初始化一个新的harp项目。
$ cd blogonopenshift
$ harp init _harp
这会在blogonopenshift路径下的_harp文件夹下建立一个示例harp程序。
用harp依赖更新blogonopenshift路径下的.json包。
{ "dependencies": { "harp" : ">=0.8" } }
而后用Node包管理器安装依赖。
$ 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的选择。我已经在harp github repository上提出了这个问题,目前,打开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仓库执行代码,再把更新推送到云上。
$ git add . $ git commit -am "blogonopenshift app deployed to cloud" $ git push
推送以后,应用就在OpenShift上发布了,咱们能够看到程序运行在http://blogonopenshift-{domain-name}.rhcloud.com,个人示例程序是http://blog-shekhargulati.rhcloud.com。
这是今天的内容,但愿有帮助,继续给反馈吧。
原文:https://www.openshift.com/blogs/day-8-harpjs-the-modern-static-web-server