Node.js系列-express(下)
前言
距上次更新部落格又兩個月多了,這兩個月內除了上班時間忙公司的專案外,下班後也沒有閒著,做了點外包,有小程式的,管理端的專案。也可能那段時間做的外包專案也都比較急,所以晚上都搞到一點左右睡,嚴重的壓榨了自己的休息時間,搞得緩了很久才恢復過來。當然,也發現了忙外包的好處和壞處了,好處就可以多了些專案經驗,例如小程式的做的是音視訊類的教育應用,也算了解了一些公司專案不需要用到的api;管理端的也應用了vue+element-ui開發,算為公司專案奠定了些基礎吧。壞處嘛,就是真心勞累,也由於瞭解市場不多,報價並不高,還可以說低,接了後問了朋友都說我的價格低啊,心累啊~~~,還有就是做的專案其實說深的,對自身技術提高感覺效果一般,所以也總結了技術的提升還是需要自身沉澱,不不能靠一味的多做專案。好了,不扯了,關於node.js的學習也已經一大段時間沒更新了,現在繼續更新,有講得不到位或者錯誤的地方希望大佬指出。
Express
express(上)主要講了express框架結構、路由、中介軟體等概念。這章我們主要實現簡單的使用者增改查等功能(暫不借助資料庫),熟悉express框架的開發。還是先安裝express-generator應用骨架並使用ejs模板
//1.安裝express-generator npm install expess-generator -g //2.使用ejs模板 express --view=ejs //3.安裝依賴 npm install
框架結構:在原框架上新建models資料夾,用於儲存使用者模型
. ├── app.js ├── bin │ └── www ├── package.json ├── models │ └── in_memo │ └── users.js ├── public │ ├── images │ ├── javascripts │ └── stylesheets │ └── style.css ├── routes │ ├── index.js │ └── users.js └── views ├── error.ejs ├── index.ejs └── layout.ejs
這樣,大致的框架我們就搭建好了。
使用者的增改查
1.新建使用者模型:構造使用者類,建立使用者,獲取使用者列表,獲取某一使用者,更新使用者
/** * Created by aaron. * description:User Model */ let USER_ID_INT=10000; let users=[]; class User{ constructor(params){ if(!params.name || !params.age) throw new Error('name and age is required when create a new user.')this.name=params.name this.age=params.age this._id=USER_ID_INT++ } } async function createANewUser(params) { const user=new User(params) users.push(user) return user } async function getUsers() { return users } async function getUserById(userId,params) { const user=users.find(u => u._id===userId) console.log(user) return user } async function updateUserById(userId,params) { const user=users.find(u=>u._id===userId) if(params.name)user.name=params.name if(params.age)user.age=params.age return user } module.exports={ model:users, createANewUser, getUsers, getUserById, updateUserById }
2.在routes新建users.js路由完成使用者的增查改功能
const express = require('express'); const router = express.Router(); const Users=require('../models/in_memo/users') /* GET users listing. */ router.route('/') .get((req, res, next) => { (async()=>{ const users=await Users.getUsers() return { code:0, users:users } })() .then((r)=>{ res.json(r) }) .catch((e)=>{ next(e) }) }) .post((req,res,next)=>{ (async()=>{ const user=await Users.createANewUser({ name:req.body.name, age:req.body.age }) return { code:0, user:user } })() .then((r)=>{ res.json(r) }) .catch((e)=>{ next(e) }) }); router.route('/:id') .get((req,res,next)=>{ (async()=>{ const user=await Users.getUserById(Number(req.params.id)) return { code:0, user:user } })() .then((r)=>{ res.json(r) }) .catch((e)=>{ next(e) }) }) .patch((req,res,next)=>{ (async ()=>{ const user=await Users.updateUserById(Number(req.params.id),{ name:req.body.name, age:req.body.age }) return { code:0, user:user } })() .then(r=>{ res.json(r) }) .catch(e=>{ next(e) }) }) module.exports = router;
3.最後加路由掛載到app.js上即可
這樣,就完成了簡單的使用者的增改查功能了,啟動專案後,我們可通過postman完成專案功能的測試。
建立新使用者截圖:
獲取使用者截圖:
總結
這樣,我們就可以通過express框架完成對使用者的增改查功能了,後續會將完整程式碼上傳到GitHub上,也將新增mongoose資料庫的應用。也希望有大佬指出缺漏或錯誤的,謝謝。