二麦乞、安裝Egg.js及項目配置和相關(guān)使用

緊接上文, 配置好mongodb環(huán)境后, 我們就要開始創(chuàng)建Egg.js項目了

附注: 此次是windows環(huán)境項目, node.js版本8.x以上, 也不怎么講原理, 主要是先上手
首先附上Egg.js文檔目錄: https://www.eggjs.org/zh-CN/intro/quickstart

  • 安裝Egg.js, 新創(chuàng)建一個文件夾, 這里的為egg-demo, 執(zhí)行命令
npm init egg --type=simple

這里采用的是egg.js官方提供的simple的模板
然后就可以看到項目文件:

image.png

然后執(zhí)行npm install命令, 安裝相關(guān)依賴包, 然后可以使用npm run dev啟動項目, 啟動之后, 會默認生成一個http://127.0.0.1:7001的路徑地址, 文件介紹如下:
image.png

運行項目后, 在瀏覽器地址欄輸入http://127.0.0.1:7001, 就可以看到頁面
image.png

由于電腦還有其他egg.js項目啟動, 所以我的是http://127.0.0.1:7002

  • 下面我們開始第一步: 了解路由
    具體的相關(guān)介紹大家可以移步官網(wǎng), 我這里就不一一介紹水字數(shù)了, 首先我們可以直接點開router.js文件
    image.png

    里面是幫我們配好了自帶的home.js的路由, 文件路徑在app/controller/home.js
    image.png

    我們在瀏覽器頁面顯示的hi egg就是這個文件顯示的, ctx.body = 'hi, egg';
    為了了解相關(guān), 我們在app/controller/目錄下創(chuàng)建一個product.js的文件
const Controller = require("egg").Controller; // 引入Controller組件
class ProductController extends Controller { // 需使用駝峰命名法
    async index() {
        const { ctx } = this;
        ctx.body = "hello, product!";
    }
}
module.exports = ProductController;

然后到router.js文件聲明, 為get請求

module.exports = app => {
    const { router, controller} = app;
    router.get('/', controller.home.index);
    router.get("/product", controller.product.index);
}

然后在頁面路徑改為http://127.0.0.1:7001/procuct, 如圖:

image.png

然后介紹一下get請求的傳參, 一般分為兩種,
第一種為: http://127.0.0.1:7001/product?id=100&name=張三
第二種為: http;//127.0.0.1:7001/product/123
image.png

看圖就知道, 第一種為query的方式, 第二種為params方式, 在路由定義
image.png

在頁面可以看到:
image.png

image.png

當然, 這里打印的是對象, 如果要取值的話, ctx.query.id, ctx.query.name, 關(guān)于第二種的話就是ctx.params.id

  • router的其他請求
    經(jīng)常用的其實也就是get, post, put, delete我們說的增刪改查
    image.png

    先在config/config.default.js增加如下配置, 后面需要用到postman工具
    然后在controller/product.js處, 添加我們的增刪改查接口
    image.png

然后在路由表添加如下請求

router.get("/product", controller.product.index); // 列表數(shù)據(jù)
router.post("/product/create", controller.product.create); // 新增接口
router.put("/product/update/:id", controller.product.update); // 修改接口
router.delete("/product/delete/:id", controller.product.delete); // 刪除接口

image.png

路由處添加完后, 回到我們的product.js處, 找到create接口, 在里面接收
image.png

然后打開postman軟件, 模擬請求我們的新增接口
image.png

image.png

可以看到, 是請求成功的, 接下來我們看修改請求和刪除請求, 這兩個請求有點類似, 所以放一起說了
image.png

在controller/product.js處的update和delete方法處, 寫好代碼, 然后到postman處, 嘗試去請求, 是否可以拿到ID
image.png

image.png

image.png

可以看到, 都是OK的, 可以拿到相對應的參數(shù)
下面我們來說一下它的service服務(wù)

  • Service服務(wù)

具體詳情, 可看官方文檔, https://www.eggjs.org/zh-CN/basics/service, 我們在這里就不多寫了, 具體邏輯, 校驗啥的往里丟就行了

image.png

然后我們在app文件夾下, 新建一個service的文件, 里面再創(chuàng)建一個product.js的文件, 然后模擬一個列表返回請求, 因為我們現(xiàn)在還沒到連接數(shù)據(jù)庫階段, 所以先進行模擬

const Service = require("egg").Service;

class ProductService extends Service {
    async index() {
        return {
            id: 100,
            name: "西瓜",
            weight: 100
        }
    }
}

module.exports = ProductService;

然后我們回到路徑為app/controller/product.js文件, 在index()方法中稍做修改

