前期工作主要包括:项目的创建,web服务器的创建和数据库的连接。
项目创建
网上关于Node.js项目的创建的教程有很多,这里不必赘述。Demo所使用的Node.js的框架是express,版本为4.0以上。
首先我们需要安装express,在控制台输入express -e项目名,回车即可生成相应地一些文件。
简要地说一下Demo依赖的模块。在这个项目的根目录下的package.json文件中将内容修改如下图所示。
前四项是Demo的大概说明,包括作者、描述、版本、隐私等,最后一项dependencies是Demo所依赖的模块及其对应地版本号。了解Node.js基础的都知道,控制台进入到项目的路径,输入npm install即可安装这些模块。
Web服务器的创建
在上一步的工作中,实际上一个web服务器默认已经创建了,地址以及端口号:http://localhost:3000     npm start启动该项目,出现如下图所示,即说明服务器启动成功
打开浏览器,在地址栏输入上述的url,会出现如下图所示
统统这些都是默认的,创建项目时我们需要初始化,至于如何初始化,这里也不详细介绍了。
聊天室Demo的目录结构如下图所示
需要说明的是node_modules文件夹中是存放Demo依赖的模块。其他的文件夹(文件)除了css及js相关插件均可自定义创建。
在server.js中创建服务器和连接服务器,代码如下:

 1 var express = require('express'),
 2   cookieParser = require('cookie-parser'),
 3   bodyParser = require('body-parser'),
 4   http = require('http'),
 5   path = require('path'),
 6   io = require('socket.io'),
 7   mongoose = require('mongoose'),
 8   app = express(),
 9   db,
10   userRoutes,
11   socketIO;
12
13 /* 数据库连接 */
14 mongoose.connect('mongodb://localhost:27017/chatroom');
15 db = mongoose.connection;
16 db.on('error', console.error.bind(console, '数据库连接失败!'));
17 db.once('open', function callback() {
18   console.log('数据库连接成功!');
19 });
20
21 /*Express 配置*/
22 app.use(cookieParser());
23 app.use(bodyParser.json());
24 app.use(bodyParser.urlencoded({ extended: true }));
25 app.use(express.static(path.join(__dirname, 'public')));
26
27
28 http=http.createServer(app,function(req,res){
29   res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'});
30 });
31 io = io(http);
32
33 indexRoutes = require('./routes/index')(app);
34 userRoutes = require('./routes/users')(app);
35
36 /*绑定io到服务器上*/
37 socketIO = require('./socketIO')(app, io);
38
39 http.listen(3000, function () {
40   console.log('listening on *:3000');
41 });

View Code

在控制台启动Demo,出现如下图所示,则说明服务器连接成功,当然之前需要开启mongoDB
另外,有两个小技巧可以提高开发效率。
1.控制台清屏,输入cls
2.关闭服务器或者是退出当前程序(命令)快捷键 ctrl+C

转载于:https://www.cnblogs.com/jiangcheng-langzi/p/7016488.html

《基于Node.js实现简易聊天室系列之项目前期工作》相关推荐

  1. ComeFuture英伽学院——2020年 全国大学生英语竞赛【C类初赛真题解析】(持续更新)

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  2. ComeFuture英伽学院——2019年 全国大学生英语竞赛【C类初赛真题解析】大小作文——详细解析

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  3. 信息学奥赛真题解析(玩具谜题)

    玩具谜题(2016年信息学奥赛提高组真题) 题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业.有一天, 这些玩具小人把小南的眼镜藏了起来.小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的 ...

  4. 信息学奥赛之初赛 第1轮 讲解(01-08课)

    信息学奥赛之初赛讲解 01 计算机概述 系统基本结构 信息学奥赛之初赛讲解 01 计算机概述 系统基本结构_哔哩哔哩_bilibili 信息学奥赛之初赛讲解 02 软件系统 计算机语言 进制转换 信息 ...

  5. 信息学奥赛一本通习题答案(五)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  6. 信息学奥赛一本通习题答案(三)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  7. 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题

    第1章   快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章  素数 第 3 章  约数 第 4 章  同余问题 第 5 章  矩阵乘法 第 6 章 ...

  8. 信息学奥赛一本通题目代码(非题库)

    为了完善自己学c++,很多人都去读相关文献,就比如<信息学奥赛一本通>,可又对题目无从下手,从今天开始,我将把书上的题目一 一的解析下来,可以做参考,如果有错,可以告诉我,将在下次解析里重 ...

  9. 信息学奥赛一本通(C++版) 刷题 记录

    总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 刷题 记录 http://ybt.ssoier. ...

  10. 最近公共祖先三种算法详解 + 模板题 建议新手收藏 例题: 信息学奥赛一本通 祖孙询问 距离

    首先什么是最近公共祖先?? 如图:红色节点的祖先为红色的1, 2, 3. 绿色节点的祖先为绿色的1, 2, 3, 4. 他们的最近公共祖先即他们最先相交的地方,如在上图中黄色的点就是他们的最近公共祖先 ...

最新文章

  1. mysql注入实例获取答案_本文实例讲述了MySQL解决SQL注入的另类方法。分享给大家供大家参考,具体如下:问题解读我觉得,这个问题每年带来的成本可以高达数十亿美元了。本文就来谈谈,...
  2. 科研|Science回应中国燃料电池研究“造假”:发函重点关注,之前撤稿率100%
  3. Android 6.0 以及HttpClient
  4. mysql改存储引擎教程_MySQL中修改数据表存储引擎的三种方法
  5. Java File类基本操作
  6. Android开发之打开QQ聊天页面的方法
  7. mysql 逻辑备份工具_MySQL逻辑备份工具-mydumper
  8. 数学模型——人口增长模型(基于python)
  9. 计算机无法锁定在任务栏,win10系统无法锁定任务栏的处理办法
  10. CString提取数字
  11. 拖拉机大战更新了,更多新功能
  12. html中盒子透明度代码,用CSS制作一个透明盒子
  13. web网页设计实例作业 ——中国风文化传媒企业官网(6页) 简单个人网页设计作业 静态HTML文化主题网页作业
  14. android仿微信发布动态功能,android实现微信朋友圈发布动态功能
  15. jvm的类加载和运行时数据区和垃圾回收
  16. 岭南东方品牌连签两店,持续发力旅游目的地
  17. 第七章 将文件内容复制到另外文件
  18. 微信小程序之模版的使用(template)
  19. pytest(十六)--fixture值autouse=True
  20. 知乎 中国用linux,在 Linux 上调整命令历史 | Linux 中国

热门文章

  1. Python科学计算扩展库NumPy之np.array()与np.asarray()区别
  2. OpenCV 4.1.0 + Visual Studio 2019 开发环境搭建 超级简单
  3. 6大最流行、最有用的自然语言处理库对比
  4. VC6.0连接数据库,并把大量数据从ACCess转移到SQL sever2008 的问题(亲测可用)
  5. php模板技术smarty,PHP模板技术Smarty
  6. matlab考试资料,MATLAB复习资料
  7. java 建立ssh隧道_JAVA SSH框架搭建流程
  8. 什么是进程什么是线程,他们的区别是什么
  9. 线程和进程有什么区别
  10. python 结构体数组 定义_一篇文章弄懂Python中所有数组数据类型