CNode

ejs里面怎么使用其他js文件里的功能?

问答
Xxupeng086发布于11 年前最后回复11 年前6 回复9514 浏览0 收藏

在.ejs文件里,要格式化一个时间,我想使用一个common.js里的功能,应该怎么做呢? var common=require("common.js");//在ejs文件里能写这种代码吗? <%=common.dateFormat(dt) %>

查看回复

回复 (6)

T
tianlmn#1·11 年前

我也遇到了这个问题,折腾了大半天了 index.ejs: <%=((new Date()).Format("yyyy-MM-dd"))%>

app.js: Date.prototype.Format = function(formatStr) {...} 页面的js都加载到了, 在页面的控制台执行(new Date()).Format("yyyy-MM-dd")也没有问题, 改成<%=((new Date()).getFullYear())%>刷新页面也没有问题 就是自己定义的原型方法刷新页面不行。 求指点

Z
zkaip#2·11 年前

模板渲染本质是服务器执行服务端代码给客户端提供渲染好的页面, 所以, 服务器并不知道客户端JS的任何代码函数, 服务器只认识服务端的JS函数, 通过路由后面的Controller控制渲染结果

服务器不认识任何客户端JS文件!!!(public里任何JS文件服务端都不认识)

所以,可以用express的app.locals({fun:fn()}),提供ejs等模板的函数

T
tianlmn#4·11 年前
引用 zkaip模板渲染本质是服务器执行服务端代码给客户端提供渲染好的页面, 所以, 服务器并不知道客户端JS的任何代码函数, 服务器只认识服务端的JS函数, 通过路由后面的Controller控制渲染结果 ...

app.locals({a:fun(){}})没有成功,貌似提示locals不是函数。 但是app.locals.FormatDate = function(oridate,formatStr)这个是可以的, 另外我自己试下来,app.locals.Date.prototype.FormatDate=function以及Date.prototype.FormatDate=function也都是不行的, 虽然没有完美解决,不过好歹可以使用了。谢谢大牛@zkaip 的帮助~

Z
zkaip#6·11 年前
引用 tianlmnapp.locals({a:fun(){}})没有成功,貌似提示locals不是函数。 但是app.locals.FormatDate = function(oridate,formatStr...

@tianlmn app.locals对象上的方法是express可以在系统render时候使用的方法

参与回复
登录后即可参与回复。登录