gpt4 book ai didi

javascript - Meteor 中的延迟加载模板

转载 作者:数据小太阳 更新时间:2023-10-29 03:54:27 25 4
gpt4 key购买 nike

我使用 require.js 为 Javascript 应用程序执行延迟加载。我很想切换到 meteor 堆栈,但现在看起来 Meteor 在初始加载时发送整个应用程序(所有模板)。有没有人在 require.js 和 meteor 或任何其他实现方面取得成功?

最佳答案

你问的是不同的问题,但它们肯定是相互关联的。第一个是将额外的 javascript 代码加载到您的 meteor 应用程序中。当然你可以使用像requirejs这样的东西。如果您的惰性代码位于 meteor 项目的 public 目录中,这应该可以正常工作。然而,我的经验是,当 public 的内容经常更新时,requirejs 会发疯,例如在开发环境中。也许这是自定义库的问题,但我宁愿推荐使用一些轻量级的自制程序包。看here ,如果您需要一些灵感。

第二个问题是关于惰性模板定义的。每个模板由两部分组成。第一个是它的 html 代码,用 handlebars 语法编写,第二个是您编写的所有 javascript 代码,用于定义模板的行为方式(例如助手、事件处理程序)。第二部分很简单,只要我们假设我们已经知道如何加载惰性代码(见上一段)和模板,让我们称之为 myLazyTemplate,已经定义好了,所以基本上来说Template.myLazyTemplate 不是 undefined。那么后者如何实现呢?

要动态定义一个新模板,您需要调用Template.__define__(name, raw_func)在客户端上。所以最后一个问题是“raw_func 是什么?”。这是您的 html 代码的编译 版本,它通常在服务器上自动创建,然后在加载应用程序时通过网络发送到客户端(查看 here看看它是如何在 meteor 中完成的)。但我们想动态地进行,对吧?

所以想法是在 Handlebars.to_json_ast 例程的帮助下手动编译模板代码。您可以将您的模板 html 代码提供给它,输出是一些 javascript 数组,可以通过我们已经讨论过的方法随时发送给客户端。您需要做的最后一件事是在客户端上调用 Handlebars.json_ast_to_func,使用从服务器发送的数据作为唯一参数。 Handlebars.json_ast_to_func 生成的输出是 raw_func,您可以使用它生成 myLazyTemplate 模板。

我知道这只是一个粗略的想法,并不是您问题的完整解决方案。我希望这会帮助您自己找出最终的解决方案。

关于javascript - Meteor 中的延迟加载模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17998739/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com