Ist egg.js ein Knoten?

藏色散人
藏色散人Original
2022-12-29 14:51:501944Durchsuche

egg.js ist ein Node-Framework, ein von Koa geerbtes node.js-Framework. Das egg.js-Framework unterscheidet sich von Basis-Frameworks wie exporess und koa und ist auf Anwendungsebene verfeinert und gekapselt zu Geschäftsszenarien.

Ist egg.js ein Knoten?

Die Betriebsumgebung dieses Tutorials: Windows 10-System, egg.js v2.0.0-Version, Dell G3-Computer.

egg.js ist ein Knoten?

Ja.

Verstehen Sie egg.js

Egg ist ein von Koa geerbtes Node.js-Framework. Im Gegensatz zu Basis-Frameworks wie exporess und koa wird egg.js auf Anwendungsebene verfeinert und gekapselt, wodurch es näher an Geschäftsszenarien herankommt und schneller zu starten ist.

Egg wird gemäß der Vereinbarung unter Einhaltung des Grundsatzes „Konvention vor Konfiguration“ entwickelt und die Kosten für die Zusammenarbeit im Team sind gering.

Installation Rückgabe von Antwortdaten

Routing

app/router.js wird verwendet, um URL-Routing-Regeln zu konfigurieren

npm init egg
npm i
npm run dev

Anfrageparameter abrufen

this.ctx.query, um die URL zu erhalten

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.params, um die Route zu erhalten. Die dynamischen Parameter in

// 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.request.body erhalten die Körperparameter

// 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'
    // }
  }
}

Antwortdaten zurückgeben

this.ctx.bodyAntwortdaten zurückgeben

// 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'
    // }
  }
}

MySQL-Datenbank verwenden

Installieren Sie das MySQL-Plug-in

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>";
  }
}

Konfiguration

npm i egg-mysql

Verwenden Sie

// 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",
  },
};

, um Geschäftslogik zu verarbeiten

Es wird empfohlen, die Geschäftslogik in App/Service zu platzieren, was natürlich auch Datenbankoperationen umfasst

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

Die Von der Serviceschicht erhaltene Daten können über den Controller abgerufen werden.

// 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;

Einfache CURD-Anweisungen können die Methoden zum Erstellen, Abrufen, Auswählen, Aktualisieren und Löschen verwenden.

Um SQL-Anweisungen direkt auszuführen, können Sie die Abfragemethode verwenden Tutorial

"

Das obige ist der detaillierte Inhalt vonIst egg.js ein Knoten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn