天天看點

徒手搭建一個node-egg服務端-1

首先講講思路,我要基于什麼架構呢,

首先講一下我的需求

  • 我需要一個node服務端,并且是可以拓展的
  • 我要安全度還可以點的
  • 我需要比較新的東西,也是拿來學習的,之前會一些express
  • 不會其他語言..

看了看人家說的

Express 簡單、實用,路由中間件等五髒俱全    最著名的Web架構
Derby.js && Meteor  同構  前後端都放到一起,模糊了開發便捷,看上去更簡單,實際上上對開發來說要求更高
Sails、Total 面向其他語言,Ruby、PHP等    借鑒業界優秀實作,也是 Node.js 成熟的一個标志
MEAN.js 面向架構    類似于腳手架,又期望同構,結果隻是蹭了熱點
Hapi和Restfy 面向Api && 微服務    移動網際網路時代Api的作用被放大,故而獨立分類。尤其是對于微服務開發更是利器
ThinkJS 面向新特性   借鑒ThinkPHP,并慢慢走出自己的一條路,對于Async函數等新特性支援,無出其右
Koa 專注于異步流程改進   下一代Web架構
Egg 基于Koa,在開發上有極大便利 企業級Web開發架構
           

看了一下感覺egg最屌,那我就用EGG!第一次聽…

首先甩一個官方api,看看快速入門http://eggjs.org/zh-cn/intro/quickstart.html,然後熟悉一下基礎子產品。其實架構大多都差不多,看你業務需求去選架構就可以了。

第一章,開始入門

需要準備的東西

node 最新版本的最好大于8.9,并且最好使用LTS版本
           
  • 我們先跟着快速入門操作一下
    $ npm i egg-init -g
    $ egg-init egg-example --type=simple
    $ cd egg-example
    $ npm I
               
  • 啟動項目:
    $ npm run dev
               
    浏覽器打開 localhost:7001就可以看到 hi, egg
  • hello world的編寫

去目錄 app/controller/home.js裡面,可以看到

'use strict';
const Controller = require('egg').Controller;
class HomeController extends Controller {
  async index() {
     this.ctx.body = 'hi, egg';
     }
 }
module.exports = HomeController;
           

我們把 this.ctx.body = ‘hi, egg’; 替換成hello-world就可以了。但是他的作用是什麼呢?

不着急我們接着往下面看

  • 配置路由映射:// app/router.js
    module.exports = app => {
      const { router, controller } = app;
      router.get('/', controller.home.index);
    };
               

這時候應該就恍然大悟了,get監聽了 / ,然後給他轉到 controller.home.index,然後index方法給我們傳回了hello-world

  • 再看看目錄結構
    egg-example
    ├── app
    │   ├── controller
    │   │   └── home.js
    │   └── router.js
    ├── config
    │   └── config.default.js
    └── package.json
               

最後通看了一遍,發現這個架構确實比express标準,但是各種規定也是挺麻煩的。我在想要不要繼續用它了…

繼續閱讀