如何使用一组依赖项并将其建模为串行和并行操作?
例如:
U1依赖于U2
的串行表示形式。
S: [U1, U2]U1和U2不依赖于并行表示。
P: [U1, U2]S表示序列,P表示并行。在本例中,U引用指向资源的URL。
在并行资源中,排序并不重要。在串行资源中,排序确实很重要。
我正在尝试构建一个资源加载器。
它只需要与本地服务器一起工作。另外,它只使用Ajax请求来加载资源。
但是我想要一种语言/语法来建模依赖资源的复杂性。
澄清与实例
这是为了学习/以后的实施。没有外部库,除非您可以将它们用于加载的语法与问题关联起来。
示例1
Jqueryui依赖jquery。这将被表示为..。
S: [U-jquery, U-jqueryui]示例2
jquery.js不依赖于underscore.js。这将被表示为..。
P: [U-jquery, U-underscore]示例3
backbone.js依赖于underscore.js和jquery.js
P:[U-underscore, U-jquery] // group1
S:[some_notation to represent group1, U-backbone.js]发布于 2013-04-03 12:53:45
没有外部库,除非您可以将它们用于加载的语法与问题关联起来。
您可能想看看require.js以及它如何指定它的依赖项。MediaWiki的ResourceLoader也很有趣,尽管JS依赖映射是由PHP脚本动态生成的,但它的结构可能是相关的。
Jqueryui依赖jquery。这将被表示为..。 S: U-jquery,U-jqueryui
可能,为什么不呢。但是,我不确定您是否想为依赖关系管理创建自己的DSL;如果您想坚持使用标准的JSON /对象文本,我建议将对象的键用于您声明依赖项的模块,然后将其作为值列出:
deps = {
"U-jqueryui": /*depends on*/ ["U-jquery" /*and nothing else*/]
};jquery.js不依赖于underscore.js。这将被表示为..。 P: U-jquery,U-下划线
我不明白。为什么需要显式声明呢?任何不相关的东西(在某种程度上不显着地相互依赖)都应该默认为无序加载/执行。否则,您将有一个指数数量的P-声明的独立模块;如果您错过一个应该发生什么呢?
backbone.js依赖于underscore.js和jquery.js P:U-下划线,U // group1 S:some_notation表示group1,U-backbone.js
我只需使用与示例1中相同的形式:
deps = {
"U-backbone.js": /*depends on*/ ["U-underscore", /*and*/ "U-jquery"]
};如果您确实需要组,您可以创建它们,就像一个没有主体的模块,它只是加载它的所有依赖项并提供它们。然后,在加载程序代码中为它们设置一些异常(基于名称,而不是以U-开头?)这样他们就不会触发实际的ajax请求。最后的依赖项对象将类似于
deps = {
"U-jqueryui": ["U-jquery"],
"group1": ["U-underscore", "U-jquery"],
"U-backbone.js": ["group1"]
};发布于 2013-03-30 23:09:01
检查Modernizr.load
现在您很可能对脚本的下载速度不太满意,但是您会很高兴知道Modernizr.load不会减慢任何事情,有时可以通过异步和并行地加载脚本来提高性能。在这方面有很多变量需要权衡,所以我们建议您尝试一些方法,以确保您在特定情况下获得最大的性能。
http://modernizr.com/docs/
https://stackoverflow.com/questions/15724403
复制相似问题