文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

egg.js是不是node

2023-07-04 22:01

关注

这篇文章主要讲解了“egg.js是不是node”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“egg.js是不是node”吧!

egg.js是node框架,是一个继承于Koa的node.js框架;egg.js框架不同于exporess、koa等基础框架,egg.js在应用级的提炼封装,使其更贴近业务场景,更快上手。

了解 egg.js

Egg 是一个继承于 Koa 的 node.js 框架。不同于 exporess、koa 等基础框架,egg.js 在应用级的提炼封装,使其更贴近业务场景,更快上手。

Egg 按照约定进行开发,奉行『约定优于配置』,团队协作成本低

安装

npm init eggnpm inpm run dev

一个基础的 API 大致由路由、获取请求参数、逻辑处理、返回响应数据几部分组成

路由

app/router.js 用于配置 URL 路由规则

router.get("/", controller.home.index);// 当访问GET '/' ,app/controller/home.js 下的 index 方法会执行router.post("/create", controller.user.create);// 当访问POST '/create' ,app/controller/user.js 下的 create 方法会执行

获取请求参数

this.ctx.query获取 URL 中 ? 后面的部分参数

// GET /posts?category=egg&language=node// app/controller/post.jsclass PostController extends Controller {  async listPosts() {    const query = this.ctx.query;    // {    //   category: 'egg',    //   language: 'node',    // }  }}

this.ctx.params获取路由中的动态参数

// app.get('/projects/:projectId/app/:appId', controller.app.listApp);// GET /projects/1/app/2class AppController extends Controller {  async listApp() {    const params = this.ctx.params;    // {    //   projectId: '1',    //   appId: '2'    // }  }}

this.ctx.request.body获取 body 参数

// POST /api/posts HTTP/1.1// Host: localhost:3000// Content-Type: application/json; charset=UTF-8//// {"title": "controller", "content": "what is controller"}class PostController extends Controller {  async listPosts() {    const body = this.ctx.request.body;    // {    //   title: 'controller',    //   content: 'what is controller'    // }  }}

返回响应数据

this.ctx.body返回响应数据

class ViewController extends Controller {  async show() {    // 返回Content-Type为application/json的body    this.ctx.body = {      name: "egg",      category: "framework",      language: "Node.js",    };  }  async page() {    // 返回Content-Type为text/html的body    this.ctx.body = "<html><h2>Hello</h2></html>";  }}

使用 mysql 数据库

安装 mysql 插件

npm i egg-mysql

配置

// config/plugin.jsexports.mysql = {  enable: true,  package: "egg-mysql",};// config/config.${env}.jsexports.mysql = {  // 单数据库信息配置  client: {    // host    host: "localhost",    // 端口号    port: "3306",    // 用户名    user: "root",    // 密码    password: "root",    // 数据库名    database: "database",  },};

使用

// 查找id 为 ${uid}的用户await this.app.mysql.get("users", { id: uid });

处理业务逻辑

业务逻辑建议放在app/service中,当然也包括数据库的操作

// app/service/user.jsconst Service = require("egg").Service;class UserService extends Service {  async find(uid) {    // 假如 我们拿到用户 id 从数据库获取用户详细信息    const user = await this.app.mysql.get("users", { id: uid });    return user;  }}module.exports = UserService;

之后可以通过 Controller 获取 Service 层拿到的数据。

// app/controller/user.jsclass UserController extends Controller {  async info() {    const ctx = this.ctx;    const userId = ctx.params.id;    // 调用service层的user下的find方法    const user = await ctx.service.user.find(userId);    ctx.body = user;  }}

基本 CURD 语句可以使用 create、get、select、update、delete 方法,直接执行 sql 语句可使用 query 方法。

感谢各位的阅读,以上就是“egg.js是不是node”的内容了,经过本文的学习后,相信大家对egg.js是不是node这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