Maison >interface Web >Questions et réponses frontales >Est-ce que le nœud egg.js ?

Est-ce que le nœud egg.js ?

藏色散人
藏色散人original
2022-12-29 14:51:502012parcourir

egg.js est un framework de nœuds, un framework node.js hérité de Koa ; le framework egg.js est différent des frameworks de base tels que exporess et koa est affiné et encapsulé au niveau de l'application pour le rendre plus proche. aux scénarios commerciaux. Démarrez plus rapidement.

Est-ce que le nœud egg.js ?

L'environnement d'exploitation de ce tutoriel : système Windows 10, version egg.js v2.0.0, ordinateur Dell G3.

egg.js est un nœud ?

Oui.

Comprendre egg.js

Egg est un framework node.js hérité de Koa. Différent des frameworks de base tels que exportess et koa, egg.js est affiné et encapsulé au niveau de l'application, ce qui le rend plus proche des scénarios commerciaux et permet un démarrage plus rapide.

Egg est développé conformément à l'accord, en adhérant à la « convention sur la configuration », et le coût de collaboration de l'équipe est faible

Installation

npm init egg
npm i
npm run dev

Une API de base est grossièrement composée du routage, de l'obtention des paramètres de requête, du traitement logique et renvoyer les données de réponse

Routing

app/router.js est utilisé pour configurer les règles de routage d'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 方法会执行

Obtenir les paramètres de requête

this.ctx.query pour obtenir l'URL Les paramètres suivants

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

this ? ctx.params pour obtenir l'itinéraire Les paramètres dynamiques dans

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

this.ctx.request.body obtiennent le paramètre 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'
    // }
  }
}

Retourne les données de réponse

this.ctx.bodyRetourne les données de réponse

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><h1>Hello</h1></html>";
  }
}

Utilisez la base de données MySQL

Installez le plug-in MySQL

npm i egg-mysql

Configuration

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

Utilisez

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

pour traiter la logique métier

Il est recommandé de placer la logique métier dans l'application/le service, qui inclut bien sûr également les opérations de base de données

// app/service/user.js
const 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;

Le les données obtenues à partir de la couche Service peuvent être obtenues via le contrôleur.

// app/controller/user.js
class 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;
  }
}

Les instructions CURD de base peuvent utiliser les méthodes de création, d'obtention, de sélection, de mise à jour et de suppression

Pour exécuter directement des instructions SQL, vous pouvez utiliser la méthode de requête

Contrôle des transactions

egg.js 官网:https://www.eggjs.org/zh-CN/

Apprentissage recommandé : "Vidéo Node.js tutoriel"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn