[译] 第八天: Harp.JS - 新型静态Web服务器

前言

到目前为止,30天学习30种技术的挑战,我们已经涉及了Bower, AngualrJSGruntJSJavaScript技术。这些最新的技术专为开发者制定,让工作变得更轻松,提高生产力。今天我们来学习另一个新技术Harp. 这篇博客,我们从Harp基础开始,再建个简单的Harp程序,最后发布到OpenShift上。

[译] 第八天: Harp.JS - 新型静态Web服务器

什么是Harp?

Harp是新型Web程序的开源静态Web服务器,可以为Jade, Markdown, EJS, CoffeeScript, LESS, 作为HTMLStylus, CSS JavaScript服务,且不需要配置。

 

随着越来越多的开发转向了客户端,开发者开始选择替代语言,选择那些编译成原生语言的技术。例如,不直接写HTML而是用Jade或者EJS这样的模板库,同样,CoffeeScript可以是JavaScript的替代,对于格式,StylusLESS可以是CSS的替代。

 

Harp不需要任何Web 服务器配置,用于服务静态资源,为服务.jade, .mardown, .ejs, .coffee, .less, 作为.html .style, .css .js 内置资源管道。

Harp的前提准备

Harp需要NodeJS Node.js安装时自带的NPM 包管理器,你可以从官网下载最新的NodeJS, 当你装完node.jsNPM后,就可以用NPM系统来安装Harp.

安装Harp

安装Harp,只需输入以下命令。

$ npm install -g harp

这个命令会全局安装harp包,使harp命令在任何路径可用。

创建Harp项目

Harp命令使得我们能创建示例harp应用,只需输入harp init 命令。

$ harp init blog

 

这样就在文件系统上创建了一个blog的路径,它有以下结构。

[译] 第八天: Harp.JS - 新型静态Web服务器

这个示例是harp创建的,为HTML用了Jade模板引擎,CSS用了less.

启用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/查看程序运行。

[译] 第八天: Harp.JS - 新型静态Web服务器

打开index.jade,做以下更改。

h1 Welcome to Harp.

h3 This is my blog. Enjoy.

刷新浏览器可以看到更新。

[译] 第八天: Harp.JS - 新型静态Web服务器

发布到云上

介绍里面有几个可选方式发布程序,我来演示一下怎样发布到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

你可能感兴趣的:(web服务器)