Express4.2.0安装和使用(二)

express框架基本描述

通过express自带的创建方式创建项目后,项目文件夹内一般包含这几个内容



bin文件夹:该文件只包含了www这个文件,是用于web应用启动的

node_module文件夹:包含了该项目依赖的包和模块

public文件夹:存放静态文件,包括图片、css等

routes文件夹:存放该框架MVC中的C(控制)部分

views文件夹:存放该框架MVC中的V(视图)部分

app.js文件:对该应用进行配置

package.json:该web应用的基本信息,npm install根据该信息可以为应用安装所需的依赖


关于express的各种方法

express的各种方法主要用在app.js文件中,在该文件中进行一些路由设置、模版引擎设置、文件路径设置等。


set方法

set方法主要是设置一些参数,当前set主要用的是以下两句

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

第一句表示设置前台模版的路径为工程文件夹下的views文件夹下

第二句表示使用的前台模版引擎为ejs

use方法

use方法表示设置当用户访问时将调用设定的中间件,基本用法如下:

app.use(function(req, res, next){

 //dosometing; 

 next(); 

 });

所谓的中间件,可以理解为从底层往上层传输前,进行一定处理的函数或过程。

当有用户访问web应用时,便会调用use方法设置好的中间件函数,在该函数处理完之后,调用了next()方法,该方法调用下一个设置好的中间件函数


在上面的use用法中,所有用户请求都会调用设置的中间件函数。为了只让某些用户请求调用特定的中间件函数,use还提供了如下用法:

app.use("/", function(req, res, next){
    //dosomething;
    next();
});

该语句中只对根目录的请求调用该中间件函数


get方法

get方法也是设置中间件函数,它的特点在于只响应用户的get方法请求,并且没有像use那样具备next()方法。

app.get("/", function(req, res){
    //dosomething;
});

上面的代码会响应用户对根目录的get请求


post方法

post方法与get方法类似,特点是只响应用户的post方法请求,其余与get类似,不做介绍


all方法

用户对all方法指定路径的所有访问,都会得到all方法的响应,可以吧all方法看作是get和post方法的结合。


纵观app.js

//app.js
var express = require('express');
var path = require('path');
var favicon = require('static-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();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

app.use(favicon());
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', routes);
app.use('/users', users);

/// catch 404 and forward to error handler
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
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
app.use(function(err, req, res, next) {
    res.status(err.status || 500);
    res.render('error', {
        message: err.message,
        error: {}
    });
});


module.exports = app;

以上就是express快速新建一个项目时生成的app.js文件,下面对其中的部分语句进行解析


app.use(favicon());

favicon()属于connect框架(Node.js一个中间件框架)的内建中间件,使用默认favicon图标,如果想让项目改用自己的图标,则改为:

app.use(favicon(__dirname + "/public/images/myIcon.ico")));
之后访问localhost:3000/favicon.ico刷新缓存。根据笔者调试和阅读源码,除非访问/favicon.ico,否则无法刷新图标,因此建议考虑在html页面中获取图标资源
</pre><pre name="code" class="plain">



app.use(logger('dev'));

该语句定义项目以开发模式启动,在该模式下,当用户进行访问时,会有如下输出



app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
以上语句用于解析请求体


发布了39 篇原创文章 · 获赞 5 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/sadoshi/article/details/28447389