Day 8: Harp.JS——現代靜態web服務器

編者注:咱們發現了比較有趣的系列文章《30天學習30種新技術》,準備翻譯,一天一篇更新,年終禮包。下面是第8天的內容。javascript


到目前爲止,咱們的「30天學習30種技術」系列已經討論了BowerAngularJSGruntJS。這些最新的技術能夠幫助開發者更高效地開發,也能夠減輕開發者的負擔。今天,咱們將學習另外一項新JavaScrit技術,它叫作Harp。在本文中,咱們將開始瞭解Harp的基礎,接着咱們將建立一個簡單的Harp應用,最後將此應用部署到OpenShift。css

Harp

Harp是什麼?

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依賴

Harp依賴於NodeJS和NPM包管理器(node.js安裝自帶NPM)。你能夠從官網下載最新版的NodeJS。一旦安裝了node.js和NPM,就可使用NPM安裝Harp。git

安裝Harp

輸入以下命令安裝Harp。github

npm install -g harp

以上命令將全局安裝harp包,這樣在任何目錄均可以使用harp命令。web

(取決於你係統的設置,你可能須要在命令前加上sudo。)npm

建立Harp項目

harp命令行讓咱們能夠方便地建立harp應用。建立一個應用,只需使用harp init命令。json

harp init blog

這會建立一個名爲blog的目錄,結構以下:

harp app structure

harp建立的項目默認使用Jade(html)和LESS(css)。

啓動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/ 你會看到以下頁面:

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-server-change-reload

部署到雲端

部署harp應用有多種方式,詳見文檔。我將介紹如何部署到 OpenShift

OpenShift是一個公開的PAAS,你可使用OpenShift免費部署Java、NodeJS、Ruby、Python和PHP應用。

在咱們部署應用到OpenShift以前,咱們須要先設置一下:

  1. 註冊一個OpenShift帳號。註冊是徹底免費的,Red Hat給每一個用戶三枚免費的Gear,能夠用Gear運行你的應用。在寫做此文的時候,每一個用戶能無償使用總共 1.5 GB 內存和 3 GB 硬盤空間。

  2. 安裝 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

  3. 使用 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 上。

今天就這些了。我但願這會有用。請繼續反饋。

相關文章
相關標籤/搜索