javascript
Day 8: Harp.JS——现代静态web服务器
到目前為止,我們的“30天學(xué)習(xí)30種技術(shù)”系列已經(jīng)討論了Bower、AngularJS和GruntJS。這些最新的技術(shù)可以幫助開(kāi)發(fā)者更高效地開(kāi)發(fā),也可以減輕開(kāi)發(fā)者的負(fù)擔(dān)。今天,我們將學(xué)習(xí)另一項(xiàng)新JavaScrit技術(shù),它叫做Harp。在本文中,我們將開(kāi)始了解Harp的基礎(chǔ),接著我們將創(chuàng)建一個(gè)簡(jiǎn)單的Harp應(yīng)用,最后將此應(yīng)用部署到OpenShift。
Harp是什么?
Harp是為現(xiàn)代web應(yīng)用準(zhǔn)備的開(kāi)源靜態(tài)服務(wù)器。它可以為Jade、Markdown、EJS、CoffeeScript、LESS、Stylus和HTML、CSS、Javascript提供服務(wù),無(wú)需任何配置。
由于越來(lái)越多的開(kāi)發(fā)轉(zhuǎn)向客戶端,開(kāi)發(fā)者們開(kāi)始使用替代語(yǔ)言,然后將其編譯為原生語(yǔ)言。比如,我們使用諸如Jade和EJS之類的模板庫(kù),而不是直接編寫HTML。同理,我們可以使用CoffeeScript,而不是直接寫JavaScript。至于樣式,我們可以用Stylus和LESS取代CSS。
Harp是零配置的服務(wù)器,用于為靜態(tài)資源提供服務(wù)。它內(nèi)置了對(duì) .jade、.markdow、.ejs、.coffee、.less、.styl和.html、.css、.js 的支持。
Harp依賴
Harp依賴于NodeJS和NPM包管理器(node.js安裝自帶NPM)。你可以從官網(wǎng)下載最新版的NodeJS。一旦安裝了node.js和NPM,就可以使用NPM安裝Harp。
安裝Harp
輸入如下命令安裝Harp。
npm install -g harp以上命令將全局安裝harp包,這樣在任何目錄都可以使用harp命令。
(取決于你系統(tǒng)的設(shè)置,你可能需要在命令前加上sudo。)
創(chuàng)建Harp項(xiàng)目
harp命令行讓我們可以方便地創(chuàng)建harp應(yīng)用。創(chuàng)建一個(gè)應(yīng)用,只需使用harp init命令。
harp init blog這會(huì)創(chuàng)建一個(gè)名為blog的目錄,結(jié)構(gòu)如下:
harp創(chuàng)建的項(xiàng)目默認(rèn)使用Jade(html)和LESS(css)。
啟動(dòng)Harp服務(wù)
我們可以使用harp server命令來(lái)運(yùn)行應(yīng)用:
$ 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/現(xiàn)在,訪問(wèn) http://localhost:9000/ 你會(huì)看到如下頁(yè)面:
https://www.openshift.com/sites/default/files/images/harp-sample-app.png
我們打開(kāi)index.jade文件,做一些改動(dòng):
h1 Welcome to Harp. h3 This is my blog. Enjoy.刷新一下瀏覽器,我們就能看到改動(dòng)了。
部署到云端
部署harp應(yīng)用有多種方式,詳見(jiàn)文檔。我將介紹如何部署到 OpenShift。
OpenShift是一個(gè)公開(kāi)的PAAS,你可以使用OpenShift免費(fèi)部署Java、NodeJS、Ruby、Python和PHP應(yīng)用。
在我們部署應(yīng)用到OpenShift之前,我們需要先設(shè)置一下:
注冊(cè)一個(gè)OpenShift賬號(hào)。注冊(cè)是完全免費(fèi)的,Red Hat給每個(gè)用戶三枚免費(fèi)的Gear,可以用Gear運(yùn)行你的應(yīng)用。在寫作此文的時(shí)候,每個(gè)用戶能免費(fèi)使用總共 1.5 GB 內(nèi)存和 3 GB 硬盤空間。
安裝 rhc客戶端工具。rhc是ruby gem,因此你的機(jī)子上需要裝有 ruby 1.8.7以上版本。 只需輸入 sudo gem install rhc即可安裝 rhc 。如果你已經(jīng)安裝過(guò)了,確保是最新版。運(yùn)行sudo gem update rhc即可升級(jí)。關(guān)于配置rhc命令行工具的詳細(xì)信息,請(qǐng)參考: https://openshift.redhat.com/community/developers/rhc-client-tools-install
使用 rhc 的 setup 命令配置你的 OpenShift 賬號(hào)。這個(gè)命令會(huì)幫助你創(chuàng)建一個(gè)命名空間,同時(shí)將你的ssh公鑰上傳至 OpenShift 服務(wù)器。
設(shè)置之后,我們可以通過(guò)如下命令創(chuàng)建一個(gè)新的OpenShift應(yīng)用。
rhc create-app blogonopenshift nodejs-0.10這會(huì)為我們創(chuàng)建一個(gè)名為gear的應(yīng)用容器,并自動(dòng)配置相應(yīng)的SELinux政策和cgroup設(shè)置。OpenShift同時(shí)會(huì)為我們創(chuàng)建一個(gè)私有的git倉(cāng)庫(kù),并將其克隆到本地。最后,OpenShift會(huì)自動(dòng)配置DNS。應(yīng)用可以在如下地址訪問(wèn)
http://blogonopenshift-{domain-name}.rhcloud.com/將{domain-name}替換為你自己的OpenShift域名(也叫命名空間)。
接著,跳轉(zhuǎn)到blogonopenshift文件夾,初始化一個(gè)新的harp項(xiàng)目。
cd blogonopenshift harp init _harp這會(huì)在blogonopenshift目錄的_harp文件夾中創(chuàng)建harp應(yīng)用。
修改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})在上面的例子中,我們創(chuàng)建了一個(gè)harp服務(wù)器的實(shí)例。我們把與該服務(wù)器綁定的OpenShift環(huán)境下的ip地址和端口號(hào)傳遞給它。在云環(huán)境中,建議使用環(huán)境變量,而不是寫死了的值。
如果你現(xiàn)在將代碼推送到OpenShift,它還不能工作。這是因?yàn)閔arp API沒(méi)有提供配置IP地址的選項(xiàng)。為此我在GitHub的harp倉(cāng)庫(kù)上開(kāi)了一個(gè)工單。就目前而言,我們需要打開(kāi)node_modules/harp/lib目錄下的index.js文件,修改下server函數(shù):
/*** 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) }本地提交代碼,然后推送變動(dòng)到云端。
git add . git commit -am "blogonopenshift app deployed to cloud" git push推送代碼之后,應(yīng)用被部署到OpenShift上,我們可以在http://blogonopenshift-{domain-name}.rhcloud.com上訪問(wèn)我們的應(yīng)用。我們的示例應(yīng)用跑在 http://blog-shekhargulati.rhcloud.com 上。
今天就這些了。我希望這會(huì)有用。請(qǐng)繼續(xù)反饋。
from: http://segmentfault.com/a/1190000000355181
總結(jié)
以上是生活随笔為你收集整理的Day 8: Harp.JS——现代静态web服务器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Day 7: GruntJS 在线重载
- 下一篇: Day 9: TextBlob——对文本