【node 服务器搭建(模块化开发)】
node + express
全局安装 express-generator
npm install express --save -g
npm install express-generator --save -g
(1)创建 express 项目
打开后输入命令:express ‘你的项目名字’,于是创建了了一个新项目
(2)打开项目:cd expressDemo
(3)安装:npm install
(4)启动项目:npm start
node 前后端分离开发(跨域问题)
app.js 添加如下代码
//设置跨域访问
app.all('*', function (req, res, next) {
res.header('Access-Control-Allow-Origin', '*')
res.header('Access-Control-Allow-Headers', 'X-Requested-With')
res.header('Access-Control-Allow-Methods', 'PUT,POST,GET,DELETE,OPTIONS')
res.header('X-Powered-By', ' 3.2.1')
res.header('Content-Type', 'application/json;charset=utf-8')
next()
})
node 如何向前端返数据
以 routes-->users.js 为例
var express = require('express') //引入模块
var router = express.Router()
/* GET users listing. */
router.get('/', function (req, res, next) {
//req 接受前端的方法 res返给前端用的方法
var data = {
code: 200,
data: {
id: req.query.id,
name: req.query.name,
},
}
res.send(data) //将前端需要的数据返给前端
})
module.exports = router
// 请求地址 http://localhost:3000/users
获取前端返回的数据
get 请求
req.query
post 请求
req.body
node 链接数据库以及对数据库进行封装
1、新建文件夹 model
2、新建配置文件 model ---> mysql.config.js
//配置链接数据库参数
module.exports = {
host: 'localhost', //数据库链接地址
user: 'root', // 用户名
password: 'root', // 密码
database: 'node_ceshi', // 库名
timezone: 'SYSTEM', //将数据库的格林威治时间转为正常
}
3、新建 mysql.js 封装文件
每次对数据库操作后都要重新连接以及断开操作
let mysql = require('mysql') //引入mysql模块
var databaseConfig = require('./mysql.config') //引入数据库配置模块中的数据
//向外暴露方法
module.exports = {
query: function (sql, params, callback) {
//每次使用的时候需要创建链接,数据操作完成之后要关闭连接
var connection = mysql.createConnection(databaseConfig)
connection.connect(function (err) {
if (err) {
console.log('数据库链接失败')
throw err
}
//开始数据操作
//传入三个参数,第一个参数sql语句,第二个参数sql语句中需要的数据,第三个参数回调函数
connection.query(sql, params, function (err, results, fields) {
if (err) {
console.log('数据操作失败')
throw err
}
//将查询出来的数据返回给回调函数
callback && callback(results, fields)
//results作为数据操作后的结果,fields作为数据库连接的一些字段
//停止链接数据库,必须再查询语句后,要不然一调用这个方法,就直接停止链接,数据操作就会失败
connection.end(function (err) {
if (err) {
console.log('关闭数据库连接失败!')
throw err
}
})
})
})
},
}
4、调用方法
var sql = 'SELECT * FROM ceshi_table'
db.query(sql, [], function (result, fields) {
console.log(result) //从数据中读取到的返回数据
})
node 静态资源配置
public-->images 文件夹下
//将文件设置成静态
app.use('/public', express.static('public'))