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.
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!