[譯] 第八天: Harp.JS - 新型靜態Web服務器

前言

到目前爲止,30天學習30種技術的挑戰,咱們已經涉及了Bower, AngualrJSGruntJSJavaScript技術。這些最新的技術專爲開發者制定,讓工做變得更輕鬆,提升生產力。今天咱們來學習另外一個新技術Harp. 這篇博客,咱們從Harp基礎開始,再建個簡單的Harp程序,最後發佈到OpenShift上。css

什麼是Harp?

Harp是新型Web程序的開源靜態Web服務器,能夠爲Jade, Markdown, EJS, CoffeeScript, LESS, 做爲HTMLStylus, CSS JavaScript服務,且不須要配置。html

 

隨着愈來愈多的開發轉向了客戶端,開發者開始選擇替代語言,選擇那些編譯成原生語言的技術。例如,不直接寫HTML而是用Jade或者EJS這樣的模板庫,一樣,CoffeeScript能夠是JavaScript的替代,對於格式,StylusLESS能夠是CSS的替代。node

 

Harp不須要任何Web 服務器配置,用於服務靜態資源,爲服務.jade, .mardown, .ejs, .coffee, .less, 做爲.html .style, .css .js 內置資源管道。git

Harp的前提準備

Harp須要NodeJS Node.js安裝時自帶的NPM 包管理器,你能夠從官網下載最新的NodeJS, 當你裝完node.jsNPM後,就能夠用NPM系統來安裝Harp.github

安裝Harp

安裝Harp,只需輸入如下命令。web

$ npm install -g harp

這個命令會全局安裝harp包,使harp命令在任何路徑可用。npm

建立Harp項目

Harp命令使得咱們能建立示例harp應用,只需輸入harp init 命令。json

$ harp init blog

 

這樣就在文件系統上建立了一個blog的路徑,它有如下結構。瀏覽器

這個示例是harp建立的,爲HTML用了Jade模板引擎,CSS用了less.ruby

啓用Harp服務器

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上發佈應用以前,先作如下步驟:

  1. OpenShift      Account上註冊。 OpenShift徹底免費,紅帽給每一個用戶免費提供了3個Gears來運行程序。目前,這個資源分配合計有每人1.5GB內存,3GB磁盤空間。
  2. 在本機安裝rhc 客戶端工具,rhc是ruby gem包,因此你須要安裝1.8.7或以上版本的ruby。安裝rhc,輸入
 sudo gem install rhc

若是已經安裝了,確保是最新的,要更新rhc,輸入

sudo gem update rhc

想了解rhc command-line 工具,更多幫助參考https://openshift.redhat.com/community/developers/rhc-client-tools-install

  1. 用rhc 安裝命令安裝OpenShift. 執行命令能夠幫你建立空間,上傳ssh 密鑰到OpenShift服務器。

安裝以後,咱們能夠運行如下命令來建立程序。

$ 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

相關文章
相關標籤/搜索