編者注:咱們發現了比較有趣的系列文章《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 上。
今天就這些了。我但願這會有用。請繼續反饋。