Harp.JS——现代静态web服务器
JavaScript
weakish
1人收藏 2041次学习

Harp.JS——现代静态web服务器

今天,我们将学习另一项新JavaScrit技术,它叫做Harp。在本文中,我们将开始了解Harp的基础,接着我们将创建一个简单的Harp应用,最后将此应用部署到OpenShift。

Harp是什么?

Harp是为现代web应用准备的开源静态服务器。它可以为Jade、Markdown、EJS、CoffeeScript、LESS、Stylus和HTML、CSS、Javascript提供服务,无需任何配置。

由于越来越多的开发转向客户端,开发者们开始使用替代语言,然后将其编译为原生语言。比如,我们使用诸如Jade和EJS之类的模板库,而不是直接编写HTML。同理,我们可以使用CoffeeScript,而不是直接写JavaScript。至于样式,我们可以用Stylus和LESS取代CSS。

Harp是零配置的服务器,用于为静态资源提供服务。它内置了对 .jade、.markdow、.ejs、.coffee、.less、.styl和.html、.css、.js 的支持。

 

Harp依赖

Harp依赖于NodeJS和NPM包管理器(node.js安装自带NPM)。你可以从官网下载最新版的NodeJS。一旦安装了node.js和NPM,就可以使用NPM安装Harp。

安装Harp

输入如下命令安装Harp。

npm install -g harp


以上命令将全局安装harp包,这样在任何目录都可以使用harp命令。

(取决于你系统的设置,你可能需要在命令前加上sudo。)

创建Harp项目

harp命令行让我们可以方便地创建harp应用。创建一个应用,只需使用harp init命令。

harp init blog

这会创建一个名为blog的目录,结构如下:

harp创建的项目默认使用Jade(html)和LESS(css)。

启动Harp服务

我们可以使用harp server命令来运行应用:

现在,访问 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之前,我们需要先设置一下:

  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 上。

加入1KE学习俱乐部

1KE学习俱乐部是只针对1KE学员开放的私人俱乐部
标签:
Web 开发 服务器