基于Node和MongoDB的Web微博系统

基于Node和MongoDB的Web微博系统

概述

项目是受到《Node.js开发指南》一书启发,作者BYVoid大佬是当时第一批Node开发者,当时学习者迫切需要一个这么DEMO。当然现在已经过去很多年了,Node早就更新无数次了,12年的这本书也就过时,许多代码都根本跑不通了,最后还是要以官网API为准。

  1. 项目的后台用的express。
  2. 数据库部分自己写的原生MongoDB,没有去用控制力更强大的mongoose框架,多写原生东西对自己有好处。
  3. 前端用的是jQuery,underscore.js
  4. 样式用的Bootstrap框架。

设计

形式上采用的是MVC结构,数据库和加密部分在model层,路由控制充当Controller,ejs前端展示就是view层了。

安装依赖

"dependencies": {
  "ejs": "^2.5.7",
  "express": "^4.16.2",
  "express-session": "^1.15.6",
  "formidable": "^1.1.1",
  "gm": "^1.23.0",
  "mongodb": "^2.2.33" }

如果想二次开发,node——modules部分建议按照上面版本自己重新npm install,我的node版本是 v8.3.0 ,目前最新的是v8.9.0

功能和实现

  1. 登陆模块,注册模块,微博的发表,全部用户的微博,个人全部微博,所有用户列表,点击某个用户可以看到该用户发表过的微博,用户退出,头像的上传和剪裁,登陆之后直接点击自己的默认头像可进入头像上传页面,主页根据登陆状态变化呈现不同页面。
  2. 状态的判断是通过express-session来传递。
  3. 服务器对头像图片的处理用到了GraphicsMagick ,这个插件可以截屏,然后我写了一个脚本获取到这个插件截屏时大小参数,在前端界面上进行图片的剪裁。
  4. 数据库对mongo的增删改查和分页功能比较原生,直接参考官网Mongo对Nodejs开放的API,一些操作实现了重载化,JS里是没有函数重载的,只能自己手写判断,比如查询操作find函数,可以根据参数的不同进行重载,根据参数的个数判断,来确实是不是要对查询的结果进行排序,分页,跳过和限制。
  5. 微博的展示部分,用到了underscore.js,由于和ejs的模版标记重合了,我修改了underscore的源码,把模版标记<%%>变成了{{}}。全部微博展示的处理中,因为用户的信息是存在user集合里,微博存在posts集合里,mongo不像mysql传统关系型数据库那样,是没有外键的,我get所有微博的时候查询的是posts集合,posts集合里没有存用户的头像,我要想在全部微博里显示用户的头像,只好采用双重AJAX回调,第一层获取到所有说说,第二层在迭代器中,这个迭代器是一个递归,为了分页效果,用迭代器实现了闭包,这是JS的坑谁用谁知道。(当然ES6可以轻松解决这个问题),迭代器获得第一层回调结果的username,再查询获取到头像,再合并到第一个查询结果。
  6. 还有其他的一些东西什么的感兴趣可以fork,clone 看源码。

待改进

微博的评论,点赞功能,每个微博的主页功能等等,能填的坑还有很多,不过大体框架写好了,开源出来也是希望大家能一起加功能。

结语

这个项目用来练习Node比较好了,代码注释写的很多,如果本项目对您有一丝丝的小帮助,求个star,也欢迎fork,一起加上更多功能。

DEMO

代码:

GitHub仓库

有的问题可以评论,Issue,或者加扣扣1104272319联系我。

时间: 2024-07-31 21:07:20

基于Node和MongoDB的Web微博系统的相关文章

《Node.js+MongoDB+AngularJS Web开发》读书笔记及联想

总体介绍 <Node.js+MongoDB+AngularJS Web开发>,于2015年6月出版,是一本翻译过来的书,原书名为<Node.js,MongoDB and AngularJS Web Development>,总的来说是一本讲述如何用Javascript进行B/S架构全栈开发的书. 该书主要讲解4种技术(框架),分为6个部分29个章节.4种技术即Node.js.MongoDB.Express.AngularJS,业内称为MEAN:6个部分我个人理解为: 基础(引言).

Node.js+MongoDB+AngularJS Web开发

