[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-3314":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":16,"stars30d":17,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":18,"rankGlobal":10,"rankLanguage":10,"license":10,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":19,"hasPages":19,"topics":21,"createdAt":10,"pushedAt":10,"updatedAt":30,"readmeContent":31,"aiSummary":32,"trendingCount":16,"starSnapshotCount":16,"syncStatus":33,"lastSyncTime":34,"discoverSource":35},3314,"N-blog","nswbmw\u002FN-blog","nswbmw","《一起学 Node.js》","",null,"JavaScript",15394,4555,911,26,0,1,45,false,"master",[22,23,24,25,26,27,28,29],"blog","course","express","javascript","mongodb","mongolass","nodejs","tutorial","2026-06-12 02:00:48","## N-blog\n\n使用 Express + MongoDB 搭建多人博客\n\n## 开发环境\n\n- Node.js: `8.9.1`\n- MongoDB: `3.4.10`\n- Express: `4.16.2`\n\n## 目录\n\n- 开发环境搭建\n    - [Node.js 的安装与使用](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F1.1%20Node.js%20%E7%9A%84%E5%AE%89%E8%A3%85%E4%B8%8E%E4%BD%BF%E7%94%A8.md)\n        - [安装 Node.js](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F1.1%20Node.js%20%E7%9A%84%E5%AE%89%E8%A3%85%E4%B8%8E%E4%BD%BF%E7%94%A8.md#111-安装-nodejs)\n        - [n 和 nvm](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F1.1%20Node.js%20%E7%9A%84%E5%AE%89%E8%A3%85%E4%B8%8E%E4%BD%BF%E7%94%A8.md#112-n-和-nvm)\n        - [nrm](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F1.1%20Node.js%20%E7%9A%84%E5%AE%89%E8%A3%85%E4%B8%8E%E4%BD%BF%E7%94%A8.md#113-nrm)\n    - [MongoDB 的安装与使用](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F1.2%20MongoDB%20%E7%9A%84%E5%AE%89%E8%A3%85%E4%B8%8E%E4%BD%BF%E7%94%A8.md)\n        - [安装与启动 MongoDB](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F1.2%20MongoDB%20%E7%9A%84%E5%AE%89%E8%A3%85%E4%B8%8E%E4%BD%BF%E7%94%A8.md#121-安装与启动-mongodb)\n        - [Robomongo 和 MongoChef](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F1.2%20MongoDB%20%E7%9A%84%E5%AE%89%E8%A3%85%E4%B8%8E%E4%BD%BF%E7%94%A8.md#122-robomongo-和-mongochef)\n- Node.js 知识点讲解\n    - [require](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F2.1%20require.md)\n    - [exports 和 module.exports](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F2.2%20exports%20%E5%92%8C%20module.exports.md)\n    - [Promise](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F2.3%20Promise.md)\n    - [环境变量](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F2.4%20%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F.md)\n    - [packge.json](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F2.5%20package.json.md)\n        - [semver](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F2.5%20package.json.md#251-semver)\n    - [npm 使用注意事项](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F2.6%20npm%20%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md)\n        - [npm init](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F2.6%20npm%20%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md#261-npm-init)\n        - [npm install](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F2.6%20npm%20%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md#262-npm-install)\n        - [npm scripts](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F2.6%20npm%20%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md#263-npm-scripts)\n        - [npm shrinkwrap ](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F2.6%20npm%20%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md#264-npm-shrinkwrap)\n- Hello, Express\n    - [初始化一个 Express 项目](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F3.1%20%E5%88%9D%E5%A7%8B%E5%8C%96%E4%B8%80%E4%B8%AA%20Express%20%E9%A1%B9%E7%9B%AE.md)\n        - [supervisor](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F3.1%20%E5%88%9D%E5%A7%8B%E5%8C%96%E4%B8%80%E4%B8%AA%20Express%20%E9%A1%B9%E7%9B%AE.md#311-supervisor)\n    - [路由](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F3.2%20%E8%B7%AF%E7%94%B1.md)\n        - [express.Router](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F3.2%20%E8%B7%AF%E7%94%B1.md#321-expressrouter)\n    - [模板引擎](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F3.3%20%E6%A8%A1%E6%9D%BF%E5%BC%95%E6%93%8E.md)\n        - [ejs](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F3.3%20%E6%A8%A1%E6%9D%BF%E5%BC%95%E6%93%8E.md#331-ejs)\n        - [includes](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F3.3%20%E6%A8%A1%E6%9D%BF%E5%BC%95%E6%93%8E.md#332-includes)\n    - [Express 浅析](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F3.4%20Express%20%E6%B5%85%E6%9E%90.md)\n        - [中间件与 next](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F3.4%20Express%20%E6%B5%85%E6%9E%90.md#341-中间件与-next)\n        - [错误处理](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F3.4%20Express%20%E6%B5%85%E6%9E%90.md#342-错误处理)\n- 一个简单的博客\n    - [开发环境](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.1%20%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83.md)\n    - [准备工作](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.2%20%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C.md)\n        - [目录结构](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.2%20%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C.md#421-目录结构)\n        - [安装依赖模块](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.2%20%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C.md#422-安装依赖模块)\n        - [ESLint](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.2%20%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C.md#423-eslint)\n        - [EditorConfig](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.2%20%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C.md#424-editorconfig)\n    - [配置文件](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.3%20%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.md)\n        - [config-lite](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.3%20%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.md#431-config-lite)\n    - [功能设计](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.4%20%E5%8A%9F%E8%83%BD%E8%AE%BE%E8%AE%A1.md)\n        - [功能与路由设计](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.4%20%E5%8A%9F%E8%83%BD%E8%AE%BE%E8%AE%A1.md#441-功能与路由设计)\n        - [会话](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.4%20%E5%8A%9F%E8%83%BD%E8%AE%BE%E8%AE%A1.md#442-会话)\n        - [页面通知](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.4%20%E5%8A%9F%E8%83%BD%E8%AE%BE%E8%AE%A1.md#443-页面通知)\n        - [权限控制](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.4%20%E5%8A%9F%E8%83%BD%E8%AE%BE%E8%AE%A1.md#444-权限控制)\n    - [页面设计](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.5%20%E9%A1%B5%E9%9D%A2%E8%AE%BE%E8%AE%A1.md)\n        - [组件](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.5%20%E9%A1%B5%E9%9D%A2%E8%AE%BE%E8%AE%A1.md#451-组件)\n        - [app.locals 和 res.locals](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.5%20%E9%A1%B5%E9%9D%A2%E8%AE%BE%E8%AE%A1.md#452-applocals-和-reslocals)\n    - [连接数据库](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.6%20%E8%BF%9E%E6%8E%A5%E6%95%B0%E6%8D%AE%E5%BA%93.md)\n        - [为什么使用 Mongolass](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.6%20%E8%BF%9E%E6%8E%A5%E6%95%B0%E6%8D%AE%E5%BA%93.md#461-为什么使用-mongolass)\n    - [注册](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.7%20%E6%B3%A8%E5%86%8C.md)\n        - [用户模型设计](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.7%20%E6%B3%A8%E5%86%8C.md#471-用户模型设计)\n        - [注册页](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.7%20%E6%B3%A8%E5%86%8C.md#472-注册页)\n        - [注册与文件上传](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.7%20%E6%B3%A8%E5%86%8C.md#473-注册与文件上传)\n    - [登出与登录](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.8%20%E7%99%BB%E5%87%BA%E4%B8%8E%E7%99%BB%E5%BD%95.md)\n        - [登出](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.8%20%E7%99%BB%E5%87%BA%E4%B8%8E%E7%99%BB%E5%BD%95.md#481-登出)\n        - [登录页](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.8%20%E7%99%BB%E5%87%BA%E4%B8%8E%E7%99%BB%E5%BD%95.md#482-登录页)\n        - [登录](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.8%20%E7%99%BB%E5%87%BA%E4%B8%8E%E7%99%BB%E5%BD%95.md#483-登录)\n    - [文章](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.9%20%E6%96%87%E7%AB%A0.md)\n        - [文章模型设计](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.9%20%E6%96%87%E7%AB%A0.md#491-文章模型设计)\n        - [发表文章](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.9%20%E6%96%87%E7%AB%A0.md#492-发表文章)\n        - [主页与文章页](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.9%20%E6%96%87%E7%AB%A0.md#493-主页与文章页)\n        - [编辑与删除文章](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.9%20%E6%96%87%E7%AB%A0.md#494-编辑与删除文章)\n    - [留言](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.10%20%E7%95%99%E8%A8%80.md)\n        - [留言模型设计](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.10%20%E7%95%99%E8%A8%80.md#4101-留言模型设计)\n        - [显示留言](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.10%20%E7%95%99%E8%A8%80.md#4102-显示留言)\n        - [发表与删除留言](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.10%20%E7%95%99%E8%A8%80.md#4103-发表与删除留言)\n    - [404页面](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.11%20404%20%E9%A1%B5%E9%9D%A2.md)\n    - [错误页面](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.12%20%E9%94%99%E8%AF%AF%E9%A1%B5%E9%9D%A2.md)\n    - [日志](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.13%20%E6%97%A5%E5%BF%97.md)\n        - [winston 和 express-winston](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.13%20%E6%97%A5%E5%BF%97.md#4131-winston-和-express-winston)\n        - [.gitignore](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.13%20%E6%97%A5%E5%BF%97.md#4132-gitignore)\n    - [测试](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.14%20%E6%B5%8B%E8%AF%95.md)\n        - [mocha 和 supertest](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.14%20%E6%B5%8B%E8%AF%95.md#4141-mocha-和-supertest)\n        - [测试覆盖率](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.14%20%E6%B5%8B%E8%AF%95.md#4142-测试覆盖率)\n    - [部署](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.15%20%E9%83%A8%E7%BD%B2.md)\n        - [申请 MLab](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.15%20%E9%83%A8%E7%BD%B2.md#4151-申请-mlab)\n        - [pm2](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.15%20%E9%83%A8%E7%BD%B2.md#4152-pm2)\n        - [部署到 Heroku](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.15%20%E9%83%A8%E7%BD%B2.md#4152-部署到-heroku)\n        - [部署到 UCloud](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.15%20%E9%83%A8%E7%BD%B2.md#4153-部署到-ucloud)\n        - [部署到阿里云](https:\u002F\u002Fgithub.com\u002Fnswbmw\u002FN-blog\u002Fblob\u002Fmaster\u002Fbook\u002F4.15%20%E9%83%A8%E7%BD%B2.md#4154-部署到阿里云)\n    - 扩展训练\n        - 添加分页功能\n        - 添加二级评论功能\n        - 添加标签(tag)功能\n\n## 捐赠\n\n您的捐赠，是我持续开源的动力。\n\n支付宝 | 微信\n------|------\n![](.\u002Fpublic\u002Falipay.png) | ![](.\u002Fpublic\u002Fwechat.jpeg)\n","N-blog 是一个基于 Node.js 和 Express 框架构建的多人博客系统。项目通过使用 MongoDB 作为数据存储，结合了 mongolass 库来简化数据库操作，并且提供了详细的教程帮助开发者从零开始学习如何搭建和运行一个完整的博客应用。它不仅涵盖了 Node.js 的基础知识，如 require、exports 和 Promise 等概念，还包括了 Express 框架的实际应用案例。此项目非常适合初学者入门 Node.js 开发以及想要了解后端开发流程的技术人员。",2,"2026-06-11 02:53:31","top_language"]