我有一个api.js
文件,我在其中进行了两次XHR请求。我在.ejs
文件的 script标记中使用了它,但是它变得太拥挤了。因此,在将所有内容移至api.js
之后,我将无法再访问其数据。
每次我尝试从我的app.js
程序崩溃时要求它时。[nodemon] app crashed - waiting for file changes before starting...
我试图将它放在public
文件夹中以及其他一些地方,但是它永远无法正常工作。
是否应该像处理数据模式一样从api.js
导出数据?如果是这样,我该怎么做? (就像module.exports = mongoose.model("Data", dataSchema);
一样?api.js
中没有任何模型,这只是几个请求)
应该使用.ejs
的{{1}}文件具有这样的路由:
api.js
app.get('/home', function(req, res){
res.render('home', { moment: moment }); //home is an .ejs file
});
来自moment.js。如果我应该导出{ moment: moment }
,那么由于已经使用api.js
,如何在此路由中使用它。我想我不能做
moment.js
主要问题可能是应用程序崩溃,因为如果不解决此问题,我将无法解决其他任何问题。
感谢您的帮助。谢谢!
答案 0 :(得分:1)
我不确定您了解多少过程,但是您的ejs文件是“模板” ---您将“变量”传递给它并“呈现”它,然后express发送html文件。呈现后,“变量”将不再可访问,除非像您一样将其传递到<script>
标记中。 (我不确定您如何使用moment
---也许您仅使用moment
来呈现服务器端内容)
您的html文件可以使用script标记而不是尝试传递api
,该脚本标记可以引用其他文件,例如
<script src='/js/api.js'></script>
但是您的服务器(通过express.js)需要提供此文件。
这是常见的选择,应该对您有用。
通常除非您需要模块或库来呈现某些内容,否则通常不会将其“传递”给模板引擎。但是,如果您愿意,还可以将api.js文件作为字符串读取,然后将其“注入”到脚本标签中……(我通常不这样做)
<script><%= api %></script>