我使用require.js为JavaScript应用程序执行延迟加载。我很想切换到流星堆,但现在看起来Meteor会在初始加载时发送整个应用程序(所有模板)。有没有人有require.js和流星或任何其他实现的成功?流星中的惰性加载模板
回答
你在问不同的问题,但当然他们是连接的。首先是关于将额外的javascript代码加载到您的流星应用程序中。当然你可以使用像requirejs
这样的东西。这应该工作得很好,假设您的懒惰代码位于您的流星项目的public
目录中。不过,我的经验是,当public
的内容经常更新时,requirejs
会变得疯狂,例如在开发环境中。也许这是自定义库的问题,但我宁愿推荐使用一些轻量级的自制软件包。看看here,如果你需要一些灵感。
第二个问题是关于懒惰模板的定义。每个模板由两部分组成。首先是它html
代码,写在handlebars
语法,第二个是所有你写来定义您的模板应该如何行为(例如助手,事件处理程序)的的javascript代码。第二部分很简单,只要我们假设我们已经知道如何加载惰性代码(参见上面的段落)和模板,我们称它为myLazyTemplate
,已经定义好了,所以基本上Template.myLazyTemplate
不是undefined
。那么如何实现后者?
要动态定义新模板,您需要在客户端上调用 Template.__define__(name, raw_func)
。所以最后一个问题是“什么是raw_func
?”。这是一个编译版本的广告HTML代码通常是在服务器上自动创建,然后当应用程序被加载派下来的电线到客户端(看here,看看它是如何在流星完成)。但我们想动态地做到这一点,对吧?
这样的想法是与Handlebars.to_json_ast
程序的帮助下手动编译模板代码。你可以用你的模板HTML代码喂它,输出一些的JavaScript阵列可以通过我们已经谈过的方法随时发送到客户端。您需要做的最后一件事是在客户端上调用Handlebars.json_ast_to_func
,使用从服务器发送的数据作为唯一参数。 Handlebars.json_ast_to_func
生成的输出是您可以用来生成myLazyTemplate
模板的raw_func
。
我知道这只是一个粗略的想法,而不是整个解决方案。我希望这会帮助你自己找出最终的解决方案。
- 1. 流星序列流到模板加载
- 2. 惰性加载不流利的NHibernate
- 3. 懒惰加载模块基座模板
- 4. NH 3.2流畅映射惰性加载
- 5. 流星:在模板
- 6. 流星模板内容满载回调
- 7. 加载模板,如果复选框被选中流星
- 8. 如何在Nativescript中预加载惰性加载的模块
- 9. 流星模板里面的模板
- 10. 流星:模板内的渲染模板
- 11. 流星 - 在模板加载DOM类元素上添加类
- 12. Dynamicaly为流星模板添加事件
- 13. 添加和删除流星模板
- 14. 流体模板不加载
- 15. 内容加载在流星(角流星)
- 16. Intercept角模板加载使用流星+刀片
- 17. 将JSON内容加载到流星模板
- 18. 流星+铁路由器:一旦模板完成就加载FlowPlayer
- 19. 流星全页模板
- 20. 流星模板与阵列
- 21. 流星JS - 多模板JavaScript
- 22. 流星模板更新
- 23. 动态流星模板
- 24. 如何在流星模板
- 25. 流星重复模板
- 26. 流星模板为pdf
- 27. 模板与流星和角
- 28. 流星模板安全
- 29. 流星模板名称
- 30. 流星模板优化
感谢您提供非常详细的答案,这只是我正在寻找的描述级别。 – James
这个答案可能已经过时了。请参阅2015年2月发布的[如何在Meteor中按需延迟加载模板](https://stackoverflow.com/a/28334315/1269037)以及可用的包。 –