小智 56
我找到了另一种方法,我认为它有一些优点.
在您的控制器上,或view.js执行此操作:
var moment = require('moment');
exports.index = function(req, res) {
// send moment to your ejs
res.render('index', { moment: moment });
}
Run Code Online (Sandbox Code Playgroud)
现在你可以在你的ejs里面使用一下:
<html>
<h1><%= moment().fromNow() %></h1>
</html>
Run Code Online (Sandbox Code Playgroud)
我不是节点专家,所以如果有人看到这样做的不好,请告诉我!:)
Mat*_*uel 21
还有一个选择:
这样,您可以将moment变量设置为可用于站点上任何EJS页面中所有脚本的本地变量.
在你的"index.js"(或"app.js")文件中执行以下操作:(在使用Express设置'app'之后)
var moment = require('moment');
var shortDateFormat = "ddd @ h:mmA"; // this is just an example of storing a date format once so you can change it in one place and have it propagate
app.locals.moment = moment; // this makes moment available as a variable in every EJS page
app.locals.shortDateFormat = shortDateFormat;
Run Code Online (Sandbox Code Playgroud)
然后在您的EJS文件中,您可以将moment(和shortDateFormat)称为变量,如下所示:
<%= moment(Date()).format(shortDateFormat) %>
Run Code Online (Sandbox Code Playgroud)
也许这稍微优雅一点?
cho*_*ovy 10
我使用ejs在服务器端使用时刻.我写了一个将从现在返回的ejs过滤器函数.
npm install moment
Run Code Online (Sandbox Code Playgroud)
./views/page.ejs
<span class="created_at"><%=: item.created_at | fromNow %></span>
Run Code Online (Sandbox Code Playgroud)
./routes/page.js
var ejs = require('ejs')
, moment = require('moment');
ejs.filters.fromNow = function(date){
return moment(date).fromNow()
}
Run Code Online (Sandbox Code Playgroud)
小智 10
var moment = require('moment');
app.locals.moment = require('moment');
Run Code Online (Sandbox Code Playgroud)
在视图中使用:
<%= moment(myDateValue).fromNow() %>
Run Code Online (Sandbox Code Playgroud)
现在您只需在EJS文件中使用时刻即可.
您上面提到的服务器端(EJS 视图)在浏览器上运行,而不是在您的服务器上运行。您不能使用 require,因为浏览器无法理解它。您需要导入 moment.js 才能使用它
<script src="/js/moment.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29864 次 |
| 最近记录: |