摘要:序列文章從項(xiàng)目中由淺入深的學(xué)習(xí)微信小程序和快應(yīng)用從項(xiàng)目中由淺入深的學(xué)習(xí)從項(xiàng)目中由淺入深的學(xué)習(xí)前言的出現(xiàn)前端已經(jīng)可以用一把梭從前端寫(xiě)到后臺(tái)。
序列文章
從項(xiàng)目中由淺入深的學(xué)習(xí)vue,微信小程序和快應(yīng)用 (1)
從項(xiàng)目中由淺入深的學(xué)習(xí)react (2)
從項(xiàng)目中由淺入深的學(xué)習(xí)typescript (3)
node.js的出現(xiàn)前端已經(jīng)可以用js一把梭,從前端寫(xiě)到后臺(tái)。1.效果圖
本文從后臺(tái)利用node的框架koa+mongodb實(shí)現(xiàn)數(shù)據(jù)的增刪改查和注冊(cè)接口,前端利用umi + dva +ant-design-pro來(lái)實(shí)現(xiàn)數(shù)據(jù)渲染。實(shí)現(xiàn)一個(gè)小全棧project,就是so-easy
react-koa 全棧項(xiàng)目,歡迎star
koa:node框架
koa-bodyparser:解析body的中間件
koa-router :解析router的中間件
mongoose :基于mongdodb的數(shù)據(jù)庫(kù)框架,操作數(shù)據(jù)
nodemon:后臺(tái)服務(wù)啟動(dòng)熱更新
├── app // 主項(xiàng)目目錄
│ ├── controllrts // 控制器目錄(數(shù)據(jù)處理)
│ │ └── ... // 各個(gè)表對(duì)應(yīng)的控制器
│ ├── middleware // 中間件目錄
│ │ └── resFormat.js // 格式化返回值
│ ├── models // 表目錄(數(shù)據(jù)模型)
│ │ ├── course.js // 課程表
│ │ └── user.js // 用戶表
│ └── utils // 工具庫(kù)
│ │ ├── formatDate.js // 時(shí)間格式化
│ │ └── passport.js // 用戶密碼加密和驗(yàn)證工具
├── db-template // 數(shù)據(jù)庫(kù)導(dǎo)出的 json 文件
├── routes // 路由目錄
│ └── api // 接口目錄
│ │ ├── course_router.js // 課程相關(guān)接口
│ │ └── user_router.js // 用戶相關(guān)接口
├── app.js // 項(xiàng)目入口
└── config.js // 基礎(chǔ)配置信息
1.git clone
2.安裝mongodb:http://www.runoob.com/mongodb...
3.安裝 Robomongo是mongodb可視化操作工具 (可選)
4.啟動(dòng)
cd koa-template
npm run start
cd react-template
npm run start
注意:
mongodb啟動(dòng)默認(rèn)端口號(hào)是27017,啟動(dòng)看是否被占用
后端項(xiàng)目端口號(hào)是3000,可以在koa-template/config.js里面修改
API | 作用 |
---|---|
new koa() | 得到koa實(shí)例 |
use | koa的屬性,添加中間件 |
context | 將 node 的 request 和 response 對(duì)象封裝到單個(gè)對(duì)象中,每個(gè)請(qǐng)求都將創(chuàng)建一個(gè) Context,通過(guò)ctx訪問(wèn)暴露的方法 |
ctx方法 | request:請(qǐng)求主體; response:響應(yīng)主體; ctx.cookies.get:獲取cookie; ctx.throw:拋出異常 |
request屬性 | header:請(qǐng)求頭; method:方法; url:請(qǐng)求url; originalUrl請(qǐng)求原始URL; href:完整URL; hostname:主機(jī)名; type:請(qǐng)求頭類型; |
response屬性 | header:響應(yīng)頭; status:狀態(tài),未設(shè)置默認(rèn)為200或204; body:響應(yīng)主體,string(提示信息) Buffer Stream(流) Object Array JSON-字符串化ull 無(wú)內(nèi)容響應(yīng); get:獲取響應(yīng)頭字段; set:設(shè)置響應(yīng)頭; append:添加響應(yīng)頭; type:響應(yīng)類型; lastModified:返回為 Date, 如果存在; etag:設(shè)置緩存 |
API | 作用 |
---|---|
get | get方法 |
post | post方法 |
patch | patch方法 |
delete | delete方法 |
prefix | 配置公共路由路徑 |
use | 將路由分層,同一個(gè)實(shí)例router中可以配置成不同模塊 |
ctx.params | 獲取動(dòng)態(tài)路由參數(shù) |
fs | 分割文件 |
API | 作用 |
---|---|
Schema | 數(shù)據(jù)模式,表結(jié)構(gòu)的定義;每個(gè)schema會(huì)映射到mongodb中的一個(gè)collection,它不具備操作數(shù)據(jù)庫(kù)的能力 |
model | schema生成的模型,可以對(duì)數(shù)據(jù)庫(kù)的操作 |
model的操作database方法
API | 方法 |
---|---|
create/save | 創(chuàng)建 |
remove | 移除 |
delete | 刪除一個(gè) |
deleteMany | 刪除多個(gè) |
find | 查找 |
findById | 通過(guò)id查找 |
findOne | 找到一個(gè) |
count | 匹配文檔數(shù)量 |
update | 更新 |
updateOne | 更新一個(gè) |
updateMany | 更新多個(gè) |
findOneAndUpdate | 找到一個(gè)并更新 |
findByIdAndUpdate | 通過(guò)id查找并更新 |
findOneAndRemove | 找到一個(gè)并移除 |
replaceOne | 替換一個(gè) |
watch | 監(jiān)聽(tīng)變化 |
query查詢API
API | 作用 |
---|---|
where | 指定一個(gè) path |
equals | 等于 |
or | 或 |
nor | 不是 |
gt | 大于 |
lt | 小于 |
size | 大小 |
exists | 存在 |
within | 在什么之內(nèi) |
注:Query是通過(guò)Model.find()來(lái)實(shí)例化
aggregate(聚合)API
API | 作用 |
---|---|
append | 追加 |
addFields | 追加文件 |
limit | 限制大小 |
sort | 排序 |
注:aggregate=Model.aggregate()
更多詳細(xì)API,請(qǐng)戳
8.react項(xiàng)目詳情從項(xiàng)目中由淺入深的學(xué)習(xí)react
9.總結(jié)一個(gè)koa項(xiàng)目就是從koa-bodyparser來(lái)解析body,koa-router來(lái)分發(fā)和處理接口,mongose來(lái)操作database。入門(mén)就是so-easy!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/19519.html
摘要:插件開(kāi)發(fā)前端掘金作者原文地址譯者插件是為應(yīng)用添加全局功能的一種強(qiáng)大而且簡(jiǎn)單的方式。提供了與使用掌控異步前端掘金教你使用在行代碼內(nèi)優(yōu)雅的實(shí)現(xiàn)文件分片斷點(diǎn)續(xù)傳。 Vue.js 插件開(kāi)發(fā) - 前端 - 掘金作者:Joshua Bemenderfer原文地址: creating-custom-plugins譯者:jeneser Vue.js插件是為應(yīng)用添加全局功能的一種強(qiáng)大而且簡(jiǎn)單的方式。插....
摘要:搭建個(gè)人博客很久以來(lái)就特別想搭建一個(gè),但是都是由于技術(shù)原因沒(méi)有搭建起來(lái)。學(xué)習(xí),并對(duì)代碼進(jìn)行重構(gòu)。因?yàn)檎麄€(gè)博客要完整的從項(xiàng)目構(gòu)建到項(xiàng)目上線的確比較繁瑣,這里只是給想要試試與一個(gè)代碼參考。 vue+koa+mongodb 搭建個(gè)人博客 很久以來(lái)就特別想搭建一個(gè)blog,但是都是由于技術(shù)原因沒(méi)有搭建起來(lái)。以前學(xué)習(xí)github的時(shí)候準(zhǔn)備采用github與hexo來(lái)搭建。但是后來(lái)想了一下自己也在...
摘要:為了在項(xiàng)目中更好的使用來(lái)完成我們的業(yè)務(wù),我們探究了性能暴力的成因以及如何更加合理的使用。的出現(xiàn)能夠快速的完成系統(tǒng)的開(kāi)發(fā)于拓展需求。不同的業(yè)務(wù)會(huì)導(dǎo)致不同的數(shù)據(jù)庫(kù)使用情況。緩存類型根據(jù)情況選擇或高速度也是有代價(jià)的。轉(zhuǎn)自初探暴力美學(xué) AUTH:PHILO version:2.0 showImg(http://7viiaq.com1.z0.glb.clouddn.com/u=14409196...
摘要:小練習(xí)作者本文首發(fā)博客功能基于進(jìn)行登錄,注冊(cè),留言的簡(jiǎn)單網(wǎng)站。所以這個(gè)小練習(xí),從一個(gè)簡(jiǎn)單的方面入手,希望能給踩過(guò)同樣多坑的同路人一點(diǎn)啟發(fā)。就意味著要重新登錄。的作用是進(jìn)行進(jìn)程守護(hù),當(dāng)你的意外的停止的時(shí)候,進(jìn)行重啟。 Vue+Koa+Mongodb 小練習(xí) 作者: Pawn 本文首發(fā): Pawn博客 功能: 基于vue koa mongodb進(jìn)行登錄,注冊(cè),留言的簡(jiǎn)單網(wǎng)站。 體驗(yàn)地址: ...
摘要:前言筆者的前端開(kāi)發(fā)已經(jīng)有些時(shí)日了,對(duì)于一直保留著最初的恐懼,倘若一座不可跨越的高山,思前想后終于邁出最后一步,踏入了開(kāi)拓自己視野的新視界,希望在看這篇文章的你可以一起跟我動(dòng)手嘗試。面向的下一代框架。由團(tuán)隊(duì)打造,特點(diǎn)優(yōu)雅簡(jiǎn)潔靈活體積小。 showImg(https://segmentfault.com/img/bVbuorM?w=1514&h=568); 前言 ?????筆者的前端開(kāi)發(fā)已...
閱讀 3601·2023-04-25 15:52
閱讀 640·2021-11-19 09:40
閱讀 2821·2021-09-26 09:47
閱讀 1081·2021-09-22 15:17
閱讀 3661·2021-08-13 13:25
閱讀 2376·2019-08-30 15:56
閱讀 3547·2019-08-30 13:56
閱讀 2183·2019-08-30 11:27