Heim >Web-Frontend >Front-End-Fragen und Antworten >Ist egg.js ein Knoten?
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.
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-mysqlVerwenden 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!