有人将LabJs与javascriptmvc窃取结合使用?意味着寻找子级别的依赖性加载以及利用LabJs异步性能增益。
a.js
.....
窃取(../ b.js) .then(../ c.js)//c.js要求在加载之前加载b.js和d.js
b.js
.....
窃取(../ d.js)//(需要在调用b.js时加载d.js,加载d.js以便更好地进行分类和维护)
任何关于labjs + steal的文章或经验都会很棒。
答案 0 :(得分:0)
窃取将生产应用程序构建到单个JS文件中。您可以随意加载该文件。
答案 1 :(得分:0)
撇开偷窃为你建立一个单独的文件......
注释嵌入在每个脚本中的依赖项的概念意味着,您自己无法充分利用并行加载,因为加载器不知道A所依赖的脚本,直到它完成加载A并且可以看到它需要B和C.当然,一旦知道B和C,它就可以并行加载这两个,但它不能与A并行加载B和C.
另一个问题是LABjs(以及大多数其他动态脚本加载器)严格来说具有非阻塞行为,所以如果你加载这样的脚本,你就会遇到问题:
一个 - 取决于B和C
d - 取决于A和E
当A完成加载,然后你开始加载B和C时,你不能本身(没有额外的预先努力)让D等到B,然后C(以及A)完成。
这背后的原因很难解释,但足以说明,这种情况对于嵌套依赖注释的动态加载是有问题的。
但是,如果您在开始时了解依赖关系树(也就是说,您不必等待加载脚本以了解其嵌套的依赖关系注释),则可以轻松利用动态并行加载,同时确保顺序保留下来。您可以轻松完成此操作:
乙 C 一个 Ë d
并且并行地加载它们中的所有5个,同时仍然确保它们按照所述的正确顺序执行。找出依赖关系树和必要的执行顺序的最好方法是让构建过程遍历所有脚本并找出列表的内容及其必要的顺序。
使用LABjs,上面的链看起来像这样:
$ LAB.setOptions({AlwaysPreserveOrder:真})。脚本([B,C,A,E,d]);
非常简单明了,假设您在一开始就知道该列表/订单是什么。只需让您的构建脚本将一行代码放入HTML页面,然后繁荣,就可以了。
如果你没有这样的构建脚本(我有自己的,我已经为我需要这类东西的各种项目构建),你有两个选择:
请勿使用嵌套依赖项注释。自己管理您的依赖项列表(上面的列表),并确保它的顺序正确。十年或更长时间,人们在浏览器中使用脚本标签的方式就是如此,所以对于大多数网站而言,它可能已经足够了。我在我的许多网站上都有LABjs链,我手动管理,这根本没有问题,就像成千上万使用LABjs的其他网站一样。
使用构建脚本(如Steal),只需将它们全部放在一个文件中(当然,它也必须找出正确的顺序!)。您没有获得并行加载权益。长号。
希望这能够解决眼前的问题。