<dd id="3pk9i"><optgroup id="3pk9i"><video id="3pk9i"></video></optgroup></dd>
<rp id="3pk9i"></rp>

<dd id="3pk9i"><track id="3pk9i"></track></dd>
      1. <th id="3pk9i"></th>
        1. <ol id="3pk9i"><ruby id="3pk9i"></ruby></ol>

        2. egg.js是node么-焦點短訊

          來源:php中文網 | 2022-12-29 14:59:24 |

          本教程操作環境:Windows10系統、egg.js v2.0.0版、Dell G3電腦。


          (資料圖片僅供參考)

          egg.js是node么?

          是。

          了解 egg.js

          Egg 是一個繼承于 Koa 的 node.js 框架。不同于 exporess、koa 等基礎框架,egg.js 在應用級的提煉封裝,使其更貼近業務場景,更快上手。

          Egg 按照約定進行開發,奉行『約定優于配置』,團隊協作成本低

          安裝

          npm init eggnpm inpm run dev

          一個基礎的 API 大致由路由、獲取請求參數、邏輯處理、返回響應數據幾部分組成

          路由

          app/router.js 用于配置 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 方法會執行

          獲取請求參數

          this.ctx.query獲取 URL 中 ? 后面的部分參數

          // GET /posts?category=egg&language=node// app/controller/post.jsclass PostController extends Controller {  async listPosts() {    const query = this.ctx.query;    // {    //   category: "egg",    //   language: "node",    // }  }}

          this.ctx.params獲取路由中的動態參數

          // app.get("/projects/:projectId/app/:appId", controller.app.listApp);// GET /projects/1/app/2class AppController extends Controller {  async listApp() {    const params = this.ctx.params;    // {    //   projectId: "1",    //   appId: "2"    // }  }}

          this.ctx.request.body獲取 body 參數

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

          返回響應數據

          this.ctx.body返回響應數據

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

          使用 mysql 數據庫

          安裝 mysql 插件

          npm i egg-mysql

          配置

          // config/plugin.jsexports.mysql = {  enable: true,  package: "egg-mysql",};// config/config.${env}.jsexports.mysql = {  // 單數據庫信息配置  client: {    // host    host: "localhost",    // 端口號    port: "3306",    // 用戶名    user: "root",    // 密碼    password: "root",    // 數據庫名    database: "database",  },};

          使用

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

          處理業務邏輯

          業務邏輯建議放在app/service中,當然也包括數據庫的操作

          // app/service/user.jsconst 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;

          之后可以通過 Controller 獲取 Service 層拿到的數據。

          // app/controller/user.jsclass 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;  }}

          基本 CURD 語句可以使用 create、get、select、update、delete 方法

          直接執行 sql 語句可使用 query 方法

          事務的控制

          egg.js 官網:https://www.eggjs.org/zh-CN/

          推薦學習:《node.js視頻教程》

          以上就是egg.js是node么的詳細內容,更多請關注php中文網其它相關文章!

          關鍵詞: egg.js node

          中文字幕在线观看2021
          <dd id="3pk9i"><optgroup id="3pk9i"><video id="3pk9i"></video></optgroup></dd>
          <rp id="3pk9i"></rp>

          <dd id="3pk9i"><track id="3pk9i"></track></dd>
            1. <th id="3pk9i"></th>
              1. <ol id="3pk9i"><ruby id="3pk9i"></ruby></ol>