【nodejs笔记2】认识express框架

【nodejs笔记2】认识express框架【nodejs笔记2】认识express框架

app.js:启动文件,或者说入口文件
package.json:存储着工程的信息及模块依赖,当在 dependencies 中添加依赖的模块时,运行 npm install,npm 会检查当前目录下的 package.json,并自动安装所有指定的模块
node_modules:存放 package.json 中安装的模块,当你在 package.json 添加依赖的模块并安装后,存放在这个文件夹下
public:存放 image、css、js 等文件
routes:存放路由文件
views:存放视图文件或者说模版文件
bin:存放可执行文件
 
 
打开app.js,看一看里面的内容:
 //通过require()加载express、path模块。以及routes文件夹下的index.js 和user.js路由文件
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 routes = require('./routes/index');
var users = require('./routes/users'); var app = express(); //生成一个express实例app // view engine setup
app.set('views', path.join(__dirname, 'views'));//设置 views 文件夹为存放视图文件的目录, 即存放模板文件的地方,__dirname 为全局变量,存储当前正在执行的脚本所在的目录。
app.set('view engine', 'ejs');// 设置视图模板引擎为 ejs // uncomment after placing your favicon in /public
//app.use(favicon(__dirname + '/public/favicon.ico')); //设置/public/favicon.ico为favicon图标
app.use(logger('dev'));//加载日志中间件
app.use(bodyParser.json());//加载解析json的中间件
app.use(bodyParser.urlencoded({ extended: false }));//加载解析urlencoded请求体的中间件
app.use(cookieParser());//加载解析cookie的中间件
app.use(express.static(path.join(__dirname, 'public')));//设置public文件夹为存放静态文件的目录 //路由控制器
app.use('/', routes);
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 handlers // development error handler
// will print stacktrace
//开发环境下的错误处理器,将错误信息渲染error模版并显示到浏览器中。
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: err
});
});
} // production error handler
// no stacktraces leaked to user
//生产环境下的错误处理器,将错误信息渲染error模板并显示到浏览器中。
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: {}
});
}); module.exports = app;//导出app实例并供其它模块使用
  • require    加载模块和引用路由
  • 生成express实例app
  • app.set
  • app.use
  • 三种错误情况响应:捕获404错误  、开发环境下的错误处理器、  生产环境下的错误处理器。
  • module.exports = app  导出app实例供其它模块使用
答疑解惑
app.set和app.use的用法 err,req,res,next参数
   
 
 
 
 
打开./bin/www,看一看内容
 #!/usr/bin/env node    //node是可执行文件
var debug = require('debug')('blog'); //引用debug模块,打印调试日志
var app = require('../app');//导入app实例 app.set('port', process.env.PORT || 3000);//设置端口号 //启动工程并监听3000端口
var server = app.listen(app.get('port'), function() {
debug('Express server listening on port ' + server.address().port);
});

打开routes/index.js,看一看内容

 var express = require('express');
var router = express.Router(); //创建路由实例 /* GET home page. */
router.get('/', function(req, res) { //捕获访问主页的GET请求
res.render('index', { title: 'Express' });
}); module.exports = router;//导出路由,并在app.js中以app.use('/',routes);加载

生成一个路由实例用来捕获访问主页的GET请求,导出这个路由并在app.js中通过app.use('/', routes); 加载。这样,当访问主页时,就会调用res.render('index', { title: 'Express' });渲染views/index.ejs模版并显示到浏览器中。

 打开views/index.ejs,看一看内容

 <!DOCTYPE html>
<html>
<head>
<title><%= title %></title>
<link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
<h1><%= title %></h1>
<p>Welcome to <%= title %></p>
</body>
</html>

渲染模板index.ejs中,传入一个变量 title 值为 express 字符串,模板引擎会将所有 <%= title %> 替换为 express ,然后将渲染后生成的html显示到浏览器中,如上图所示。

上一篇:css 优先级 机制


下一篇:【python】删除1~100的素数