Adakah nod egg.js?

藏色散人
Lepaskan: 2022-12-29 14:51:50
asal
1948 orang telah melayarinya

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
Salin selepas log masuk

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 方法会执行
Salin selepas log masuk

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',
    // }
  }
}
Salin selepas log masuk

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'
    // }
  }
}
Salin selepas log masuk

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'
    // }
  }
}
Salin selepas log masuk

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>";
  }
}
Salin selepas log masuk

Gunakan pangkalan data mysql

Pasang pemalam mysql

npm i egg-mysql
Salin selepas log masuk

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",
  },
};
Salin selepas log masuk

Gunakan

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

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;
Salin selepas log masuk

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;
  }
}
Salin selepas log masuk

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/
Salin selepas log masuk

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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan