到目前为止,30天学习30种技术的挑战,我们已经涉及了Bower, AngualrJS和GruntJSJavaScript技术。这些最新的技术专为开发者制定,让工作变得更轻松,提高生产力。今天我们来学习另一个新技术Harp. 这篇博客,我们从Harp基础开始,再建个简单的Harp程序,最后发布到OpenShift上。
Harp是新型Web程序的开源静态Web服务器,可以为Jade, Markdown, EJS, CoffeeScript, LESS, 作为HTML的Stylus, CSS 和JavaScript服务,且不需要配置。
随着越来越多的开发转向了客户端,开发者开始选择替代语言,选择那些编译成原生语言的技术。例如,不直接写HTML而是用Jade或者EJS这样的模板库,同样,CoffeeScript可以是JavaScript的替代,对于格式,Stylus和LESS可以是CSS的替代。
Harp不需要任何Web 服务器配置,用于服务静态资源,为服务.jade, .mardown, .ejs, .coffee, .less, 作为.html 的.style, .css和 .js 内置资源管道。
Harp需要NodeJS 和Node.js安装时自带的NPM 包管理器,你可以从官网下载最新的NodeJS, 当你装完node.js和NPM后,就可以用NPM系统来安装Harp.
安装Harp,只需输入以下命令。
$ npm install -g harp
这个命令会全局安装harp包,使harp命令在任何路径可用。
Harp命令使得我们能创建示例harp应用,只需输入harp init 命令。
$ harp init blog
这样就在文件系统上创建了一个blog的路径,它有以下结构。
这个示例是harp创建的,为HTML用了Jade模板引擎,CSS用了less.
用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