天天看点

徒手搭建一个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标准,但是各种规定也是挺麻烦的。我在想要不要继续用它了…

继续阅读