NodeJs+MongoDB+Koa2+react后臺(tái)管理系統(tǒng)

最近因?yàn)楣疽窒恚谑呛?jiǎn)單做了一個(gè)后臺(tái)管理系統(tǒng)。主要功能有登錄注冊(cè),增刪改查。前端技術(shù)棧:react。后端技術(shù)棧:nodejs+koa2+mongdb。

主要頁(yè)面如下:

登錄頁(yè)面(ui還沒(méi)有來(lái)的急調(diào)整)
主頁(yè)面(以上增刪改查功能,分頁(yè)皆可實(shí)現(xiàn))

相信可能有很多人學(xué)過(guò)以上技術(shù),但是到真正做出一個(gè)東西的時(shí)候,可能也是不知道從何下手,本文旨在告訴大家怎樣上手去寫一個(gè)項(xiàng)目(主要側(cè)重后端,前端默認(rèn)都懂),至于技術(shù)細(xì)節(jié),深入,請(qǐng)自行翻閱官網(wǎng)文檔。

首先,我這里采用的是前后端分離的開(kāi)發(fā)模式,所以沒(méi)用采用后端模板(ejs等),僅僅后端只提供api接口。

下面開(kāi)始真正介紹如何搭建項(xiàng)目:

1.前端:create-react-app fe(項(xiàng)目名稱) 用react腳手架搭建一個(gè)前端項(xiàng)目。主要路由是/siginin 登錄注冊(cè)頁(yè)面。/home增刪改查主頁(yè)面 (如上圖)

2.后端:npm install -g koa-generator? ?,koa2 -e server(項(xiàng)目名稱) (-e 代表使用模板引擎ejs)。 這里采用mvc架構(gòu)(不懂自行百度)

前端(fe),后端(server)文件夾目錄如下:


后端文件夾
前端文件夾

3.安裝mongodb 數(shù)據(jù)庫(kù)(不懂自行百度)啟動(dòng),我自己還安裝了一個(gè)mongodb可視化工具M(jìn)ongoDB Compass.便于查看數(shù)據(jù)庫(kù)。

4.這里,server文件夾的bin/www下已經(jīng)引用http模塊,腳手架生成了一個(gè)后臺(tái)服務(wù)器并監(jiān)聽(tīng)端口。主要代碼如下:

var server = http.createServer(app.callback());

server.listen(port);

5.到這里,我們?cè)趺窗亚昂蠖诉B接起來(lái)呢?在server文件夾的connect/index.js下.(這里mongoose這個(gè)是操作mongodb數(shù)據(jù)庫(kù)的,因?yàn)槔锩娣庋b了一些方法。比node直接操作數(shù)據(jù)庫(kù)便捷)


mongoose.connect()函數(shù)連接數(shù)據(jù)庫(kù)。這里localhost可以換成局域網(wǎng)ip。my_admin是我的mongdb創(chuàng)建的數(shù)據(jù)庫(kù)的名稱。

如果連接成功,命令行能夠打印“數(shù)據(jù)庫(kù)連接成功”。如果后端增加的接口對(duì)應(yīng)的路由是/addwares。前端訪問(wèn)”http://localhost:3000/addwares“就能訪問(wèn)后端接口了。同理,這里的localhost也可以換成局域網(wǎng)Ip,和后端一一對(duì)應(yīng)。(腳手架默認(rèn)端口3000)

6.至此,前端能夠訪問(wèn)后端接口,后端能夠通過(guò)mongoose操作數(shù)據(jù)庫(kù)。這里正式開(kāi)始寫接口,一個(gè)后端路由對(duì)應(yīng)一個(gè)接口。


server文件夾的routes/index.js。這里寫的是對(duì)應(yīng)的接口路由。

具體的router層-------->controllers層-------->models層-------->controllers層(展示,因?yàn)槲覀儧](méi)有用后端模板,數(shù)據(jù)只在接口請(qǐng)求時(shí)展示)。接下來(lái)我給大家展示我的增加接口。如下

server文件夾的controllers/good.controllers下
server文件夾的models/
server文件夾的common/createModel.js下


server文件夾的schema下面的good.list.js下(此處參數(shù)還可以規(guī)定必傳不必傳)

以上就是寫完一個(gè)增加接口的全流程(具體邏輯我就不分析了,說(shuō)一下流程,有些地方我封裝了一下)。

1.在server文件夾的routes/index.js,下寫增加接口對(duì)應(yīng)的路徑。

2.然后走到controller層定義一個(gè)goodAdd函數(shù),這里我們要輸入商品名稱和價(jià)格,如果我們只輸入一個(gè),后端報(bào)錯(cuò),直接返回前端錯(cuò)誤信息(ctx.body是后端返回給前端的jason數(shù)據(jù)。)。如果輸入成功,然后從控制層到model層,去查找數(shù)據(jù)庫(kù)。

3.到數(shù)據(jù)庫(kù)這里,(大家自行了解Schema,model等名詞),Schema對(duì)應(yīng)著數(shù)據(jù)庫(kù)集合數(shù)據(jù)的定義。成功保存進(jìn)數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)返回狀態(tài)和數(shù)據(jù)到controller層,(用async,await,處理異步)。然后controller層根據(jù)服務(wù)器返回的信息,判斷,返回給前端。至此,增加接口結(jié)束。

4.

最后,代碼過(guò)兩天我會(huì)放在github上,把鏈接粘上來(lái)?,F(xiàn)在有些地方再優(yōu)化一下??赡芪艺f(shuō)的不是很清楚,大家要是不懂盡量去官網(wǎng)學(xué)習(xí)。

文末放個(gè)我看著不錯(cuò)的文章的鏈接。https://blog.csdn.net/qq_32496215/article/details/82469147

http://www.itdecent.cn/p/cbb21c6f3427

https://blog.csdn.net/momDIY/article/details/76285369

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,632評(píng)論 1 32
  • 框架提出的背景 ES6/7帶來(lái)的變革 自ES6確定和ES7中async/await開(kāi)始普及,Node的發(fā)展變得更加...
    宮若石閱讀 8,706評(píng)論 1 14
  • 高并發(fā)平臺(tái)架構(gòu) 設(shè)計(jì)理念 1. 空間換時(shí)間 多級(jí)緩存,靜態(tài)化前端頁(yè)面緩存(HTTP Header中包含Expire...
    AkaTBS閱讀 3,081評(píng)論 0 13
  • 原文出處: 楊步濤的博客 一、 設(shè)計(jì)理念 1. 空間換時(shí)間1) 多級(jí)緩存,靜態(tài)化客戶端頁(yè)面緩存(http head...
    CookieziSui閱讀 2,605評(píng)論 0 48
  • -----“個(gè)轉(zhuǎn)企”政策宣講暨“中銀個(gè)企達(dá)”產(chǎn)品發(fā)布會(huì) 11月28日,中國(guó)銀行韶關(guān)分行聯(lián)合韶關(guān)市工商行政管...
    MARSPING閱讀 460評(píng)論 0 0

友情鏈接更多精彩內(nèi)容