Skip to content

Latest commit

 

History

History
304 lines (245 loc) · 6.69 KB

File metadata and controls

304 lines (245 loc) · 6.69 KB

Hello World

Run with babel-node

  • Step 1: Checkout the code

check out the code.

git clone https://github.com/easynode/easynode-template.git

git branch -r   //show remote branchs


hujiabaos-MacBook-Pro:easynode-template hujiabao$ git branch -r
  origin/HEAD -> origin/master
  origin/helloworld
  origin/master


git checkout origin/helloworld
  • Step 2: Generate Scaffolding

By running sh init_project.sh to generate scaffolding, In the making the scaffolding, it will ask you to enter the below four parameters to replace the below macro definistions:{COMPANY},{PROJECT},{AUTHOR},{PORT}

  • compnay'name (dot disallowed)
  • project name (dot disallowed)
  • web port
  • author name
current working directory is :
/Users/hujiabao/workspace_docker/easynode-template/easynode-template/easynode-template/easynode-template
now it is:
Wed Jun 15 21:13:08 CST 2016
welcome to easnynode!
Please input company'name:
netease
Please input project'name:
stock
Please input http server's port:
8899
Please input author's name:
hjb
Company: netease
Project: monitor
AUTHOR: hjb
PORT: 8899
  • Step 3: Install the dependencies

In the same directory as the file package.json, run npm install

  • Step 4: Run Hello World
cd bin
sh dev_start.sh

You open the http:://127.0.0.1:8899 in the browser, You will see the output "Hello World!"

Files Descriptions

  • plugins/views/index.html

This is a simple static page

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	Hello World!
</body>
</html>
  • netease.monitor.backend.controllers.Controllers.js
var assert = require('assert');
var logger = using('easynode.framework.Logger').forFile(__filename);
var GenericObject = using('easynode.GenericObject');
var fs = require('co-fs');
var FileService =  using('easynode.framework.util.FileService');
var multipart = require('co-multipart');
var f =  require('fs');
var util = require('util');
var thunkify = require('thunkify');

(function () {
    /**
     * Class Controllers
     *
     * @class netease.monitor.backend.controllers.Controllers
     * @extends easynode.GenericObject
     * @since 0.1.0
     * @author allen.hu
     * */
    class Controllers extends GenericObject
    {
        /**
         * 构造函数。
         *
         * @method 构造函数
         * @since 0.1.0
         * @author allen.hu
         * */
        constructor()
        {
            super();
            //调用super()后再定义子类成员。
        }


        /**
         * @api:
         * @apiDescription: 首页
         * @apiName {}
         * @apiGroup {}
         * @apiPermission {}
         * @apiSuccess {} {} {}
         * @apiVersion {}
         * */
        static home(app){
            return function *(){
                yield this.render('index',{});
            }
        }


        getClassName()
        {
            return EasyNode.namespace(__filename);
        }
    }

    module.exports = Controllers;
})();
  • netease.monitor.backend.routes.Routes.js
'use strict'

var assert = require('assert');
var logger = using('easynode.framework.Logger').forFile(__filename);
var GenericObject = using('easynode.GenericObject');
var S = require('string');
var thunkify = require('thunkify');

import Controllers from '../controllers/Controllers';


(function () {
    /**
     * Class Routes
     *
     * @class netease.monitor.backend.routes.Routes
     * @extends easynode.GenericObject
     * @since 0.1.0
     * @author allen.hu
     * */
    class Routes extends GenericObject
    {
        /**
         * 构造函数。
         *
         * @method 构造函数
         * @since 0.1.0
         * @author allen.hu
         * */
        constructor()
        {
            super();
            //调用super()后再定义子类成员。
        }

        static defineRoutes(httpServer)
        {
            Routes.addRoute(httpServer);

            httpServer.addTemplateDirs('plugins/views');
        }

        static addRoute(httpServer)
        {
            httpServer.addRoute('get', '/', Controllers.home(httpServer));
        }

        getClassName()
        {
            return EasyNode.namespace(__filename);
        }
    }

    module.exports  = Routes;
})();
  • netease.monitor.backend.Main.js
var assert = require('assert');
var logger = using('easynode.framework.Logger').forFile(__filename);
var GenericObject = using('easynode.GenericObject');
var S = require('string');
var thunkify = require('thunkify');
var Routes = using('netease.monitor.backend.routes.Routes');
var MySqlDataSource = using('easynode.framework.db.MysqlDataSource');
var HTTPUtil =  using('easynode.framework.util.HTTPUtil');

(function () {
    /**
     * Class Main
     *
     * @class netease.monitor.backend.Main
     * @extends easynode.GenericObject
     * @since 0.1.0
     * @author allen.hu
     * */
    class Main extends GenericObject
    {
        /**
         * 构造函数。
         *
         * @method 构造函数
         * @since 0.1.0
         * @author allen.hu
         * */
        constructor()
        {
            super();
            //调用super()后再定义子类成员。
        }

        static * main(){

            //HTTP Server
            var KOAHttpServer =  using('easynode.framework.server.http.KOAHttpServer');
            var httpPort = S(EasyNode.config('http.server.port','7000')).toInt();
            var httpServer = new KOAHttpServer(httpPort);

            //设置ContextHook,
            httpServer.setActionContextListener({
                onCreate: function (ctx) {
                    console.log("onCreate");
                    return function * () {
                    };
                },
                onDestroy: function (ctx) {
                    console.log("onDestroy");
                    return function * () {

                    };
                },

                onError: function (ctx, err) {
                    console.log("onError");
                    return function * () {
                    };
                }
            });

            httpServer.name = EasyNode.config('http.server.name','netease-monitor-Service');
            Routes.defineRoutes(httpServer);
            yield httpServer.start();
        }

        getClassName()
        {
            return EasyNode.namespace(__filename);
        }
    }

    module.exports = Main;
})();

Run with node in the container

  • Step 1: Build the image
docker build -t easynode-helloworld:0.0.1 .
  • Step 2: Run the container
docker run -d --net=host -e PORT=8899 easynode-helloworld:0.0.1 sh start.sh
  • Step 3: See the output

You open the http:://127.0.0.1:8899 in the browser, You will see the output "Hello World!"