NodeJS学习笔记之express

Express学习

 

  • API分析

 

  1. Set、Get

app.set(‘title‘, ‘My Site‘);

app.get(‘title‘); // "My Site"

app.get(“string”)和app.get(path, [callback...], callback)要区别开,前面一个函数是获取string的value,而后一个是路由函数。

下面的内建的可以改变Express行为的设置

  • env 运行时环境,默认为 process.env.NODE_ENV 或者 "development"
  • trust proxy 激活反向代理,默认未激活状态
  • jsonp callback name 修改默认?callback=的jsonp回调的名字
  • json replacer JSON replacer 替换时的回调, 默认为null
  • json spaces JSON 响应的空格数量,开发环境下是2 , 生产环境是0
  • case sensitive routing 路由的大小写敏感, 默认是关闭状态, "/Foo" 和"/foo" 是一样的
  • strict routing 路由的严格格式, 默认情况下 "/foo" 和 "/foo/" 是被同样对待的
  • view cache 模板缓存,在生产环境中是默认开启的
  • view engine 模板引擎
  • views 模板的目录, 默认是"process.cwd() + ./views"

常用的set设置:

app.set(‘port‘, process.env.PORT || 3000);  //设置端口

app.set(‘views‘, __dirname + ‘/views‘);  

app.set(‘view engine‘, ‘html‘);// app.set(‘view engine‘, ‘ejs‘);

  1. app.engine(ext, callback)

注册模板引擎的 callback 用来处理ext扩展名的文件 默认情况下, 根据文件扩展名require() 对应的模板引擎。

app.engine(‘.html‘, ejs.__express);

app.engine(‘.ejs‘, ejs.__express);

app.engine(‘.jade‘, jade.__express);

 

 

  1. app.use([path], function)

 

使用中间件 function,可选参数path默认为"/"。这个中间件是nodejs最重要的功能,express也继承了中间件的功能。当path为\或者无时,也就意味着每一个页面每一个请求都会执行。根据这个功能可以使用中间件做路由。

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

  res.locals.user = req.session.user;

  var err = req.session.error;

  delete req.session.error;

  res.locals.message = ‘‘;

  if (err) res.locals.message = ‘<div class="alert alert-error">‘ + err + ‘</div>‘;

  next();

});

这个函数会在每一个页面请求时都被调用。

app.use(express.static(path.join(__dirname, ‘public‘)));,express.static( )是处理静态请求的,设置了public文件,public下所有文件都会以静态资料文件形式返回(如样式、脚本、图片素材等文件)

l   路由

app.use(‘/‘, routes);

app.use(‘/reg‘, reg);

app.use(‘/login‘, login);     

app.use(‘/logout‘, logout);

l   供应器

它会针对请求进行回应,你可以根据你的需求使用多个中间件,Http请求将会通过每一个中间件直到其中一个中间件对请求进行回应。

 

app.use(express.favicon());

app.use(express.logger(‘dev‘));

app.use(express.bodyParser());

app.use(express.methodOverride());

app.use(express.cookieParser());

app.use(express.cookieSession({secret : ‘blog.fens.me‘}));

app.use(express.session({

        secret : ‘blog.fens.me‘,

    store: store,

    cookie: { maxAge: 900000 } // expire session in 15 min or 900 seconds

}));

  1. app.VERB(path, [callback...], callback)

app.VERB() 方法为Express提供路由方法, VERB 是指某一个HTTP 动作, 比如 app.post()。 可以提供多个callbacks,这多个callbacks都将会被平等对待 ,它们的行为跟中间件一样,也有一个例外的情况,如果某一个callback执行了next(‘route‘),它后面的callback就被忽略。这种情形会应用在当满足一个路由前缀,但是不需要处理这个路由,于是把它向后传递。

app.get(‘/‘, routes.index);

app.all(‘/login‘, notAuthentication);

app.get(‘/login‘, routes.login);

app.post(‘/login‘, routes.doLogin);

app.get(‘/logout‘, authentication);

app.get(‘/logout‘, routes.logout);

app.get(‘/home‘, authentication);

app.get(‘/home‘, routes.home);

//mongo

app.get(‘/movie/add‘,movie.movieAdd);

app.post(‘/movie/add‘,movie.doMovieAdd);

app.get(‘/movie/:name‘,movie.movieAdd);

app.get(‘/movie/json/:name‘,movie.movieJSON);

app.get(‘/users‘, user.list);

这个是一个路由函数,作用跟app.use(‘/‘, routes)一样。

  1. Request

l   req.params

// GET /file/javascripts/jquery.js

req.params[0]

// => "javascripts/jquery.js"

 

// GET /user/tj

req.params.name

// => "tj"

附录:

nodeJs免安装环境下装express:

npm config set prefix " N:\nodejs"      //设置npm install -g module时路径

npm config set cache "N:\ nodejs\node_cache"

“path”,输入"N:\nodejs"                              //设置node环境变量

“NODE_PATH”,输入“N:\nodejs\node_modules”   //设置插件环境变量

 

 

 

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。