前言

  距上次更新博客又两个月多了,这两个月内除了上班时间忙公司的项目外,下班后也没有闲着,做了点外包,有小程序的,管理端的项目。也可能那段时间做的外包项目也都比较急,所以晚上都搞到一点左右睡,严重的压榨了自己的休息时间,搞得缓了很久才恢复过来。当然,也发现了忙外包的好处和坏处了,好处就可以多了些项目经验,例如小程序的做的是音视频类的教育应用,也算了解了一些公司项目不需要用到的api;管理端的也应用了vue+element-ui开发,算为公司项目奠定了些基础吧。坏处嘛,就是真心劳累,也由于了解市场不多,报价并不高,还可以说低,接了后问了朋友都说我的价格低啊,心累啊~~~,还有就是做的项目其实说深的,对自身技术提高感觉效果一般,所以也总结了技术的提升还是需要自身沉淀,不不能靠一味的多做项目。好了,不扯了,关于node.js的学习也已经一大段时间没更新了,现在继续更新,有讲得不到位或者错误的地方希望大佬指出。

Express

  express(上)主要讲了express框架结构、路由、中间件等概念。这章我们主要实现简单的用户增改查等功能(暂不借助数据库),熟悉express框架的开发。还是先安装express-generator应用骨架并使用ejs模板

  1. //1.安装express-generator
  2. npm install expess-generator -g
  3. //2.使用ejs模板
  4. express --view=ejs
  5. //3.安装依赖
  6. npm install

  框架结构:在原框架上新建models文件夹,用于保存用户模型

  1. .
  2. ├── app.js
  3. ├── bin
  4. └── www
  5. ├── package.json
  6. ├── models
  7. └── in_memo
  8. └── users.js
  9. ├── public
  10. ├── images
  11. ├── javascripts
  12. └── stylesheets
  13. └── style.css
  14. ├── routes
  15. ├── index.js
  16. └── users.js
  17. └── views
  18. ├── error.ejs
  19. ├── index.ejs
  20. └── layout.ejs

  这样,大致的框架我们就搭建好了。

用户的增改查

  1.新建用户模型:构造用户类,创建用户,获取用户列表,获取某一用户,更新用户

  1. /**
  2. * Created by aaron.
  3. * description:User Model
  4. */
  5. let USER_ID_INT=10000;
  6. let users=[];
  7.  
  8. class User{
  9. constructor(params){
  10. if(!params.name || !params.age)
  11. throw new Error('name and age is required when create a new user.')
  12. this.name=params.name
  13. this.age=params.age
  14. this._id=USER_ID_INT++
  15. }
  16. }
  17.  
  18. async function createANewUser(params) {
  19. const user=new User(params)
  20. users.push(user)
  21. return user
  22. }
  23.  
  24. async function getUsers() {
  25. return users
  26. }
  27.  
  28. async function getUserById(userId,params) {
  29. const user=users.find(u => u._id===userId)
  30. console.log(user)
  31. return user
  32. }
  33.  
  34. async function updateUserById(userId,params) {
  35. const user=users.find(u=>u._id===userId)
  36. if(params.name)user.name=params.name
  37. if(params.age)user.age=params.age
  38. return user
  39. }
  40.  
  41. module.exports={
  42. model:users,
  43. createANewUser,
  44. getUsers,
  45. getUserById,
  46. updateUserById
  47. }

  2.在routes新建users.js路由完成用户的增查改功能

  1. const express = require('express');
  2. const router = express.Router();
  3. const Users=require('../models/in_memo/users')
  4.  
  5. /* GET users listing. */
  6. router.route('/')
  7. .get((req, res, next) => {
  8. (async()=>{
  9. const users=await Users.getUsers()
  10. return {
  11. code:0,
  12. users:users
  13. }
  14. })()
  15. .then((r)=>{
  16. res.json(r)
  17. })
  18. .catch((e)=>{
  19. next(e)
  20. })
  21. })
  22. .post((req,res,next)=>{
  23. (async()=>{
  24. const user=await Users.createANewUser({
  25. name:req.body.name,
  26. age:req.body.age
  27. })
  28. return {
  29. code:0,
  30. user:user
  31. }
  32. })()
  33. .then((r)=>{
  34. res.json(r)
  35. })
  36. .catch((e)=>{
  37. next(e)
  38. })
  39. });
  40.  
  41. router.route('/:id')
  42. .get((req,res,next)=>{
  43. (async()=>{
  44. const user=await Users.getUserById(Number(req.params.id))
  45. return {
  46. code:0,
  47. user:user
  48. }
  49. })()
  50. .then((r)=>{
  51. res.json(r)
  52. })
  53. .catch((e)=>{
  54. next(e)
  55. })
  56. })
  57. .patch((req,res,next)=>{
  58. (async ()=>{
  59. const user=await Users.updateUserById(Number(req.params.id),{
  60. name:req.body.name,
  61. age:req.body.age
  62. })
  63. return {
  64. code:0,
  65. user:user
  66. }
  67. })()
  68. .then(r=>{
  69. res.json(r)
  70. })
  71. .catch(e=>{
  72. next(e)
  73. })
  74. })
  75.  
  76. module.exports = router;

  3.最后加路由挂载到app.js上即可

  这样,就完成了简单的用户的增改查功能了,启动项目后,我们可通过postman完成项目功能的测试。

  创建新用户截图:

  获取用户截图:

