【发布时间】:2023-03-11 01:57:02
【问题描述】:
Meteor 的惊人之处在于,您可以在本地开发时手动更新 HTML 文件,并且这些更改会在您保存文件时立即生效。我想采用相同的功能并将其带到我们部署的环境中。原因是我们希望允许我们的客户对 UI 进行更改,而无需重新部署应用程序,甚至不需要知道它是 Meteor 应用程序。他们可能会向列表视图添加新字段、向表单添加新字段、更改标签等。
到目前为止,我已经为他们创建了一种方法,可以使用 DSL 调用 REST 服务来描述这些更改并将其保存在 Mongo 中。然后我们有一个引擎会动态创建 HTML 模板来实现它。这一切都很好。
接下来,我正在尝试根据我对 Meteor DB 的订阅来热部署 Meteor HTML 文件,该订阅存储可以按需更改的内容。是否可以即时更新 Meteor 客户端文件系统,以便实现热部署?
在服务器发布方法上执行以下操作会导致ENOENT: no such directory 错误:
var result = decodeHTML(cheerio.html());
console.log(result);
// Output to file
fs.writeFile('../client/app/client/templates/request-base-template.html', result, function (err) {
if (err) {
console.log("error: " + err);
}
else {
console.log("File saved successfully");
}
});
【问题讨论】:
-
什么是'/client/view/template.html'?您是否希望覆盖您的模板?
-
在生产环境中,你甚至没有 html 文件,它们都被编译成 JS 代码,生成你在页面上看到的响应式 HTML
-
我已经更新了路径以匹配实际存在的路径,但是是的,你是对的,它们被编译成 JS,所以这种方法是有缺陷的。所以我想我真正的问题是我可以根据我们存储在 MongoDB 中的 HTML 的一些新更新重新编译它们吗?
-
您要解决的问题是什么。是的,您可以根据对 HTML 的更改动态编译模板,但这听起来不是最好的设计。如果您更详细地描述您的用例,可能有更好的解决方案纯粹基于模型更改? (不在视图上)
-
在上面更新的问题中查看更具描述性的问题陈述和用例。我认为如果可以实现的话,这将是一个非常引人注目的用例,可以在我们的工作中推动更多 Meteor 采用。