node 创建 server
app.js
node server
// 模块依赖
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var app = express();
// 配置二级地址 路由
var address = require('./app_address');
// view engine setup 视图引擎设置
app.set('views', path.join(__dirname, 'views'));
app.engine("html",require("ejs").renderFile);
app.set('view engine', 'html');
/**
*
* 配置视图引擎 默认是用ejs为后缀的文件,这里我们改成了用HTML的形式
* 有两种 app.engine("html",require("ejs").__express)
* app.engine("html",require("ejs").renderFile);
*
*
*/
// app.engine("html",require("ejs").__express); // or
// app.engine("html",require("ejs").renderFile);
// app.set("view engine","ejs");
// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
// app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: false
}));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
//var address = new address(app);
// 配置二级地址的使用(加载路由)
address.appAddress(app)
// app.use('/', index);
// app.use('/users', users);
// catch 404 and forward to error handler 加载404错误处理解决方法
app.use(function (req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
// error handler 加载500错误处理解决方法
app.use(function (err, req, res, next) {
// 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');
});
// 导出app对象
module.exports = app;
app_address.js 路由配置
/**
* @params const app = require('app');
*
*/
function appAddress(app) {
// const app = require('app');
/**
* 二级地址
*/
var index = require('./routes/index'); // '/' 初始化的地址
var users = require('./routes/users'); // '/users'地址
app.use('/', index);
app.use('/users', users);
}
module.exports.appAddress = appAddress;
./routes/index index.js 初始化文件数据
var express = require('express');
var router = express.Router();
/**request 请求 **/
var request = require('request');
/* GET home page. **/
router.get('/', function (req, res, next) {
// getRes(req);
console.log("request");
/** 示例1 请求 http://www.baidu.com **/
request('http://www.baidu.com?t='+((new Date()).getTime().toString())+"'", function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body) // IT笔录主页的HTML
}
});
/** 示例 跳转到 index.ejs/index.html **/
res.render('index', {
title: 'Express'
});
});
module.exports = router;
启动文件 init.js
#!/usr/bin/env node
/**
* Module dependencies. 模块依赖关系。
*/
var app = require('./app');
var debug = require('debug')('atest:server');
var http = require('http');
/**
* Get port from environment and store in Express. 从环境中获取端口并快速存储。
*/
var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);
/**
* Create HTTP server.
*/
var server = http.createServer(app);
/**
* Listen on provided port, on all network interfaces. 在所有网络接口上监听所提供的端口。
*/
server.listen(port);
server.on('error', onError);
server.on('listening', onListening);
/**
* Normalize a port into a number, string, or false. 将端口标准化为数字、字符串或false。
*/
function normalizePort(val) {
var port = parseInt(val, 10);
if (isNaN(port)) {
// named pipe
return val;
}
if (port >= 0) {
// port number
return port;
}
return false;
}
/**
* Event listener for HTTP server "error" event. HTTP服务器“错误”事件的事件侦听器
*/
function onError(error) {
if (error.syscall !== 'listen') {
throw error;
}
var bind = typeof port === 'string'
? 'Pipe ' + port
: 'Port ' + port;
// handle specific listen errors with friendly messages
switch (error.code) {
case 'EACCES':
console.error(bind + ' requires elevated privileges');
process.exit(1);
break;
case 'EADDRINUSE':
console.error(bind + ' is already in use');
process.exit(1);
break;
default:
throw error;
}
}
/**
* Event listener for HTTP server "listening" event. HTTP服务器“侦听”事件的事件侦听器。
*/
function onListening() {
var addr = server.address();
var bind = typeof addr === 'string'
? 'pipe ' + addr
: 'port ' + addr.port;
debug('Listening on ' + bind);
}
不要忘了你的默认的测试页面
index.html
<!DOCTYPE html>
<html>
<head>
<title><%= title %></title>
<link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
<h1><%= title %></h1>
<p>Welcome to <%= title %></p>
<p>It's my first node</p>
</body>
</html>
满足上面的配置步骤之后 ,你可以在本地浏览器中打开 http://localhost:3000 (在 init.js 文件中给定的端口是3000)
接下来就可以迈向成功, 在终端中启动一下 : node init.js 当然前提是终端进入启动文件所在的地址
PS: 项目用了express 若项目启动时报 xxx module未定义之类的 可以用 npm install xxx 来下载