Eggjs配合Nextjs使用

本文介绍了如何将Eggjs与Nextjs结合使用,详细步骤包括:使用Nextjs搭建项目结构,安装并启动Eggjs服务,配置路由,连接并操作MySQL数据库,创建API接口,解决跨域问题。通过示例展示了从数据库获取数据,接口返回值,前端页面请求数据并展示的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Eggjs-Nextjs

先使用Nextjs的脚手架搭建整体架构

  • 这里使用

    npx create-next-app my-next-app
    

安装egg.js

  • 我们先进入到项目的根文件夹中(与创建的package.json同级),然后在根文件夹下,建立一个service的文件夹,这就是中台的文件夹了。

  • 推荐直接使用脚手架,只需几条简单指令,即可快速生成项目(npm >=6.1.0

  • cd到根目录下的service目录,在下面输入命令

    npm init egg --type=simple
    
  • 初始化后需要安装包

    npm install
    
  • 安装后即可启动服务,注意是在service目录下

    npm run dev
    

路由配置

与koa的路由配置基本相同

  • 让egg为前端提供Api接口,实现中台主要的功能 ;这里使用restful-api接口设计

  • 在controller控制器中,eggjs默认给我们一个示例home.js

    • 创建eggjs的项目之后都会有home.js
    • 在controller中写我们逻辑代码可以写service
    'use strict';
    
    const Controller = require('egg').Controller;
    
    class HomeController extends Controller {
         
      async index() {
         
        const {
          ctx } = this;
        ctx.body = 'hi, egg';
      }
    }
    module.exports = HomeController;
    
    
  • 在router.js中配置路由

    • 也是框架提供给我们的
    'use strict';
    
    /**
     * @param {Egg.Application} app - egg application
     */
    module.exports = app => {
         
      const {
          router, controller } = app;
      router.get('/', controller.home.index);
    };
    
    
  • 可以看出:框架在加载router.js中路由,会去找controller下对应的找对应的文件夹/文件,找问价中对应的方法;当然配置路由时需要指定每个路由对应的方法

  • 可以启动egg服务后通过修改ctx.body的值可以看到不同的返回值,那个即是我们在访问接口的时候的返回值

  • 为了让router.js只是为了暴露配置,在app文件夹下面创建router文件夹

    ├─controller
    │  ├─client
    │  └─server
    ├─public
    └─router
    │  ├─client.js
    │  └─server.js
     ─router.js
    
    • 可在router/client.js中配置访问的路由

      'use strict';
      /**
       * @param {Egg.Application} app - egg application
       */
      module.exports = app => {
             
        const {
              router, controller } = app;
        router.get('/client/getList', controller
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值