如何使用ExpressJS(在主视图/根视图上)呈现带有参数的HTML视图
How to render HTML view with parameters using ExpressJS (on the home/root view)?
当用户转到我的应用程序主页时,我想发送一个参数并呈现一个html文件。
以下是我迄今为止所做的:
app.set('view engine', 'ejs');
app.use(express.static(__dirname + '/public'));
app.get('/', function (req, res) {
console.log('Hi !'); // never displayed
res.render('index', { foobar: 'foobar'});
});
HTML已正确呈现(可能是由于express.static
),但似乎从未调用过app.get('/')
,因此我无法返回变量。
如何使用静态HTML页面public/index.HTML从对"/"的调用中返回变量?
我的最终目标是能够在JS中使用foobar
,而无需对服务器进行任何额外的调用。你能帮我实现这一点吗?
如果您的public/
目录中有一个名为index.html
的文件,如果请求了url /
,express.static()
将返回该文件,因此您的路由处理程序将永远不会通过该请求。
通常,模板存储在与静态(公共)资源不同的目录中。默认情况下,Express将在./views
目录中查找模板(除非您另有说明),因此如果您将index.html
移动到那里,它将由EJS渲染(但请参见下文),您可以在其中使用参数。
由于EJS默认情况下会查找以.ejs
扩展名结尾的文件,如果您想继续使用.html
,则需要按如下方式设置Express:
var ejs = require('ejs');
...
app.set('view engine', 'html');
app.engine('html', ejs.renderFile);
这个命令告诉Express在./views
目录中查找扩展名为.html
的文件,并使用EJS呈现这些文件。
var express = require('express');
var router = express.Router();
router.get('/index',function(req,res){
res.sendFile(path.resolve('./public/index.html'));
});
module.exports = router;
相关文章:
- 如何将参数从列表视图中的项传递到模板
- 如何使用ExpressJS(在主视图/根视图上)呈现带有参数的HTML视图
- 使用应用程序状态js和视图在angular js url上传递两个参数
- Emberjs - 将参数动态绑定到视图
- 使用参数从视图中调用操作
- 在Struts2中将参数从视图传递给操作
- 在backbone.js中路由视图时传递一个参数
- 使用add:true参数获取集合时,重新渲染主干视图
- 将返回值作为主干视图方法之间的参数传递
- 如何在 mvc 4 中打开视图传递参数
- 使用 vent.js 传递参数.如何在触发事件后加载的下一个页面视图中读取该数据
- 从 JavaScript 调用 ruby 方法或从 RoR 中的视图中传递参数
- 在 Ember 视图参数更改上运行代码
- 将字符串参数从 JS 视图传递到控制器
- Ember.js将参数从视图传递到控制器函数
- 在 MVC3 中使用字符串调用 JS 函数时,在视图中传递多个参数
- 你如何使用JavaScript中的参数调用Django视图
- 如何通过串联在视图中构造 AngularJS 状态参数
- 将参数传递给项视图中的事件回调
- _changes API不能在Couchbase Lite上使用过滤器和视图参数