设为首页 收藏本站
查看: 885|回复: 0

[经验分享] NodeJS+Express+mySQL服务端开发详解

[复制链接]

尚未签到

发表于 2017-12-12 06:29:05 | 显示全部楼层 |阅读模式
  随着NodeJS的发展,现在已经被很多人熟知,NodeJS已经成为了前端开发人员必备的技能。本文不会对NodeJS过多介绍 如果你感兴趣可以访问NodeJS 官网, 维基百科
  本文是利用NodeJS+Express开发一个服务器程序,Express 是一种保持最低程度规模的灵活 Node.js Web 应用程序框架,为 Web 和移动应用程序提供一组强大的功能。

一 准备工作
  首先你需要安装NodeJS环境 这里不再做介绍,
  1.安装Express
  

  npm install express -g //全局安装  npm install express-generator -g //安装全局变量
  

  2.初始化项目
  

cd  example //进入项目文件夹  
express project //创建express目录,project是目录名
  

  3.执行如下命令:
  

1.cd project //进入项目根目录  
2.npm install  //安装依赖
  

  最终目录:
DSC0000.png

  /bin:用来启动应用(服务器)
  /public: 存放静态资源目录
  /routes:路由用于确定应用程序如何响应对特定端点的客户机请求,包含一个 URI(或路径)和一个特定的 HTTP 请求方法(GET、POST 等)。每个路由可以具有一个或多个处理程序函数,这些函数在路由匹配时执行。
  /views: 模板文件所在目录 文件格式为.jade
  目录app.js程序main文件 这个是服务器启动的入口

二 启动服务器
  

npm start //启动服务器  

DSC0001.png

  启动完成后终端将输出 node ./bin/www
  在浏览器中访问 http://localhost:3000/
DSC0002.png


三 基本使用
  打开app.js 这里介绍下主要代码:
  

var express = require('express');//加载express模块  

var path = require('path');//路径模块  

var favicon = require('serve-favicon');//请求网页的logo  

var logger = require('morgan');//在控制台中,显示req请求的信息  

var cookieParser = require('cookie-parser');//这就是一个解析Cookie的工具。通过req.cookies可以取到传过来的cookie,并把它们转成对象。  

var bodyParser = require('body-parser');//node.js 中间件,用于处理 JSON, Raw, Text 和 URL 编码的数据。  

  // 路由信息(接口地址),存放在routes的根目录
  

var index = require('./routes/index');  

var users = require('./routes/users');  

var add = require('./routes/add');  

var edit = require('./routes/edit');  

var del = require('./routes/del');  

var app = express();  

  

// 模板开始  
app.set('views', path.join(__dirname, 'views'));//设置视图根目录
  
app.set('view engine', 'jade');//设置视图格式(本人不太喜欢用jade,接下来会交大家使用html格式的文件)
  

  
// 载入中间件
  
app.use(logger('dev'));
  
app.use(bodyParser.json());
  
app.use(bodyParser.urlencoded({ extended: false }));
  
app.use(cookieParser());
  
app.use(express.static(path.join(__dirname, 'public')));
  

  //配置路由,('自定义路径',上面设置的接口地址)
  
app.use('/', index);
  
app.use('/search', users);//查
  
app.use('/add', add);//增
  
app.use('/edit', edit);//改
  
app.use('/del', del);//删
  

  
// 错误处理
  
app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
  
});
  

  
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};
  

  // render the error page
  res.status(err.status || 500);
  res.render('error');
  
});
  

  
module.exports = app;
  

  定义一个路由的基本格式为:
  

app.METHOD(PATH, HANDLER)  

  其中:
  app 是 express 的实例。
  METHOD是 HTTP 请求方法。
  PATH 是服务器上的路径。
  HANDLER 是在路由匹配时执行的函数。
  以上的定义代表
  在根路由 (/) 上(应用程序的主页)对 GET 请求进行响应:
  以下是目录结构图:
DSC0003.png

  这个例子没用jade,改用html。
  先从路由讲起:
  打开index.js
  

var express = require('express');  

var router = express.Router();  

  

//编写执行函数  
router.get('/', function(req, res, next) {
  //使用绝对定位打开views下面的html文件
  res.sendFile("/JJ-Note/nodeTest/example/example/views/" + "index.html" )
  
});
  

  
module.exports = router;
  

  再次打开add.js
  

var express = require('express');  

var router = express.Router();var URL = require('url');  

//加载mysql模块  
var mysql      = require('mysql');
  
//创建连接
  
var connection = mysql.createConnection({
  
host     : 'localhost',
  
user     : 'root',
  
password : '123456',
  
database : 'jj'
  
});
  
//执行创建连接
  
connection.connect();
  
//SQL语句
  
var  sql = 'SELECT * FROM name';
  
var  addSql = 'INSERT INTO name(id,name,sex) VALUES(?,?,?)';
  

  
router.get('/', function(req, res, next) {
  //解析请求参数
  var params = URL.parse(req.url, true).query;
  var addSqlParams = [params.id, params.name, params.sex];
  //增
  connection.query(addSql,addSqlParams,function (err, result) {
  if(err){
  console.log('[INSERT ERROR] - ',err.message);
  return;
  }            
  });
  //查
  connection.query(sql,function (err, result) {
  if(err){
  console.log('[SELECT ERROR] - ',err.message);
  return;
  }
  console.log(params.id);
  //把搜索值输出
  
       res.send(result);
  });
  
});
  

  
module.exports = router;
  

  mysql这边我就不做详细讲解了,不懂的可以去看相关教程;
  表结构如图所示:
DSC0004.png

  routes里的其他几个js文件与add.js类似,分别代表着增、删、改、查四个接口;
  下面我们一起来启动一下服务器。
  首先在控制台启动服务,浏览器地址栏输入http://localhost:3000/
  可以看到如下界面:
DSC0005.png

  我们查询一下数据看能不能出来:
DSC0006.png

  我们再增加一条数据:
DSC0007.png

  可以,接口实现的很顺利,修改和删除就不一一展示了,nodejs功能十分强大,有兴趣的朋友可以关注我的个人公众号,大家一起探讨技术。
DSC0008.jpg

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-423194-1-1.html 上篇帖子: Asp.net 实现Session分布式储存(Redis,Mongodb,Mysql等) sessionState Custom 下篇帖子: mysql设置datetime默认值为now
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表