总结

  这样,我们就可以通过express框架完成对用户的增改查功能了,后续会将完整代码上传到GitHub上,也将添加mongoose数据库的应用。也希望有大佬指出缺漏或错误的,谢谢。

  

Node.js系列-express(下)的更多相关文章

  1. Node.js系列-express(上)

    前言 Node.js系列的第一篇:http,大概描述了通过使用node.js内置的api创建一个服务并监听request实现简单的增删改查.现在,我们就通过通读express官网及使用express框 ...

  2. Node.js、express、mongodb 入门(基于easyui datagrid增删改查)

    前言 从在本机(win8.1)环境安装相关环境到做完这个demo大概不到两周时间,刚开始只是在本机安装环境并没有敲个Demo,从周末开始断断续续的想写一个,按照惯性思维就写一个增删改查吧,一方面是体验 ...

  3. node.js和express.js安装和使用步骤 [windows]

    PS: NODEJS:https://nodejs.org NPM:https://www.npmjs.com/ 一.node.js安装与配置 到https://nodejs.org/en/downl ...

  4. Node.js基于Express框架搭建一个简单的注册登录Web功能

    这个小应用使用到了node.js  bootstrap  express  以及数据库的操作 :使用mongoose对象模型来操作 mongodb 如果没了解过的可以先去基本了解一下相关概念~ 首先注 ...

  5. node.js系列笔记之node.js初识《一》

    node.js系列笔记之node.js初识<一> 一:环境说明 1.1 Linux系统CentOS 5.8 1.2 nodejs v0.10.15 1.3 nodejs源码下载地址 htt ...

  6. Node.js系列-http

    前言: 最近一直忙着公司项目的事,战友们的留言也没空回复,博客也有段时间没有更新了,年底了就是一个的忙啊~~~(ps:同感的也给个赞吧) 现在前端的就是一直地更新一直有新的东西出来,什么ES2015, ...

  7. node.js使用express框架进行文件上传

    关于node.js使用express框架进行文件上传,主要来自于最近对Settings-Sync插件做的研究.目前的研究算是取得的比较好的进展.Settings-Sync中通过快捷键上传文件,其实主要 ...

  8. node.js之express框架

    之前学习过node.js接触过express框架,最近为了编写一个mock server正好用到了express.下面正好就跟大家介绍一下关于express.今天的内容主要围绕这么几个方面? expr ...

  9. node.js中express模块创建服务器和http模块客户端发请求

    首先下载express模块,命令行输入 npm install express 1.node.js中express模块创建服务端 在js代码同文件位置新建一个文件夹(www_root),里面存放网页文 ...

随机推荐

  1. java中传值方式的个人理解

    前言 这几天在整理java基础知识方面的内容,对于值传递还不是特别理解,于是查阅了一些资料和网上相关博客,自己进行了归纳总结,最后将其整理成了一篇博客. 值传递 值传递是指在调用函数时将实际参数复制一 ...

  2. 不使用JS实现表单验证

    我们可以给表单元素添加required,pattern属性,还有根据具体元素类型决定的Measureable属性,如:min,max等. required:表示必填. pattern:一般用于type ...

  3. 根据id来大量删除数据between

    id的范围来删除数据 比如要删除 110到220的id信息:delete id from 表名 where id between 110 and 220;

  4. 纯CSS选项卡

    html: <!doctype html> <html> <head> <meta charset="utf-8"> <tit ...

  5. pkg-config 用法

    在进行使用fuse 2.9写程序的时候,遇到了pkg-config 命令和 .pc 文件.本篇博客就具体说明一下pkg-config 命令是什么? 我们首先看一下: gcc -Wall hello.c ...

  6. python 序列化pickle 和 encode的区别

    我们把变量从内存中变成可存储或传输的过程称之为序列化. 序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上. 反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即un ...

  7. git命令设置简写(别名)

    ### git命令设置简写(别名) 前言:有时候在执行git命令比较多的情况下,每次敲git命令比较费时,同时有些命令比如cherry-pick这种比较长时更是费时,所以可以通过设置命令行简写来设置. ...

  8. domain or business logic

    Here are a few of the questions you should ask when writing business logic: ¡Do you fully understand ...

  9. 【PAT】B1043 输出PATest(20 分)

    /* */ #include<stdio.h> #include<algorithm> #include<string.h> #include<ctype.h ...

  10. SQL查询语句,怎样查询重复数据

    SQL查询语句,怎样查询重复数据 2012-02-22 14:50神奇的马骁勇 | 浏览 0 次 有表A, 中有字段id, name, memo现在有很多id重复的数据,怎么把这些重复的都查出来?gr ...