站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        egg.js是node么

        egg.js是node框架,是一個(gè)繼承于Koa的node.js框架;egg.js框架不同于exporess、koa等基礎(chǔ)框架,egg.js在應(yīng)用級(jí)的提煉封裝,使其更貼近業(yè)務(wù)場景,更快上手。

        egg.js是node么

        本教程操作環(huán)境:Windows10系統(tǒng)、egg.js v2.0.0版、Dell G3電腦。

        egg.js是node么?

        是。

        了解 egg.js

        Egg 是一個(gè)繼承于 Koa 的 node.js 框架。不同于 exporess、koa 等基礎(chǔ)框架,egg.js 在應(yīng)用級(jí)的提煉封裝,使其更貼近業(yè)務(wù)場景,更快上手。

        Egg 按照約定進(jìn)行開發(fā),奉行『約定優(yōu)于配置』,團(tuán)隊(duì)協(xié)作成本低

        安裝

        npm init egg npm i npm run dev
        登錄后復(fù)制

        一個(gè)基礎(chǔ)的 API 大致由路由、獲取請(qǐng)求參數(shù)、邏輯處理、返回響應(yīng)數(shù)據(jù)幾部分組成

        路由

        app/router.js 用于配置 URL 路由規(guī)則

        router.get("/", controller.home.index); // 當(dāng)訪問GET '/' ,app/controller/home.js 下的 index 方法會(huì)執(zhí)行 router.post("/create", controller.user.create); // 當(dāng)訪問POST '/create' ,app/controller/user.js 下的 create 方法會(huì)執(zhí)行
        登錄后復(fù)制

        獲取請(qǐng)求參數(shù)

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

        // 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',     // }   } }
        登錄后復(fù)制

        this.ctx.params獲取路由中的動(dòng)態(tài)參數(shù)

        // 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'     // }   } }
        登錄后復(fù)制

        this.ctx.request.body獲取 body 參數(shù)

        // 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'     // }   } }
        登錄后復(fù)制

        返回響應(yīng)數(shù)據(jù)

        this.ctx.body返回響應(yīng)數(shù)據(jù)

        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>";   } }
        登錄后復(fù)制

        使用 mysql 數(shù)據(jù)庫

        安裝 mysql 插件

        npm i egg-mysql
        登錄后復(fù)制

        配置

        // config/plugin.js exports.mysql = {   enable: true,   package: "egg-mysql", }; // config/config.${env}.js exports.mysql = {   // 單數(shù)據(jù)庫信息配置   client: {     // host     host: "localhost",     // 端口號(hào)     port: "3306",     // 用戶名     user: "root",     // 密碼     password: "root",     // 數(shù)據(jù)庫名     database: "database",   }, };
        登錄后復(fù)制

        使用

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

        處理業(yè)務(wù)邏輯

        業(yè)務(wù)邏輯建議放在app/service中,當(dāng)然也包括數(shù)據(jù)庫的操作

        // app/service/user.js const Service = require("egg").Service; class UserService extends Service {   async find(uid) {     // 假如 我們拿到用戶 id 從數(shù)據(jù)庫獲取用戶詳細(xì)信息     const user = await this.app.mysql.get("users", { id: uid });     return user;   } } module.exports = UserService;
        登錄后復(fù)制

        之后可以通過 Controller 獲取 Service 層拿到的數(shù)據(jù)。

        // app/controller/user.js class UserController extends Controller {   async info() {     const ctx = this.ctx;     const userId = ctx.params.id;     // 調(diào)用service層的user下的find方法     const user = await ctx.service.user.find(userId);     ctx.body = user;   } }
        登錄后復(fù)制

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

        直接執(zhí)行 sql 語句可使用 query 方法

        事務(wù)的控制

        egg.js 官網(wǎng):https://www.eggjs.org/zh-CN/
        登錄后復(fù)制

        推薦學(xué)習(xí):《node.js視頻教程》

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
        主站蜘蛛池模板: 国产成人久久精品一区二区三区 | 欧美精品免费观看二区| 精品99又大又爽又硬少妇毛片| WWW国产精品内射老师| 亚洲欧洲精品成人久久曰影片| 国产精品女同一区二区久久| 国内精品久久国产大陆| 青青草原精品国产亚洲av| 亚洲成网777777国产精品| 国产欧美日韩综合精品一区二区三区| 精品视频第一页| 99在线热播精品免费99热| 精品亚洲成AV人在线观看| 亚洲处破女AV日韩精品| 亚洲综合欧美精品一区二区| 青春草无码精品视频在线观| 国内精品久久久久久久亚洲| 99熟女精品视频一区二区三区| 欧美国产亚洲精品高清不卡| 99精品国产丝袜在线拍国语| 久久国产精品成人片免费| 欧美精品中文字幕亚洲专区| 亚洲日韩精品A∨片无码| 亚洲无码日韩精品第一页| 四虎精品免费永久免费视频| 日韩精品免费一线在线观看| 欧美精品一区二区久久| 欧美成人精品一区二三区在线观看| 国产午夜精品理论片| 精品国产亚洲男女在线线电影| 国内精品久久久久影院网站| 国产综合色产在线精品| 国内精品久久久久久久coent | 野狼第一精品社区| 中文字幕一精品亚洲无线一区 | 久久久久久久久久免免费精品| 国产欧美日本精品| 国内精品久久久久久不卡影院 | 四虎永久在线精品国产免费| 久久亚洲精品中文字幕三区| 四虎国产精品免费入口|