[译] 第八天: Harp.JS

前言

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

什么是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创建的,为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/查看程序运行。

打开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

原文地址:https://www.cnblogs.com/endless-on/p/3482663.html