express 文件服务器,Node:使用express搭建一个简易的服务器

本文介绍了如何使用Node.js搭建服务器,包括修改监听回调、实现代码热加载、设置CORS解决跨域、配置路由以及数据库交互。通过nodemon实现代码修改后自动重启,通过CORS设置允许所有来源访问,创建路由并从数据库获取数据,详细讲解了每个步骤的代码实现。
摘要由CSDN通过智能技术生成

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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值