Knowledge Dependence:
阅读文本前,你需要熟悉 Node.js 编程、Express 以及相关工具和常用中间件的使用。

Node.js 以其单线程异步非阻塞的特点,越来越被广大的 Web 后端开发者所喜爱,尤其是在构建高并发的 Web 服务时。而 Express 是 Node.js 开发中最受欢迎的 Web 框架之一。

本文分享一个作者自己用 Express4 写的供学习用的留言板应用。

所实现了的功能:

  • 登录、注册等基本用户操作;
  • 用户资料修改(update);
  • 留言与评论,以及它们的嵌套;
  • 长列表翻页;
  • 文件(头像)上传;
  • 用户权限:对留言的管理,删除自己的留言和评论、以及在自己留言下的其他人的评论;

相关技术点如下:

  • 数据库使用 MongoDB,并使用 Mongoose 进行具体操作;
  • session 写入到数据库中;
  • 使用 flash 进行操作反馈;
  • 留言与评论支持 markdown;
  • 使用 multer 中间件进行文件上传;
  • 使用 bluebird 进行 Promise 异步流程控制;
  • 使用 MVC 模式进行代码分层;

源代码地址:

GitHub - Maples7/MsgBoard: A tiny Message Board for 'MEN'(MongoDB + Express4 + Node.js) beginners!

参考:

《Node.js实战》

用 Express4 写一个简单的留言板的更多相关文章

  1. 手把手教你从零写一个简单的 VUE--模板篇

    教程目录1.手把手教你从零写一个简单的 VUE2.手把手教你从零写一个简单的 VUE--模板篇 Hello,我又回来了,上一次的文章教会了大家如何书写一个简单 VUE,里面实现了VUE 的数据驱动视图 ...

  2. 用js做一个简单的留言板效果

    html部分: 1: <!DOCTYPE> 2: <html lang="zh-en"> 3: <head> 4: <title>j ...

  3. 写一个简单的HTML留言板

    最近有点懒,没码什么字,防止遗忘,从头开始码,写一个简单的HTML留言板.包含两个文件,book.html还有style.css,放在同一目录下. book.html 1 <!DOCTYPE h ...

  4. 手把手教你从零写一个简单的 VUE

    本系列是一个教程,下面贴下目录~1.手把手教你从零写一个简单的 VUE2.手把手教你从零写一个简单的 VUE--模板篇 今天给大家带来的是实现一个简单的类似 VUE 一样的前端框架,VUE 框架现在应 ...

  5. Java写一个简单学生管理系统

    其实作为一名Java的程序猿,无论你是初学也好,大神也罢,学生管理系统一直都是一个非常好的例子,初学者主要是用数组.List等等来写出一个简易的学生管理系统,二.牛逼一点的大神则用数据库+swing来 ...

  6. 利用SpringBoot+Logback手写一个简单的链路追踪

    目录 一.实现原理 二.代码实战 三.测试 最近线上排查问题时候,发现请求太多导致日志错综复杂,没办法把用户在一次或多次请求的日志关联在一起,所以就利用SpringBoot+Logback手写了一个简 ...

  7. 用Python写一个简单的Web框架

    一.概述 二.从demo_app开始 三.WSGI中的application 四.区分URL 五.重构 1.正则匹配URL 2.DRY 3.抽象出框架 六.参考 一.概述 在Python中,WSGI( ...

  8. 如何写一个简单的http服务器

    最近几天用C++写了一个简单的HTTP服务器,作为学习网络编程和Linux环境编程的练手项目,这篇文章记录我在写一个HTTP服务器过程中遇到的问题和学习到的知识. 服务器的源代码放在Github. H ...

  9. 如何写一个简单的shell

    如何写一个简单的shell 看完<UNIX环境高级编程>后我就一直想写一个简单的shell来作为练习,因为有事断断续续的写了好几个月,如今写了差不多来总结一下. 源代码放在了Github: ...

随机推荐

  1. kaggle数据挖掘竞赛初步--Titanic<原始数据分析&缺失值处理>

    Titanic是kaggle上的一道just for fun的题,没有奖金,但是数据整洁,拿来练手最好不过啦. 这道题给的数据是泰坦尼克号上的乘客的信息,预测乘客是否幸存.这是个二元分类的机器学习问题 ...

  2. JAVA 多线程随笔 (一) 可见性和volatile关键字

    // 先上代码 1 public class NoVisibility { private static boolean ready; private static int number; priva ...

  3. HashTree(哈希树) ——和trie类似,只是将字符换成了质数,sphinx用到了???

    摘自:http://blog.csdn.net/yang_yulei/article/details/46337405 哈希树的理论基础 [质数分辨定理] 简单地说就是:n个不同的质数可以" ...

  4. [原创]VM虚拟机Centos6.4网络配置。

    关于虚拟机VMware 3种网络模式(桥接.nat.Host-only)的工作原理http://www.cnblogs.com/hehexiaoxia/p/4042583.html 操作环境 主机:W ...

  5. python爬取数据保存入库

    import urllib2 import re import MySQLdb class LatestTest: #初始化 def __init__(self): self.url="ht ...

  6. office2010密钥

    J33GT-XVVYK-VHBBC-VY7FB-MTQ4CGRPWH-7CDHQ-K3G3C-JH2KX-C88H86CCCX-Y93YP-3WQGT-YCKFW-QTTT76QFDX-PYH2G-P ...

  7. Jupyter notebook 配置目录

    默认打开Jupyter notebook,工作目录是C:\Users\Username,这里面有很多其它与Jupyter notebook无关的文件,也很有用,不能看着烦就删掉,所以需要修改Jupyt ...

  8. 用AE (Adobe After Effects) 处理视频

    这话要从年会说起,我们组的年会节目需要一段场外亲友团的评价视频,于是我们就靠在公司门口的logo前拍了这么一段.但是呢,有很多的不理想: 画面抖动 杂音好烦(中午吃饭时拍的,还有好大的微波炉好了的声音 ...

  9. Australian troops to the fight against Islamic State militants.

    He arrived in Arnhem Land on Sunday, honouring an election promise to spend a week every year in an ...

  10. Unity 几种碰撞模式

    1.OnControllerColliderHit  事件 (角色控制器使用) 2.Physics.Raycast 函数 3.OnTriggerEnter 事件 (碰撞物体使用,给碰撞物体添加碰撞器, ...