Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 代码占用最少的JS加载程序_Javascript_Loader_Amd - Fatal编程技术网

Javascript 代码占用最少的JS加载程序

Javascript 代码占用最少的JS加载程序,javascript,loader,amd,Javascript,Loader,Amd,几天前,我遇到了一个问题,这意味着我需要JS加载器 我有以下文件: #c.js var c = {//something}; #b.js var b = Object.create(c); #main.js var a = Object.create(b); a.foo = 'bar'; 我需要从“c.js”开始按顺序加载这些文件 我对js加载程序做了一些快速的研究,发现它们中的许多都不能像我的示例那样在深度依赖下工作(或者工作起来很糟糕),只要在加载给定依赖项时启动回调函数,而不必担心给

几天前,我遇到了一个问题,这意味着我需要JS加载器

我有以下文件:

#c.js
var c = {//something};

#b.js
var b = Object.create(c);

#main.js
var a = Object.create(b);
a.foo = 'bar';
我需要从“c.js”开始按顺序加载这些文件

我对js加载程序做了一些快速的研究,发现它们中的许多都不能像我的示例那样在深度依赖下工作(或者工作起来很糟糕),只要在加载给定依赖项时启动回调函数,而不必担心给定依赖项中的依赖项(如果你现在明白我的意思的话)

虽然有些像requireJs这样的严肃加载程序可以做到这一点,但我发现它们在这种情况下有点烦人:

define([
  'jQuery',
  'Underscore',
  'Backbone',
  'views/projects/list',
  'views/users/list'
], function($, _, Backbone, Session, projectListView, userListView){
…代码太多,依赖性太少

另外,我不喜欢修改一些脚本,所以它们会返回类似于jQuery的内容,而jQuery应该返回$

为了节省时间,避免尝试所有加载程序,我提出了这个问题

所以,最大的问题是,哪个JS加载程序可以执行以下操作:

  • 加载“深层”依赖项,就像我的示例一样,只有在加载所有依赖项和依赖项的所有依赖项(…等等)时才会启动callback()
  • 占用空间小,就像有一个reuqire函数一样,有dependencList和callback,并且不需要“callback”来返回和传递某些内容(因为通常我有自己的名称空间,比如g.a、g.b、g.c)
  • 以下是我希望看到的一些示例:

    #c.js
    require([], function(){
    var c = {//something};
    });
    
    #b.js
    require(['c.js'], function(){
    var b = Object.create(c);
    });
    
    #main.js
    require(['b.js'], function(){
    var a = Object.create(b);
    a.foo = 'bar';
    });
    
    *对不起我的英语


    另外,实际上我编写了自己的加载器,它可以处理给定的事情,甚至比$script.js更小(580字节),不过,当需要一些东西时,应该传递当前脚本的文件名,比如
    require('main.js',['b.js',function(){})-但我不想依赖我的实现。

    这是一种使用
    require.js实现需求的方法:

    // c.js
    define(
        {/*something*/}
    );
    
    // b.js
    define(['c.js'], function(c) {
        return Object.create(c);
    });
    
    // main.js
    require(['b.js'], function(b) {
        var a = Object.create(b);
        a.foo = 'bar';
    });
    
    对我来说,这似乎很接近你想看到的,不是吗


    如果您有多个依赖项,如jQuery、主干网等,并且希望将所有内容解耦,那么您将得到类似于第二个列表的结果。但是,另一种方法可能是全局加载“全局”库(如jQuery),而不使用加载器,让
    require.js
    只处理您自己的类和代码部分。

    我问这个问题已经有一段时间了。 这个问题的解决方案只是使用requireJs,但以另一种方式定义模块:

    define(require){
      var dep1 = require("dep1"),
      dep2 = require("dep2");
    
      var MyModule = {//define something};
    
      return MyModule;
    };