最近正在使用Vue+Node制作项目,于是决定写一个使用Node.js+Express搭建服
务器的教程
步骤:
一 开发前的准备:
1、安装Node.js
官网下载安装
2、安装Express
使用npm,指令如下:
npm install express -g 首先输入 npm install express-generator -g 第二步输入 |
3、对项目进行初始化
目录位置打开命令行 输入 express+项目的名称(这里使用server) |
这里会提示:
4、安装依赖
进入server文件夹调出cmd输入指令:
npm install |
5、到此安装完成
主要文件介绍:
routers:路由,用于确定应用如何响应对特定端点客户机的请求,包括一个URI或者路径和一个特定HTTP请求方法(GET/POST),每个路由可以包含一个或者多个处理程序函数,这些函数在路由配置的时候执行 app.js:服务器启动的入口 |
这个时候我们可以在根目录打开命令行,输入npm start来启动我们的服务器
启动成功后在浏览器输入localhost:3000即可看到:
证明没有问题
二、简单的DEMO
在浏览器访问localhost:3000的时候,调用的是index.js中的接口
创建一个路由的格式:
app.method(path,handler) //app为express实例 //method: HTTP请求的方式 //path:服务器路径 //handler:路由匹配时执行的函数 index.js中的
|
代表着:/->对get请求进行相应
简单的例子:
目标:实现一个获取地区的接口:
步骤:
1、在routers下创建一个city.js
2、创建一个City模型:
function City(){ this.cityname; } module.exports = City; |
3、在users.js文件引入
文件顶部: var URL = require('url'); var City = require('./city'); |
4、编写路由:
router.get('/getCity',function(req,res,next){ var city = new City(); var params = URL.parse(req.url,true).query; //获取url if(params.id == '1'){ city.cityname:'北京'; }else{ city.cityname:'秦皇岛'; } var response = {status:1,data:city}; res.send(JSON.stringify(response)); }) |
因为users在app.js中已经注册,所以重启服务器直接访问:
localhost:3000/users/getCity?id=1 |
即可获得返回数据
三、实战-连接数据库
步骤:
一、战前准备:
1、安装mysql模块:
打开server文件夹下的package.json在dependencies中添加: "mysql":"latest" 然后打开cmd,执行以下npm: npm install 安装mysql npm start |
二、开始
1、新建database文件夹,用于存放我们mysql的配置信息 2、在database目录中新建DBConfig.js文件,写入:
module.exports = { mysql:{ host:'127.0.0.1', user:'root', password:'密码', database:'数据库名', post:3306 } } |
3、添加API接口用来调用sql语句
在database中写入querysql.js并写入:
var UserSQL = { query:'SELECT * FROM 表名' } |
4、在routers目录添加一个users.js来发送操作数据库的API
这个例子添加一个query接口,在users.js写入:
var express = require('express'); var router = express.Router(); //引入mysql模块 var mysql = require("mysql"); //引入文件 var dbConfig = require('./database/DBConfig'); var querySql = require('querysql'); //使用DBConfig中配置信息创建一个MySQL连接池 var pool = mysql.createPool( dbConfig.mysql ); //响应JSON数据 var responseJSON = function(res,ret){ if(typeof ret == 'undefined'){ res.json({code:"-200",msg:"操作失败"}); }else{ res.json(ret); } }; //进行查询 router.get('/query' , function(req,res,next){ pool.getConnection(function(err,connection){ var params = req.query || req.params; //前端传的参数(暂时写这里,在这个例子中没用) connection.query(qusrySql.UserSQL,function(err,result){ //将结果以json形式返回到前台 responseJSON(res,result); //释放链接 connection.release(); }) }) }) |