Jam*_*mes 9 javascript requirejs meteor
我使用require.js为Javascript应用程序进行延迟加载.我很乐意切换到流星堆栈,但现在它看起来像Meteor在初始加载时发送整个应用程序(所有模板).有没有人成功使用require.js和meteor或任何其他实现?
你问的是不同的问题,但他们肯定是有联系的.第一个是关于将额外的JavaScript代码加载到您的流星应用程序中.当然你可以使用像requirejs
.假设您的惰性代码位于meteor项目的public
目录中,这应该可以正常工作.但是,我的经验是,当经常更新内容时会很生气,例如在开发环境中.也许这是自定义库的问题,但我宁愿推荐使用一些轻量级的自制软件包.看看这里,如果你需要一些灵感.requirejs
public
第二个问题是关于惰性模板定义.每个模板由两部分组成.第一个是它的html
代码,用handlebars
语法编写,第二个是你编写的所有javascript代码,用于定义模板的行为方式(例如帮助程序,事件处理程序).第二部分很简单,只要我们假设我们已经知道如何加载惰性代码(参见上面的段落)和模板,让我们调用它myLazyTemplate
,已经定义了,所以基本上说Template.myLazyTemplate
不是undefined
.那么如何实现后者呢?
要动态定义新模板,您需要Template.__define__(name, raw_func)
在客户端上调用
.所以最后一个问题是"什么是raw_func
?".这是你的html代码的编译版本,它通常在服务器上自动创建,然后在应用程序加载时通过网络发送到客户端(看这里看看它是如何在流星中完成的).但是我们想要动态地做到这一点,对吗?
因此,我们的想法是在Handlebars.to_json_ast
例程的帮助下手动编译模板代码.您可以使用模板html代码提供它,输出是一些javascript数组,可以通过我们已经讨论过的方法随时发送给客户端.您需要做的最后一件事是Handlebars.json_ast_to_func
使用从服务器发送的数据作为唯一参数来调用客户端.产生的输出Handlebars.json_ast_to_func
是raw_func
您可以用来生成myLazyTemplate
模板的.
我知道这只是一个粗略的想法,而不是你问题的整个解决方案.我希望这可以帮助您自己找出最终的解决方案.