image.png

然后再到瀏覽器
image.png

可以看到, 是返回成功的
那我們在路徑為app/controller/home.js里面是否可以使用到service/product.js里的內(nèi)容呢?我們一起來試一試

"use strict"

const Controller = require("egg").Controller;

class HomeController extends Controller {
    async index() {
        const { ctx } = this;
        const res = await ctx.service.product.index();
        ctx.body = res;
        //  ctx.body = "hi, egg";
    }
}
module.exports = HomeController;
image.png

可以看到, 這樣也是OK的, 到了這里, 我們了解egg基礎(chǔ)的到這里就結(jié)束了, 基于現(xiàn)在都是前后端分離的模式, 后面還會出一節(jié)使用egg.js+mongodb+vue3的前后端分離文章

ejs模板引擎

到了這里, 也說一個egg.js的模板引擎, 也就是egg.js官網(wǎng)中的模板渲染: https://www.eggjs.org/zh-CN/core/view, 但我們在這里說的是ejs的一個模板, 全稱egg-view-ejs相對來說比較成熟, 給大家放個鏈接https://www.npmjs.com/package/egg-view-ejs

image.png

image.png

先進行安裝npm install egg-view-ejs --save, 安裝完畢后, 在路徑為config/plugin.js里面, 復制上面的配置
image.png

然后在路徑為config/config.default.js文件上, 繼續(xù)配置
image.png

配置完后, 我們在app文件夾下, 新建一個名為view的文件夾, 然后在view的文件夾下, 新建一個index.html的文件
image.png

然后到路徑為app/controller/home.js文件下, 使用ctx.render()進行渲染, 第一個值為路徑, 第二個值為要傳進去的變量
image.png

然后回到index.html, 把傳進來的變量, 添加進去, ejs使用變量, 有一個特定的格式, 為<%=變量%>
image.png

然后我們在瀏覽器輸入127.0.0.1:7001
image.png

可以看到, 這是OK的, 那我們怎么在里面渲染列表呢?我們來試一試, 在home.js里面寫一個list數(shù)組
image.png

然后在index.html頁面上, 寫一個ul列表, 使用for循環(huán), 感覺和PHP的是不是差不多
image.png

然后我們?nèi)g覽器頁面, 可以看到, 是渲染出來的
image.png

如何使用靜態(tài)資源呢, 也是一樣的, egg.js的靜態(tài)資源是統(tǒng)一放在public文件夾的, 下面我們在public文件夾進行下演示, 創(chuàng)建css, image, js三個文件夾, 然后在index.html中引入
image.png

image.png

image.png

好了, 這次的就說到這里了, 如果有對ejs感興趣的, 可以移步https://ejs.bootcss.com/ 官網(wǎng)看看
如果本次的分享對你有用, 請動動你的小手點個贊哦

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末丈甸,一起剝皮案震驚了整個濱河市丰包,隨后出現(xiàn)的幾起案子流椒,更是在濱河造成了極大的恐慌担汤,老刑警劉巖涎跨,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異崭歧,居然都是意外死亡隅很,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來叔营,“玉大人屋彪,你說我怎么就攤上這事∪拮穑” “怎么了畜挥?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長婴谱。 經(jīng)常有香客問我蟹但,道長,這世上最難降的妖魔是什么谭羔? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任华糖,我火速辦了婚禮,結(jié)果婚禮上瘟裸,老公的妹妹穿的比我還像新娘客叉。我一直安慰自己,他們只是感情好话告,可當我...
    茶點故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布兼搏。 她就那樣靜靜地躺著,像睡著了一般沙郭。 火紅的嫁衣襯著肌膚如雪向族。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天棠绘,我揣著相機與錄音件相,去河邊找鬼。 笑死氧苍,一個胖子當著我的面吹牛夜矗,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播让虐,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼紊撕,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了赡突?” 一聲冷哼從身側(cè)響起对扶,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎惭缰,沒想到半個月后浪南,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡漱受,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年络凿,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡絮记,死狀恐怖摔踱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情怨愤,我是刑警寧澤派敷,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站撰洗,受9級特大地震影響篮愉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜了赵,卻給世界環(huán)境...
    茶點故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望甸赃。 院中可真熱鬧柿汛,春花似錦、人聲如沸埠对。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽项玛。三九已至貌笨,卻和暖如春锈玉,著一層夾襖步出監(jiān)牢的瞬間心包,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工褂删, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留开伏,地道東北人膀跌。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像固灵,于是被迫代替她去往敵國和親捅伤。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,500評論 2 359

推薦閱讀更多精彩內(nèi)容