egg.js ialah rangka kerja nod, iaitu rangka kerja node.js yang diwarisi daripada Koa; rangka kerja egg.js berbeza daripada rangka kerja asas seperti exporess dan koa Egg.js diperhalusi dan dikapsulkan di tahap aplikasi, menjadikannya lebih Dekat dengan senario perniagaan dan bermula dengan lebih cepat.
Persekitaran pengendalian tutorial ini: sistem Windows 10, versi egg.js v2.0.0, komputer Dell G3.
Adakah nod egg.js?
Ya.
Memahami egg.js
Egg ialah rangka kerja node.js yang diwarisi daripada Koa. Berbeza daripada rangka kerja asas seperti exporess dan koa, egg.js diperhalusi dan dikapsulkan pada peringkat aplikasi, menjadikannya lebih dekat dengan senario perniagaan dan lebih pantas untuk bermula.
Telur dibangunkan mengikut perjanjian, mematuhi "konvensyen atas konfigurasi", dan kos kerjasama pasukan adalah rendah
Pemasangan
npm init egg npm i npm run dev
API asas Ia secara kasarnya terdiri daripada penghalaan, mendapatkan parameter permintaan, pemprosesan logik dan mengembalikan data respons
Penghalaan
app/router.js digunakan untuk mengkonfigurasi Peraturan penghalaan 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 方法会执行
Dapatkan parameter permintaan
this.ctx.query mendapat URL Parameter berikut
// 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', // } } }
ini. ctx.params mendapat laluan Parameter dinamik dalam
// 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 mendapat parameter badan
// 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' // } } }
dan mengembalikan data respons
this.ctx .body mengembalikan data tindak balas
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>"; } }
Gunakan pangkalan data mysql
Pasang pemalam mysql
npm i egg-mysql
Konfigurasi
// 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", }, };
Gunakan
// 查找id 为 ${uid}的用户 await this.app.mysql.get("users", { id: uid });
untuk memproses logik perniagaan
Logik perniagaan disyorkan untuk diletakkan dalam aplikasi/perkhidmatan, termasuk operasi pangkalan data sudah tentu
// 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;
Data yang diperolehi oleh lapisan Perkhidmatan kemudiannya boleh diperolehi melalui Pengawal.
// 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; } }
Penyata CURD asas boleh menggunakan kaedah cipta, dapatkan, pilih, kemas kini, padam
Untuk melaksanakan secara langsung penyata sql, anda boleh menggunakan kaedah pertanyaan
Transaksi kawalan
egg.js 官网:https://www.eggjs.org/zh-CN/
Pembelajaran yang disyorkan: "tutorial video node.js"
Atas ialah kandungan terperinci Adakah nod egg.js?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!