到目前爲止,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