Adakah nod egg.js?

藏色散人
藏色散人asal
2022-12-29 14:51:502002semak imbas

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.

Adakah nod egg.js?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn