4、Express初识

一、目录详解

bin:启动配置文件,在 www 里修改运行端口号

node_modules:存放所有的项目依赖库,就行java存放架包

public:用于存放静态资源文件 图片,CSS,JAVASCRIPT文件..

routers:路由文件相当于springmvc中的Controller,ssh中的action

views:存放页面的地方

package.json:项目依赖配置及开发者信息。

app.js:应用核心配置文件,项目入口。

二、app.js配置详解

var express = require('express');//引用express

var path = require('path');//服务器路径

var favicon = require('serve-favicon');//网页图标及缓存中间件

var logger = require('morgan');//日志功能,需要手动配置

var cookieParser = require('cookie-parser');//解析cookie

var bodyParser = require('body-parser');//解析request,respose参数

var index = require('./routes/index');//注册路由的位置

var users = require('./routes/users');

var app = express();

// view engine setup

//设置视图模板为ejs

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

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(require('stylus').middleware(path.join(__dirname, 'public')));//自动解析stylus文件为css

app.use(express.static(path.join(__dirname, 'public')));//静态资源文件夹为public

app.use('/', index);//设置url为/引向index路由

app.use('/users', users);//设置url为/user引向user路由

// 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 错误处理中间件

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');

});

module.exports = app;

三、路由初步

var express = require('express');

var router = express.Router();

/* GET home page. */

router.get('/', function(req, res, next) {

res.render('index', { title: 'Express' });

});

//中间件拦截,进入index的路由会被拦截,输出地址信息以后进入执行next()后面,没有next()则不会向下执行

router.use('/',(req,res,next)=>{

console.log('收到请求,地址为:' + req.url);

next();

});

router.get('/',(req,res,next)=>{

console.log('OKK');

next();

});

router.get('/home',(req,res,next)=>{

console.log('OK');

next();

});

router.get('/home', function(req, res, next) {

res.render('index', { title: '马群' });

});

module.exports = router;

express router主要分为use,get,post 3个方法,use可以拦截指定url开头的所有请求 ‘/’时拦截所有请求。

router共接收三个参数,req 指的是request, res指 response, next 为执行完后继续向下匹配符合的路由

打开浏览器输入

http://localhost:3000/home

可以看到控制台执行结果


/home 的url执行顺序为 router.use('/',(req,res,next))-》router.get('/home',(req,res,next))-》router.get('/home',(req,res,next))

(req,res,next)=>{}

这样写法为ES6语法的箭头函数,等价于

function(req, res, next){}

详情 廖雪峰的箭头函数教学 & 阮一峰《ES6标准入门》#箭头函数

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容