路由到静态HTML页面,以及Express中模板化的动态路由
Routing to static HTML pages, along with templated dynamic routes in Express
我使用Express创建了一个基本的web应用程序,并提供了一个动态路由,如:
app.get('/myroute/:user_id', function (req, res) {
res.render('mytemplate');
});
这将呈现EJS模板"mytemplate"。当用户访问/myroute/15
现在,我还想创建第二个路由/staticroute
,传输静态HTML页面somepage.html
。
最好的方法是什么?这些静态页面应该在Express之外提供吗?我在StackOverflow上看到了一些相关的答案,但是它们要么使用了过时的功能,要么不支持缓存。
对于这种情况有res.sendfile()
。如果您不需要静态文件的特殊路由,您可以考虑使用express.static
中间件。
这里有一个快速的解决方案,你可以尝试memcached(太长了,不能放在注释中,我仍然推荐nginx的proxy_cache,以避免在下面编码):
var Memcached = require('memcached'); // sudo apt-get install memcached
// npm install memcached
var memcached = new Memcached('localhost:11211'); // default
var ttl = 86400; // 24hrs time to live
function readContent(callback) { // async read with callback
fs.readFile("./someIndex.html", function (err, content) {
(err) ? callback(err) : callback(null, content);
})
}
app.get('/someRoutes', function (req, res) {
memcached.get('foo', function( err, content){ // get 'foo' from memcached
if( err ) console.error( err ); // .get() error handling
if( content ) { // data in memcached
// render content and output
} else { // data not in memcached
readContent(function (err, myFile) { // try reading file
if (myFile) { // file found, save to memcached & render
memcached.set('foo', myFile, ttl, function( err, data ){
if( err ) console.error( err ); // .set() error handling
});
// render myFile and output
}
}); // end readContent()
} // end if-content-else-
}); // end memcached.get()
}); // end app.get
相关文章:
- 尝试使用Node.js动态路由从IMDB中抓取电影内容.但是在我的output.json文件中没有定义
- 在angularjs中动态路由url路径
- express js中具有不同功能的动态路由
- ASP.NET MVC路由-动态加载.js脚本
- 如何在 html 页面上动态添加路由到脚本 src
- Emberjs:动态模板嵌套和路由
- 如何构造用于骨干路由的动态url
- 动态添加/注册AngularJS控制器,无需路由
- 使用ui路由器实现动态URL路由的最佳方式是什么
- angular ui:ui路由器动态路由和状态
- Slick Carousel在应用程序动态路由的基础上不起作用
- 动态路由PHP&AngularJS
- json动态菜单和路由
- AngularJs 中的动态路由
- AngularJS - 使用 UI-Router 进行动态路由
- 具有动态路由和动态依赖性的角度模块化
- 角度 UI 路由器 - 使用路由传递动态数据
- Expressjs 动态路由问题
- 在 AngularJS 中设置具有动态路由和模板的 12 个产品页面的最佳方式
- AngularJS——基于路由动态加载外部JS