node 创建 server

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



  
    <%= title %>
    
  
  
    

<%= title %>

Welcome to <%= title %>

It's my first node

满足上面的配置步骤之后 ,你可以在本地浏览器中打开 http://localhost:3000 (在 init.js 文件中给定的端口是3000)

接下来就可以迈向成功, 在终端中启动一下 : node init.js 当然前提是终端进入启动文件所在的地址

PS: 项目用了express 若项目启动时报 xxx module未定义之类的 可以用 npm install xxx 来下载

你可能感兴趣的:(node 创建 server)