node+express+socket.io+mysql=通讯服务器搭建(一)
首发github/blog 欢迎大家评论给星
安装
首先假定你已经安装了 Node.js,接下来为你的应用创建一个目录,然后安装express-generator应用骨架
$ mkdir node-demo
$ npm install express-generator -g //mac需要加sudo
express -h
$ express -h
用法: express [options] [dir]
选项:
-h, --help 输出使用信息
-V, --version 输出版本号
-e, --ejs 添加ejs引擎支持(默认为jade)
--hbs 添加handlebars引擎支持
-H, --hogan 添加hogan.js引擎支持
-c, --css <engine> 添加stylesheet <engine> 支持 (less|stylus|compass|sass) (默认为CSS)
--git 添加.gitignore
-f, --force 非空目录上的 force
express-generator 生成应用骨架
$ express node-demo
执行此命令后会有以下代码
warning: the default view engine will not be jade in future releases
warning: use `--view=jade' or `--help' for additional options
//警告:默认的视图引擎在未来版本中不会是JADE
//警告:使用“-VIEW = JADE”或“帮助”选项
//这里我们重新生成骨架默认为ejs模板 使用以下命令
//express --view=ejs blog
//--view=模板引擎的名称,有很多种
//blog为项目文件夹名称
$ express --view=ejs node-demo 使用ejs模板引擎
// 出现以下信息,安装指示 一步一步进行
create : node-demo/
create : node-demo/public/
create : node-demo/public/javascripts/
create : node-demo/public/images/
create : node-demo/public/stylesheets/
create : node-demo/public/stylesheets/style.css
create : node-demo/routes/
create : node-demo/routes/index.js
create : node-demo/routes/users.js
create : node-demo/views/
create : node-demo/views/error.jade
create : node-demo/views/index.jade
create : node-demo/views/layout.jade
create : node-demo/app.js
create : node-demo/package.json
create : node-demo/bin/
create : node-demo/bin/www
change directory:
$ cd node-demo
install dependencies:
$ npm install
run the app:
$ DEBUG=node-demo:* npm start
运行express
$ npm start
//浏览器输入 http://localhost:3000/
//即可看到
//Express
//Welcome to Express
项目文件分析
项目创建成功之后,生成四个文件夹和两个文件,
- app.js
- 这是它的初始形式,这个模块还要继续导出给bin文件夹下的www文件使用
- 配置信息文件packetage.json
- bin是项目的启动文件,配置以什么方式启动项目,默认 npm start
- www文件:这里拥有着http服务器的基本配置
- public是项目的静态文件,放置js css img等文件
- routes是项目的路由信息文件,控制地址路由
- views是视图文件,放置模板文件ejs或jade等(其实就相当于html形式文件啦~)
- express这样的MVC框架模式,是一个Web项目的基本构成。
进化项目——连接数据库
$ npm install mysql --save
根目录sql文件夹 里面新建sqlConfig.js,内容如下:
// 引入mysql
var mysql = require('mysql');
var pool = mysql.createPool({
host: "localhost", //这是数据库的地址
port: "2000",
user: "root", //需要用户的名字
password: "12345", //用户密码 ,如果你没有密码,直接双引号就是
database: "huang" //数据库名字
});
/**
* @param {*} sql sql语句
* @param {*} callback 回调函数
*/
function query(sql, callback) {
pool.getConnection(function (err, connection) {
connection.query(sql, function (err, rows) {
callback(err, rows);
connection.release(); //释放链接
});
});
}
exports.query = query;
routes文件夹下面新建admin_user.js对应 admin_user表模块 内容如下:
var express = require('express');
var router = express.Router();
//引入数据库包
var sql = require("../sql/sqlConfig.js");
/**
* 查询列表页
*/
router.get('/', function (req, res, next) {
sql.query('select * from admin_user', function (err, rows) {
if (err) {
console.log(err)
res.render('index.ejs', { title: 'Express', datas: [] });
} else {
res.render('index.ejs', { title: 'Express', datas: rows });
}
})
});
module.exports = router;
sql文件夹 继续新建 AdminUserSQL.js 内容如下:
//admin_user表 sql语句
var AdminUserSQL = {
queryAll: 'SELECT * FROM admin_user',
};
module.exports = AdminUserSQL;
进入app.js,加入一下代码:
//引入users模块
var AdminUsersRouter = require('./routes/admin_user');
app.use('/get-admin-users', AdminUsersRouter);
启动
http://localhost:3000/get-admin-users
Express
Welcome to Express
userName 姓名
admin 超级管理员
总结
node.js配合express连接mysql获取admin_user表的简单demo完成。
通讯服务器搭建第一步完成,下一步我们将配合socket.io完成消息推送。欢迎大家评论交流。
源码见github
node+express+socket.io+mysql=通讯服务器搭建(一)的更多相关文章
- node+express+socket.io制作一个聊天室功能
首先是下载包: npm install express npm install socket.io 建立文件: 服务器端代码:server.js var http=require("http ...
- node express+socket.io实现聊天室
参照网址:https://www.jb51.net/article/135058.htm https://www.cnblogs.com/limitcode/p/7845168.html https: ...
- 使用Node.js+Socket.IO搭建WebSocket实时应用
Web领域的实时推送技术,也被称作Realtime技术.这种技术要达到的目的是让用户不需要刷新浏览器就可以获得实时更新.它有着广泛的应用场景,比如在线聊天室.在线客服系统.评论系统.WebIM等. W ...
- (转)使用Node.js+Socket.IO搭建WebSocket实时应用
Web领域的实时推送技术,也被称作Realtime技术.这种技术要达到的目的是让用户不需要刷新浏览器就可以获得实时更新.它有着广泛的应用场景,比如在线聊天室.在线客服系统.评论系统.WebIM等. W ...
- 使用Node.js+Socket.IO搭建WebSocket实时应用【转载】
原文:http://www.jianshu.com/p/d9b1273a93fd Web领域的实时推送技术,也被称作Realtime技术.这种技术要达到的目的是让用户不需要刷新浏览器就可以获得实时更新 ...
- Express+Socket.IO 实现简易聊天室
代码地址如下:http://www.demodashi.com/demo/12477.html 闲暇之余研究了一下 Socket.io,搭建了一个简易版的聊天室,如有不对之处还望指正,先上效果图: 首 ...
- 转载:node.js socket.io
本文转自:http://www.xiaocai.name/post/cf1f9_7b6507 学习node.js socket.io 使用 用node.js(socket.io)实现数据实时推送 在 ...
- nodejs+express+socket.io
其实官网文档清楚了 https://socket.io/get-started/chat/ 但是因为之前写的是nodejs+express, socket.io是后加的, 还是有小坑 服务器端: 官 ...
- node及socket.io实现简易websocket双向通信
技术栈: vue2.0 + node + websocket( socket.io ) 1. 安装依赖 初始化vue项目后输入下方指令安装依赖包 // 推荐cnpm安装 npm i vue-socke ...
随机推荐
- 洛谷P1029 最大公约数和最小公倍数问题
题目描述 输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P,Q的个数 条件: 1.P,Q是正整数 2.要求P,Q以x0为 ...
- apk文件签名绕过
声明: 1.本文转载自:http://www.2cto.com/Article/201311/256406.html,为了留作日后参考上传博客 2.如有转载请复试上面连接,尊重原创 apk文件签名绕过 ...
- 分布式监控系统开发【day37】:监控数据如何优化(六)
一.数据如何存储方案讨论 1.一个服务存所有主机 2.一台主机的所有服务 3.所有的服务一分钟存一次? 数据量大,浏览器会卡住, 4.最终方案如下 二.解决方案存在问题 1.只能存7天如何处理? 超过 ...
- HTML DOM 节点介绍(nodeName,nodeValue,nodeType)
对于初学者来说,HTML DOM 里面的 nodeName.nodeValue 以及 nodeType 三个属性的作用和取值不是很清楚.下面整理的信息包含有关于节点的详细信息,供参考. 节点信息 每个 ...
- 编程笔记:JavaScript 中的类型检查
在Badoo的时候我们写了大量的JS脚本,光是在我们的移动web客户端上面就有大概60000行,可想而知,维护这么多JS可是相当具有挑战性的.在写如上规模js脚本客户端应用的时候我们必须对一件事保持警 ...
- select多选框
select多选框 效果: 代码: <HTML> <HEAD> <TITLE>选择下拉菜单</TITLE> <meta http-equiv=&q ...
- Java 中的几种线程池这么用才是对的
为什么要使用线程池 虽然大家应该都已经很清楚了,但还是说一下.其实归根结底最主要的一个原因就是为了提高性能. 线程池和数据库连接池是同样的道理,数据库连接池是为了减少连接建立和释放带来的性能开销.而线 ...
- 彻底解决mysql中文乱码
mysql是我们项目中非常常用的数据型数据库.但是因为我们需要在数据库保存中文字符,所以经常遇到数据库乱码情况.下面就来介绍一下如何彻底解决数据库中文乱码情况. 1.中文乱码 1.1.中文乱码 cre ...
- HttpUtility.UrlEncode与Server.UrlEncode()转码区别
在对URL进行编码时,该用哪一个?这两都使用上有什么区别吗?测试: string file="文件上(传)篇.doc";string Server_UrlEncode=Server ...
- zedboard学习记录.3.oled,创建IP
环境:win7 .vivado 2017.4 .zedboard rev.d 首先建立工程. 1.Tools -> Create and Package New IP 2.Create AXI4 ...