Javascript 如何在不预先加载所有内容的情况下构造主干/木偶应用程序
我有一个backbone.js和木偶应用程序,它使用require.js。我也使用把手和hbs插件在这里找到 在我的应用程序开始时,我加载了一个路由器和一个控制器,这当然需要视图,以便它可以实例化它们并在区域上显示它们 因此,在开始时,控制器请求视图,视图需要它的js脚本依赖项,hbs预加载模板。这导致我的应用程序从所有javascript文件和html模板开始,就像用户下载桌面应用程序一样。我可以通过查看developer tools选项卡来确认这一点,查看下载的内容 var A=require(“A”)即使在条件括号中也会被加载 只有当用户实际导航到控制器的功能时,才有办法加载js(它自己加载模板(html文件))吗?从: AMD加载程序将使用Function.prototype.toString()解析require(“”)调用 也就是说,如果您这样做:Javascript 如何在不预先加载所有内容的情况下构造主干/木偶应用程序,javascript,backbone.js,requirejs,marionette,Javascript,Backbone.js,Requirejs,Marionette,我有一个backbone.js和木偶应用程序,它使用require.js。我也使用把手和hbs插件在这里找到 在我的应用程序开始时,我加载了一个路由器和一个控制器,这当然需要视图,以便它可以实例化它们并在区域上显示它们 因此,在开始时,控制器请求视图,视图需要它的js脚本依赖项,hbs预加载模板。这导致我的应用程序从所有javascript文件和html模板开始,就像用户下载桌面应用程序一样。我可以通过查看developer tools选项卡来确认这一点,查看下载的内容 var A=requir
define(function (require) {
if(x) {
var y = require('y');
}
});
RequireJS将在调用函数之前解析所有require调用,将require
包装成条件函数
请记住,对缺少的脚本执行单个请求所需的时间比解析大量从未调用的代码所需的时间要长。你试图做的事情可能不值得,甚至可能产生负面影响。对于生产使用,建议使用优化器,它将所有内容捆绑在一个文件中
要回答您的问题,请避免使用CommonJS样式,并在模块内调用asyncrequire
:
define([], function () {
if(x) {
require(['y'], function (y) {
y.doStuff();
});
}
});
对于代码来说是有意义的。但是我做的是tpl=require(“hbs!template/user/profile”),它也会加载.html,这可能会更昂贵?你说从get go开始在一个大型web应用程序中加载every.js和every.html是正常的吗?