在做文件上传的时候,需要给请求返回URL的路径,因此就需要知道服务器的host 和 端口号,但是在对应的请求对象Request和Response没有找到相关信息,因此我的想法就是在启动的时候将服务器的信息保存到全局变量中。
const express = require("express");
const http = require("http");
const app = express();
////////////////////// 获取post过来的数据 /////////////////////////////
var bodyParser = require("body-parser");
app.use(bodyParser.urlencoded({ extended: false }));
////////////////////// 设置模板 /////////////////////////////
var ejs = require("ejs");
//使用set方法,为系统变量“views”和“view engine”指定值。
app.set("views", __dirname + "/views");
// 指定模板文件的后缀名为html
app.set('view engine', 'html');
// 运行hbs模块
app.engine('html', ejs.__express);
////////////////////// 设置web工程的根目录 /////////////////////////////
app.use(express.static(__dirname + '/'));
////////////////////// 允许跨域 /////////////////////////////
app.all('*', function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Content-Type,Content-Length, Authorization, Accept,X-Requested-With");
res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
res.header("X-Powered-By",' 3.2.1')
if(req.method=="OPTIONS") res.send(200);/*让options请求快速返回*/
else next();
});
////////////////////// 利用文件来拆分路由的规模 /////////////////////////////
var klwIndex = require('./routes/klw/klwIndex');
app.use('/klw', klwIndex(app));
////////////////////// 404处理 /////////////////////////////
app.get('*', function (req, res){
console.log('404 handler..')
res.render('common_page/404.html', {
status: 404,
title: 'NodeBlog',
});
});
const server = http.createServer(app).listen(3000,'localhost',function () {
const host = server.address().address;
const port = server.address().port;
// console.log("应用实例,访问地址为 http://%s:%s", host, port);
process.env.host = host;
// process 不能存储JSON格式的数据
process.env.port = port;
global.userInfo = {
name: 'huangbiao',
age: 30
}
app.SERVER_INFO = {
name: 'zhangsan',
age: 30
}
});
app.use('/klw', klwIndex(app));
算是改进点
var express = require('express');
var router = express.Router();
var fs = require('fs');
//"path"模块提供了生成上传文件块的文件名的方法。
var path = require('path');
var util = require('util');
//使用multiparty模块,也是必须要使用"multipart/form-data"类型
var multiparty = require('multiparty');
var appObj = null;
/**
* klw 模块index
* */
router.get('/', function(req, res, next) {
//res.render('sqh/addGoods', { name: 'Express 路由1' });
//res.writeHead(200, { "Content-Type": "text/plain" });
//res.end("Welcome to the about!\n");
console.log(global.userInfo);
console.log(process.env.port);
console.log(appObj.SERVER_INFO);
res.render("klw/klwIndex",{
btn_name:"发送ajax"
});
});
module.exports = function(app){
// 响应全局变量
appObj = app;
return router;
};
module.exports = function(app){};
用来接收参数作为当前路由的全局对象或者变量