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

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

藏色散人
Libérer: 2022-12-29 14:51:50
original
1974 Les gens l'ont consulté

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
Copier après la connexion

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 方法会执行
Copier après la connexion

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',
    // }
  }
}
Copier après la connexion

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'
    // }
  }
}
Copier après la connexion

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'
    // }
  }
}
Copier après la connexion

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>";
  }
}
Copier après la connexion

Utilisez la base de données MySQL

Installez le plug-in MySQL

npm i egg-mysql
Copier après la connexion

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",
  },
};
Copier après la connexion

Utilisez

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

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;
Copier après la connexion

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;
  }
}
Copier après la connexion

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/
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal