企业级node.js开发框架 【egg.js】 实用教程

简介: 企业级node.js开发框架 【egg.js】 实用教程

以搭建后端服务器 webcli_server 为例

创建并启动项目

  1. 新建文件夹 webcli_server
  2. 在webcli_server 文件夹中打开终端,执行
cnpm init egg --type=simple

cnpm 的朋友先执行 npm i cnpm

提示是否安装时,输入 y 回车

提示选择项目类型时,默认第一个回车即可

接着按提示输入项目名称、描述、作者等,都可以默认一直回车即可。


  1. 安装依赖
cnpm i
 
  1. 启动项目
npm run dev
 


  1. 查看效果
    浏览器访问 http://127.0.0.1:7001/

    恭喜你,项目创建并启动成功!

创建并启动 TS 项目

  1. 新建文件夹 eggDemo
  1. 在eggDemo 文件夹中打开终端,执行
cnpm init egg --type=ts

无 cnpm 的朋友先执行 npm i cnpm

向下的方向键选到 TS 后回车

之后一直回车使用默认项目名称、项目描述、项目作者、项目 key 即可。

  1. 安装依赖
cnpm i
  1. 启动项目
npm run dev
  1. 查看效果
    浏览器访问 http://127.0.0.1:7001/

    恭喜你,项目创建并启动成功!

创建 API

以获取项目模板的接口为例

  1. 新增文件 getTemplate.js ,路径为 app\controller\getTemplate.js ,内容为
'use strict';

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

class getTemplateController extends Controller {
  async index() {
    const { ctx } = this;
    ctx.body = '获取模板';
  }
}

module.exports = getTemplateController;

  1. 在 app\router.js 中添加 API的地址
router.get('/getTemplate', controller.getTemplate.index);

  1. 重启项目,访问 http://127.0.0.1:7001/getTemplate

    恭喜你,新的 API 创建成功!

连接数据库

通过 Robo 3T连接远程数据库,具体方法见

  • MongoDB的GUI工具——Robo 3T连接远程数据库MongoDB
    https://blog.csdn.net/weixin_41192489/article/details/116561364

通过 Robo 3T

  • 新建数据库 webcli_server
  • 新建用户 root
  • 新建表 template,内容为
{
    "a" : 1,
    "b" : 2
}

最终效果如下:

安装依赖

cnpm i @pick-star/cli-mongodb

将 getTemplate.js 修改为

'use strict';

const Controller = require('egg').Controller;
// 导入数据库连接工具
const mongodb = require('@pick-star/cli-mongodb');
// 数据库的远程连接地址,格式为 'mongodb://用户名:密码@远程IP:27017/数据库名称';
const dbUrl = 'mongodb://改成自己的数据库用户名:改成自己的数据库密码@改成自己的远程服务器公网ip:27017/webcli_server';

class getTemplateController extends Controller {
  async index() {
    const { ctx } = this;
    // 'template' 为数据库的表名
    const data = await new mongodb(dbUrl).query('template');
    ctx.body = data;
  }
}

module.exports = getTemplateController;

新增的代码功能详见代码中的备注。

启动项目,浏览器访问 http://127.0.0.1:7001/getTemplate

成功访问到数据库中的数据,证明远程连接数据库成功!

调试技巧

使用自带插件logger

默认插件logger只显示debug级别以上的信息,可以在配置中修改,如在config.default.ts中添加

config.logger = {
  consoleLevel: 'DEBUG',
};

在 Controller 中使用,语法与console相同。

ctx.logger.debug('debug');
ctx.logger.info('info');
ctx.logger.warn('warn');
ctx.logger.error(new Error('myError'));

使用vscode进行断点调试

在目标代码处设置断点

点击调试按钮

访问接口执行到目标断点时,会弹出下方调试界面,左侧可以监控变量的值,调试面板可控制代码逐句向下执行。

更多功能

详见官网

https://www.eggjs.org/zh-CN

目录
相关文章
|
4月前
|
JavaScript 前端开发 安全
【逆向】Python 调用 JS 代码实战:使用 pyexecjs 与 Node.js 无缝衔接
本文介绍了如何使用 Python 的轻量级库 `pyexecjs` 调用 JavaScript 代码,并结合 Node.js 实现完整的执行流程。内容涵盖环境搭建、基本使用、常见问题解决方案及爬虫逆向分析中的实战技巧,帮助开发者在 Python 中高效处理 JS 逻辑。
|
10月前
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
565 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
9月前
|
JavaScript 前端开发 API
|
8月前
|
人工智能 监控 JavaScript
HarmonyOS5云服务技术分享--ArkTS开发Node环境
本文详细讲解了在HarmonyOS(ArkTS API 9及以上)中使用云函数的开发技巧,结合Node.js和HTTP触发器,从零开始手把手教学。内容涵盖核心能力、开发流程(配置到部署)、高阶优化及常见问题解决,并提供实际应用场景示例。助你快速掌握Serverless开发,提升效率,探索跨端协作与AI集成等未来方向。
|
11月前
|
JavaScript 前端开发 数据可视化
【01】Cocos游戏开发引擎从0开发一款游戏-cocos环境搭建以及配置-Cocos Creator软件系统下载安装-node环境-优雅草卓伊凡
【01】Cocos游戏开发引擎从0开发一款游戏-cocos环境搭建以及配置-Cocos Creator软件系统下载安装-node环境-优雅草卓伊凡
699 2
【01】Cocos游戏开发引擎从0开发一款游戏-cocos环境搭建以及配置-Cocos Creator软件系统下载安装-node环境-优雅草卓伊凡
|
数据采集 人工智能 自然语言处理
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
Midscene.js 是一款基于 AI 技术的 UI 自动化测试框架,通过自然语言交互简化测试流程,支持动作执行、数据查询和页面断言,提供可视化报告,适用于多种应用场景。
3376 1
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
|
JavaScript 前端开发 jenkins
抛弃node和vscode,如何用记事本开发出一个完整的vue前端项目
本文探讨了在不依赖Node和VSCode的情况下,仅使用记事本和浏览器开发一个完整的Vue3前端项目的方法。通过CDN引入Vue、Vue Router、Element-UI等库,直接编写HTML文件实现页面功能,展示了前端开发的本质是生成HTML。虽然日常开发离不开现代工具,但掌握这种基础方法有助于快速实现想法或应对特殊环境限制。文章还介绍了如何用Node简单部署HTML文件到服务器,提供了一种高效、轻量的开发思路。
300 10
|
Web App开发 异构计算 数据格式