• [译] 第八天: 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

  • 相关阅读:
    洛谷P3796
    cf1291c-Mind Control
    莫比乌斯函数
    C. Mixing Water(三分)
    E. Modular Stability(思维构造)
    【美团杯2020】平行四边形
    原根定义
    E. Are You Fired?(思维)
    102606C. Coronavirus Battle time limit per test4 seconds(三维拓扑序)
    E
  • 原文地址:https://www.cnblogs.com/endless-on/p/3482663.html
Copyright © 2020-2023  润新知