站長資訊網
最全最豐富的資訊網站

egg.js是node么

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

egg.js是node么

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

egg.js是node么?

是。

了解 egg.js

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

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

安裝

npm init egg npm i npm 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.js class 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/2 class 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.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",   }, };
登錄后復制

使用

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

處理業務邏輯

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

// 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;
登錄后復制

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

// 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;   } }
登錄后復制

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

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

事務的控制

egg.js 官網:https://www.eggjs.org/zh-CN/
登錄后復制

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

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
免费视频精品一区二区三区| 国产精品国产高清国产专区| 精品国产yw在线观看| 精品乱人伦一区二区三区| 国产免费久久精品丫丫| 日韩AV无码中文无码不卡电影| 日韩精品无码区免费专区| 国产成人精品日本亚洲专| 99热这里只有精品99| 久久精品国产精品亚洲艾| 亚洲精品高清国产一线久久| 久久99亚洲综合精品首页| 九九精品国产99精品| 中文字幕日韩一区二区不卡| 国产成人综合日韩精品无码| 国产精品久久久久999| 成人精品一区二区激情| 国产精品电影一区| 精品国产一区二区三区不卡| 久久久久国产精品熟女影院 | 久久国产精品亚洲一区二区| 亚洲线精品一区二区三区影音先锋 | 在线观看91精品国产网站| 国产日韩高清三级精品人成| 亚洲AV无码精品蜜桃| 久久国产精品成人影院| 精品精品国产理论在线观看| 国产精品成人69XXX免费视频| 九九热视频精品在线| 精品一区二区三区在线播放| 中日韩欧一本在线观看| 午夜国产精品久久影院| 国产农村妇女精品一二区| 国产福利精品视频| 日韩AV毛片精品久久久| AV在线播放日韩亚洲欧| 亚洲av日韩av激情亚洲| 日韩精品在线观看视频| 日韩中文字幕一区| 精品香蕉伊思人在线观看| 无码AⅤ精品一区二区三区|