egg简单的使用

一.创建项目

1.项目地址 cd egg-example
2. npm init egg --type=simple
3. npm i
4.启动项目: npm run dev
$ open: http://localhost:7001

二.项目结构

    // 这是一个 egg 项目的目录结构
	├──app
	│  ├──controller
	│  │   └──home.js
	│  ├──service
	│  │   └──user.js
	│  ├──view
	│  │   └──视图(模板),页面展示
	│  ├──middleware  
	│  │   └──xtoken.js 中间件
	│  ├──public
	│  │    └──css、image、js等静态资源
	│  └──router.js
	│  
	├──config
	│  ├── config.default.js //配置
	│  └── plugin.js  //插件
	│
	├──test
	│
	└──package.json

如上,由框架约定的目录: 

  • app/router.js 用于配置 URL 路由规则,具体参见 Router。
  • app/controller/** 用于解析用户的输入,处理后返回相应的结果,具体参见 Controller。
  • app/service/** 用于编写业务逻辑层,可选,建议使用,具体参见 Service。
  • app/middleware/** 用于编写中间件,可选,具体参见 Middleware。
  • app/public/** 用于放置静态资源,可选,具体参见内置插件 egg-static。
  • app/extend/** 用于框架的扩展,可选,具体参见框架扩展。
  • config/config.{env}.js 用于编写配置文件,具体参见配置。
  • config/plugin.js 用于配置需要加载的插件,具体参见插件。
  • test/** 用于单元测试,具体参见单元测试。
  • app.js 和 agent.js 用于自定义启动时的初始化工作,可选,具体参见启动自定义。关于agent.js的作用参见Agent机制。

由内置插件约定的目录:

  • app/public/** 用于放置静态资源,可选,具体参见内置插件 egg-static。
  • app/schedule/** 用于定时任务,可选,具体参见定时任务。

若需自定义自己的目录规范,参见 Loader API

  • app/view/** 用于放置模板文件,可选,由模板插件约定,具体参见模板渲染。
  • app/model/** 用于放置领域模型,可选,由领域类相关插件约定,如 egg-sequelize。

 

三.编写接口

1.router.js

'use strict';
/*
Router 主要用来描述请求 URL 和具体承担执行动作的 Controller 的对应关系,
*/
/**
 * @param {Egg.Application} app - egg application
 */
module.exports = app => {
	const { router, controller } = app;
	router.get('/home', controller.home.index);
};

2.controller 控制器/home

'use strict';
//控制器

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

class HomeController extends Controller {
	async index() {
		const ctx = this.ctx;
		const sfzjhm = ctx.query.sfzjhm;
		//请求数据接口
		const newsList = await ctx.service.home.list(sfzjhm);
		ctx.body = newsList;
	}
}

module.exports = HomeController;

3.配置接口地址:config/config.default.js

// 增加配置

    const userConfig = {

        // news 模块的配置

        news: {

            serverUrl: 'http://114.11****:85/',

        }

    };

4.service/home.js

egg.js中请求外部接口,this.ctx.curl()

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

class NewsService extends Service {
    async list(names) {
        const { serverUrl } = this.config.news;
        let data = {
            name: names,
            password: "123"
        };
        // 注意:异步请求,记得加上await
        var resultData = await this.ctx.curl(`${serverUrl}sysUserInfo/login`, {
            data: data,
            method: 'POST',
            dataType: 'json',
            headers: {
                'Content-Type': 'application/x-www-form-urlencoded',
            }
        });
        return resultData.data;
    }
}

module.exports = NewsService;

 

egg简单的使用_第1张图片

5.运行

npm run dev

open:

egg简单的使用_第2张图片

你可能感兴趣的