javascript代码实例教程-express for node 路由route几种实现方式的思考

发布时间:2019-02-28 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-express for node 路由route几种实现方式的思考脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。 1、路由实现方式和顺序

exPress框架创建的模板app,js中默认代码

[javascript]  

VAR exPRess = require('express');  

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

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

var http = require('http');  

var path = require('path');  

  

var app = express();  

  

// all environments  

app.set('port', process.env.PORT || 3000);  

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

app.set('view engine', 'ejs');  

app.use(express.favicon());  

app.use(express.LOGger('dev'));  

app.use(express.bodyParser());  

app.use(express.methodoverride());  

app.use(app.router);  

app.use(express.static(path.join(__dirname, 'public')));  

  

// development only  

if ('development' == app.get('env')) {  

  app.use(express.errorHandler());  

}  

  

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

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

  

http.createServer(app).listen(app.get('port'), function(){  

  console.log('Express server listening on port ' + app.get('port'));  

});  

 

其中以下两句尤其重要,对路由产生影响

[javascript]  

app.use(app.router);  

app.use(express.static(path.join(__dirname, 'public')));  

(1)express.static指定了静态页面的查找目录,如果定义express.static('/var/www'),当用户向node请求https://server/file.htML,nod 

(2)两句的前后顺序决定了当静态页面和动态路由都存在时,哪个决定node的真实路由

假设在静态目录下存在test.html,同时包含

[javascript 

app.get('/test.html', function(req, res) {  

    res.send('Hello From route handler');  

});  

 

方式1:

[javascript]  

<span style="font-family:Arial Black;font-Size:14px;">app.use(app.router);  

app.use(express.static(path.join(__dirname, 'public')));</span>  

 

则浏览器看到的结果是Hello from route handler

方式2:

[javascript]  

<p><span style="font-size:14px;"><span style="font-family:Arial Black;"><strong>app.use(express.static(path.join(__dirname, 'public')));  

</strong></span><span style="font-family:Arial Black;"><strong>app.use(app.router);</strong></span></span></p>  

则浏览器看到的结果是显示test.html内容

方式3:

[javascript]  

exports.index=function(req,res){  

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

}  

 

[javascript]  

<p><span style="font-size:14px;"><span style="font-family:Arial Black;"><strong>app.use(express.static(path.join(__dirname, 'public')));  

</strong></span><span style="font-family:Arial Black;"><strong>//app.use(app.router);  //注释掉</strong></span></span></p>  

同时删除test.html文件

则浏览器看到的结果是显示Hello from route handler,说明其实写不写这句,express都是会默认执行的

 

express官方推荐的是方式1的写法,之所以这样做,是考虑到性能问题,不论方式2或方式3,都要首先读写磁盘查找文件,没有匹配文件后然后找路由,而方式1,如果有匹配的路由,则不必去查找磁盘,磁盘的IO操作是必然费时效率低下的。

 

2、第二种路由写法

上述的路由方式,都是写在app.js里,当路由的内容不断增加时,可读性变差

所以有了第二种写法:

app.js

[javascript]  

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

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

 

routes/index.js

[javascript]  

exports.index=function(req,res){  

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

}  

 

3、第三种路由写法(最佳)

app.js  

[javascript]  

routes(app);//最佳  

[javascript]  

app.use(express.router(routes));  

 

routes/index.js

[javascript] 

module.exports = function(app){  

  app.get('/',function(req,res){  

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

  });  

  app.get('/reg', function(req, res) {  

    res.render('reg', {  

      title: '用粼]',  

    });  

  });  

};  

 

觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! js脚本,巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的javascript代码实例教程-express for node 路由route几种实现方式的思考全部内容,希望文章能够帮你解决javascript代码实例教程-express for node 路由route几种实现方式的思考所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。