这篇是计算机类的优质预售推荐>>>><Node.js+MongoDB+AngularJS Web开发> MEAN全栈工程师首部实战书 从服务器到浏览器基于JavaScript的Web应用程序权威指南 内容完整细致可直接用来入门任一技术 编辑推荐 Node.js是一种领先的服务器端编程环境,MongoDB是最流行的NoSQL数据库,而AngularJS正迅速成为基于MVC的前端开发的领先框架.它们结合在一起使得Web程序员能够完全用JavaScript创建从服务器到客户端

使用Backbone.js, ExpressJS, node.js, MongoDB的web应用样板工程

这是web应用的一个完整的样板工程,用到了Backbone.js & Marionette, node.js & ExpressJS,MongoDB & Moogoose, Handlebars, Grunt.js, Bower和Browserify! 我建立了一个超级基础的单页面应用程序(SPA),就是一个简单的通讯录管理器, 但麻雀虽小,五脏俱全.我写这篇文章的目的是介绍一下这个应用所用到的整个技术栈:后端,数据,前端,工具和测试.主要包括下面这些技术: 后端: node.js

Express - 基于 Node.js 平台的 web 应用开发框架

Web 应用 Express 是一个基于 Node.js 平台的极简.灵活的 web 应用开发框架,它提供一系列强大的特性,帮助你创建各种 Web 和移动设备应用. API 丰富的 HTTP 快捷方法和任意排列组合的 Connect 中间件,让你创建健壮.友好的 API 变得既快速又简单. 性能 Express 不对 Node.js 已有的特性进行二次抽象,我们只是在它之上扩展了 Web 应用所需的基本功能. LoopBack 提供赞助 Develop model-driven apps wit

搭建Ghost 基于Node.js的开源博客系统

 安装MySQL # 安装MySql $ apt-get update # 更新组件 $ apt-get install mysql-server mysql-client -y # 快速安装-y代表默认选择y省去了回车,这时只需要设置mysql的root密码 # 设置mysql的编码 $ sudo vi /etc/mysql/mysql.cnf # 搜索到[mysqld] 插入collation-server = utf8_unicode_ci init-connect = 'SET NA

基于 Node.js + Express + mongoDB + Bootstrap 搭建的电影网站

电影网站 ?? GitHub: https://github.com/bxm0927/movie-website 此项目是基于 Node.js + Express + mongoDB + Bootstrap 搭建的电影网站. 主要功能模块: 一期:前台电影展示页.电影详情页.后台电影管理中心(电影录入.电影修改) 二期:用户登录注册注销功能.用户识别和持久化.后台用户管理中心(用户录入.用户修改).电影评论 <!-- more --> 图片预览 技术栈 [前端] HTML/CSS/JS:亘古不

EasyTalking微博系统

摘要 随着互联网的迅猛发展,人们的日常生活.学习工作已经离不开网络.人们的生活和工作在未来的生活中将越来越依赖于计算机网络技术的发展,越来越网络化.电子化.虚拟化.便捷化.Internet目前的应用历程和发展趋势,可以相信网络科学技术将极大的改变人们的日常生活和工作方式,甚至是社会的价值观. 本设计尝试用JSP在网络上架构一个EasyTalking微博,以推进微博电子化,管理智能化的发展.本文从理论和实践两个角度出发,对一个具有数据分析功能的EasyTalking微博进行设计与实现分析.论文首先

AngularJS + Node.js + MongoDB开发的基于位置的通讯录(by vczero)

一.闲扯 有一天班长说了,同学们希望我开发一个可以共享位置的通讯录,于是自己简单设计了下功能.包括用户角色.发表微博.共享位置等等.这次也是有点私心的,为了锻炼最近看的angularjs,于是果断选择Node.js + MongoDB + angular.js的方案.当然,开发Node.js的体会越来越深刻.记得,去年leader告诉我说尽量让node的每一个服务只支撑一个业务功能,这样才能更方便的维护.当时特别想把一个Node服务做的特别强大.现在看来leader的做法是对的,我更加倾向于把n

转:基于node的web开发框架Express入门--by ruanyifeng

JavaScript 标准参考教程(alpha) 草稿二:Node.js Express框架 GitHub TOP Express框架 来自<JavaScript 标准参考教程(alpha)>,by 阮一峰 目录 概述 运行原理 底层:http模块 对http模块的再包装 什么是中间件 use方法 Express的方法 all方法和HTTP动词方法 set方法 response对象 requst对象 项目开发实例 编写启动脚本 配置路由 静态网页模板 动态网页模板 安装模板引擎 新建数据脚本