egg.js 如何使用?

前言


egg官网: https://eggjs.org/zh-cn/intro/quickstart.html
egg
是基于Koa 框架基础上实现的一个node框架

所有的NodeJS 框架最基本的核心就是通过原生库http or https启动一个后端服务http.createServer(this.serverCallBack()).listen(...arg), 然后所有的请求都会进入serverCallBack方法, 然后我们可以通过拦截,在这个方法中处理不同的请求

项目初始化


我们可以利用egg-init 的手脚架初始化一个项目, 我们可以运行如下命令创建了一个egg-example项目


$ mkdir egg-example && cd egg-example
$ npm init egg --type=simple
$ npm i

启动项目:

$ npm run dev
$ open localhost:7001

 

我们可以用npm run dev 启动项目.然后浏览器输入localhost:7001,就可以看到页面显示:

hi, egg.

说明项目已经启动成功!我们现在可以学习下egg项目生成的相关代码。其代码文件结构如下:

启动项目,然后浏览器输入:localhost:7001  看到显示 : Hi , egg  表示项目启动成功!

项目目录长这样:

 

设置路由


我们来看下上述文件红色框框标红的两个文件:

先看下router.js文件,从字面意义上我们可以理解为一个路由的入口文件:

'use strict';

/**
 * @param {Egg.Application} app - egg application
 */
module.exports = app => {
  const {
    router,
    controller
  } = app;
  router.get('/', controller.home.index);
  router.get('/user', controller.home.getUser);
};

这个文件暴露了一个方法, router.get('/', controller.home.index);, 从这个get 方法的第二个参数,可以指向的是Controller 文件里面的home.js 文件中的index 方法,我们可以尝试修改下home.js 中的this.ctx.body = 'hi, egg -> hello world!';, 然后重新运行npm run dev, 发现页面显示变成了hello world!

设置Service


在我们的控制层controller 中,都是静态的内容, 一个项目我们需要跟数据库交互,我们一般将跟数据交互的内容,都放在service 层,下面我们就设置一下service:

首先在app目录下面,创建一个service 目录, 然后创建 home.js文件, 创建好的目录 如下:

具体操作:

首先我们在app目录下创建一个data文件夹,然后再data中创建一个user.json的文件用于存储数据:

[{
    "id": 1,
    "parent_id": 0,
    "menu_name": "用户管理",
    "sorting": 0,
    "node": [{
        "id": 2,
        "parent_id": 1,
        "menu_name": "个人设置",
        "sorting": 0,
        "node": [{
            "id": 3,
            "parent_id": 2,
            "menu_name": "用户信息",
            "sorting": 1
        }]
    }]
}]

接下来编写一下service中的home.js文件:

'use strict';

const Service = require('egg').Service;
const users = require('../data/user.json');

class HomeService extends Service {
    async index() {
        return 'hello world';
    }

    async getUser() {
        return users;
    }
}

module.exports = HomeService;

 

最后修改一下controller中的home.js文件:

'use strict';

const Controller = require('egg').Controller;

class HomeController extends Controller {
  async index() {
    this.ctx.body = await this.service.home.index();
  }

  async getUser() {
    this.ctx.body = await this.service.home.getUser();
  }
}

module.exports = HomeController;

最后的最后! 重启一下!

浏览器中输入:localhost:7001,页面显示 “hello world”!

浏览器中输入:localhost:7001/user,页面显示刚刚data中定义的user.json文件中的内容!

Egg.js项目中配置SSL涉及到几个关键步骤,特别是如果你使用的是Nginx作为反向代理服务器。这里是一个基本的示例: **1. 创建SSL证书文件** 首先,你需要生成SSL证书和私钥,通常你可以通过Let's Encrypt或者购买商业证书来做。将生成的`server.crt`(公钥)和`server.key`(私钥)文件保存到项目的某个目录下。 **2. 配置Nginx** 如果你的服务器使用Nginx,需要编辑Nginx的配置文件(比如`nginx.conf`或`sites-available`下的站点配置)。添加一个新的虚拟主机(server block),例如: ```nginx server { listen 443 ssl; server_name your_domain.com; ssl_certificate /path/to/server.crt; ssl_certificate_key /path/to/server.key; # ...其他Nginx配置... location / { proxy_pass http://your_egg_app_host:port; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } ``` 记得替换`your_domain.com`和`your_egg_app_host`。 **3. 配置Egg应用** 在Egg.js应用的配置文件(如`config/config.default.js`)中,设置HTTPS相关的选项,例如端口: ```javascript module.exports = { // ... port: process.env.PORT || 7001, https: { enable: true, keyPath: '/path/to/server.key', // 私钥路径 certPath: '/path/to/server.crt', // 公钥路径 ca: ["/path/to/ca.pem"], // 如果有CA证书 ciphers: 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECCAES:RSA:AES:HIGH:!NULL:!aNULL', secureOptions: ['SSL_OP_NO_TLSv1_0', 'SSL_OP_NO_TLSv1_1'] }, // ... }; ``` **4. 启动应用** 最后,重启Egg应用使其读取新的配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值