将
server.listen(port);
改为
server.listen(port,()=>{
console.log(`running ${port}...`)
});
终端控制台效果:
2、实现代码的热加载,使得不用每次改完代码,就需要重新npm start。(注意:更改配置文件,还是得重新npm start)
安装npm插件nodemon
npm install -g nodemon
在package.json文件中
将"scripts": {"start": "node ./bin/www"},
改为"scripts": {"start": "nodemon ./bin/www"},
3、app.js中的代码
var createError = require('http-errors');var express = require('express');var path = require('path');var cookieParser = require('cookie-parser');var logger = require('morgan');var indexRouter = require('./routes/index');var usersRouter = require('./routes/users');var app =express();//view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended:false}));
app.use(cookieParser());
app.use(express.static(path.join(__dirname,'public')));//改动1// 利用 CORS 解决跨域
app.all('*', function(req, res, next) {
res.header('Access-Control-Allow-Origin', '*'); //*允许任意地址访问。解决跨域后携带cookie问题req.headers.origin
//res.header("Access-Control-Allow-Credentials", "true"); //是否包含cookie,如果不包含,可省略
res.header('Access-Control-Allow-Methods', 'GET,POST,PATCH,PUT,OPTIONS,DELETE');
res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization,Cookie,Accept,Token,Origin');
next();//继续下一个中间件的处理
});//改动2 //统一进行路由拦截:session、cookie版//app.all('*', (req, res, next) => {//console.log('请求地址',req.url);//if (req.url == '/pages/login' || req.url == '/users/login' || req.url =='/users/register') { // 如果是登录页或者是登录请求和注册请求//next(); // 该干嘛干嘛去//} else {//if (req.session.sign) { // 判断权限//next(); // 登陆后想访问什么页面直接访问//} else {//res.redirect('/pages/login'); // 未登录,重定向到登录页//}//}//console.log('权限',req.session.sign);//});
app.use('/', indexRouter);
app.use('/users', usersRouter);//catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});//error handler
app.use(function(err, req, res, next) {
console.log('服务器500错误:', err); //改动3
//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;
⑤检测服务器是否搭建成功
在终端运行命令npm start。在浏览器访问http://localhost:3000/,能出来页面则证明服务器搭建成功
⑥自己配置路由
1、在routes文件下新建js文件(这里就不新建了,使用项目已经有的文件)
在index.js中
var express = require('express');var router =express.Router();/*GET home page.*/router.get('/', function(req, res, next) {
res.render('index', { title: 'Hello World!' }); //渲染views/index.ejs文件
});
module.exports= router;
在users中
var express = require('express');var router =express.Router();
router.post('/xixi', function(req, res, next) {
const {name}=req.body //获取post请求的参数
res.json({
txt:`我是${name}返回的数据`
});
});
router.get('/xixi2', function(req, res, next) {
const {name}=req.query //获取get请求的参数
res.json({
txt:`我是${name}返回的数据`
});
});
module.exports= router;
2、在app.js文件中配置
//首先引入文件模块
var indexRouter = require('./routes/index');var usersRouter = require('./routes/users');//其次
app.use('/', indexRouter);
app.use('/users', usersRouter);
**至此,一个简易的服务器已经搭建成功
⑦从数据库中获取数据
1、在根路径下新建一个module文件,此时的文件目录
首先运行npm install mysql,安装mysql依赖。然后在module文件下新建一个mysqlModule.js文件,配置连接池
const mysql = require('mysql');
const pool=mysql.createPool({
host:'127.0.0.1',
user:'root',
password:'root',
database:'address_list',
post:3306});
const query=function(sql,options){return new Promise((resolve,resject)=>{
pool.getConnection(function(err, connection) {if (err) returnresject(err);
connection.query(sql, options,function(err2, result) {if(err2){
resject(err2);
}else{
resolve(result);
}
connection.release();//释放连接池
});
});
});
}
module.exports=query;
2、重新配置router/users.js文件
var express = require('express');var router =express.Router();
const query= require('../module/mysqlModule.js');/*GET users listing.*/router.post('/xixi', function(req, res, next) {
const {name}=req.body
const sql=`SELECT user_tel FROM users WHERE user_name=?`
query(sql,[name])
.then(data=>{
res.json({
state:'200',
data
});
})
.catch(err=>{
res.json({
state:'0',
msg:'查找失败',
err
})
})
});
router.get('/xixi2', function(req, res, next) {
const {name}=req.query
const sql=`SELECT user_tel FROM users WHERE user_name=?`
query(sql,[name])
.then(data=>{
res.json({
state:'200',
data
});
})
.catch(err=>{
res.json({
state:'0',
msg:'查找失败',
err
})
})
});
module.exports= router;