用 Express4 写一个简单的留言板
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 写一个简单的留言板的更多相关文章
- 手把手教你从零写一个简单的 VUE--模板篇
教程目录1.手把手教你从零写一个简单的 VUE2.手把手教你从零写一个简单的 VUE--模板篇 Hello,我又回来了,上一次的文章教会了大家如何书写一个简单 VUE,里面实现了VUE 的数据驱动视图 ...
- 用js做一个简单的留言板效果
html部分: 1: <!DOCTYPE> 2: <html lang="zh-en"> 3: <head> 4: <title>j ...
- 写一个简单的HTML留言板
最近有点懒,没码什么字,防止遗忘,从头开始码,写一个简单的HTML留言板.包含两个文件,book.html还有style.css,放在同一目录下. book.html 1 <!DOCTYPE h ...
- 手把手教你从零写一个简单的 VUE
本系列是一个教程,下面贴下目录~1.手把手教你从零写一个简单的 VUE2.手把手教你从零写一个简单的 VUE--模板篇 今天给大家带来的是实现一个简单的类似 VUE 一样的前端框架,VUE 框架现在应 ...
- Java写一个简单学生管理系统
其实作为一名Java的程序猿,无论你是初学也好,大神也罢,学生管理系统一直都是一个非常好的例子,初学者主要是用数组.List等等来写出一个简易的学生管理系统,二.牛逼一点的大神则用数据库+swing来 ...
- 利用SpringBoot+Logback手写一个简单的链路追踪
目录 一.实现原理 二.代码实战 三.测试 最近线上排查问题时候,发现请求太多导致日志错综复杂,没办法把用户在一次或多次请求的日志关联在一起,所以就利用SpringBoot+Logback手写了一个简 ...
- 用Python写一个简单的Web框架
一.概述 二.从demo_app开始 三.WSGI中的application 四.区分URL 五.重构 1.正则匹配URL 2.DRY 3.抽象出框架 六.参考 一.概述 在Python中,WSGI( ...
- 如何写一个简单的http服务器
最近几天用C++写了一个简单的HTTP服务器,作为学习网络编程和Linux环境编程的练手项目,这篇文章记录我在写一个HTTP服务器过程中遇到的问题和学习到的知识. 服务器的源代码放在Github. H ...
- 如何写一个简单的shell
如何写一个简单的shell 看完<UNIX环境高级编程>后我就一直想写一个简单的shell来作为练习,因为有事断断续续的写了好几个月,如今写了差不多来总结一下. 源代码放在了Github: ...
随机推荐
- 如何实现textarea中获取动态剩余字数的实现
工作中遇到一个案例,之前没有写过,今儿啃了半个下午硬是给写出来,灰常又成就感!当然对于js大牛来说这根本不算啥,但是对于我自己的js能力又向前迈出一小步. 案例介绍:我们常见到有的网站有textare ...
- CentOS_7.2编译安装PHP_5.6.20添加扩展模块
添加ZendGuardLoader扩展: # 解压ZendGuardLoader.so到"/usr/local/php/lib/php/extensions/no-debug-non-zts ...
- js 判断IE浏览器,包含IE6/7/8/9
//判断IE6-9的版本,num可取值为6/7/8/9//若不给参数num,仅判断浏览器是否为IE,不判断版本 var isIE = function (num) { if(arguments.len ...
- innodb log file size 配置估算以及修改
root@localhost:(none) 06:22:17>pager grep seq PAGER set to 'grep seq' root@localhost:(none) 06:30 ...
- blade and soul Personal Combos
Personal Combos Since Blade and Soul is mainly based on skills, the game is more interesting after y ...
- Fibonacci(斐波那契)非递归实现。容易看懂
#include<iostream>using namespace std;int main(){ int n; cout<<"please input a n\n& ...
- Ubuntu上安装MySql过程,以及遇到的一些问题
今天在Ubuntu服务器上安装MySql的时候遇到了一些问题,记录下来,以防以后忘记. 安装环境:Ubuntu14.04 安装命令: //安装Mysal服务端//会提示输入root密码 sudo ap ...
- 替换url中某个参数的值或是添加某个参数的方法(js 分页上下页可以使用)
function changeUrl(base, find, value) { var offset = base.indexOf(find); var index; var rr = ''; if( ...
- CSS-position详解
position属性 position属性可以调整DOM元素在浏览器中的位置,能够很好的体现HTML普通流这个特征.重点在于应用了不同的position值之后是否有脱离普通流和改变Display属性这 ...
- WPF 调用WinForm控件
WPF可以使用WindowsFormsHost控件做为容器去显示WinForm控件,类似的用法网上到处都是,就是拖一个WindowsFormsHost控件winHost1到WPF页面上,让后设置win ...