Heim > Web-Frontend > js-Tutorial > Zusammenfassung der Verwendung von Require.js

Zusammenfassung der Verwendung von Require.js

一个新手
Freigeben: 2017-10-26 09:48:27
Original
1786 Leute haben es durchsucht

1. Warum require.js verwenden?

Wenn eine Seite mehrere js-Dateien lädt, wird die Der Browser stoppt das Rendern der Webseite, desto länger verliert die Webseite die Reaktion. Zweitens muss die Ladereihenfolge strikt gewährleistet sein wird schwierig zu schreiben und zu pflegen sein.

require.js soll diese beiden Probleme lösen:

  1.  js asynchrones Laden implementieren von Dateien, um Reaktionsverluste auf Webseiten zu vermeiden;

  2.   verwaltet Abhängigkeiten zwischen Modulen, um das Schreiben und Warten von Code zu erleichtern.

2. Laden von require.js

Kapitel Schritt eins: Gehen Sie zur offiziellen Website, um die neueste Version herunterzuladen, und legen Sie sie direkt auf die Seite zum Laden


 <script src="js/require.js"></script>
Nach dem Login kopieren

Das Laden dieser Datei kann möglich sein Damit die Webseite nicht mehr reagiert, können Sie sie zum Laden am Ende der Seite platzieren oder wie folgt schreiben:


 <script src="js/require.js" defer async="true" ></script>
Nach dem Login kopieren

Das Attribut async gibt an, dass diese Datei asynchron geladen werden muss, um zu verhindern, dass die Webseite nicht mehr reagiert. Der IE unterstützt dieses Attribut nicht und unterstützt nur die Verzögerung, sodass auch die Verzögerung geschrieben wird.

Nach dem Laden von require.js besteht der nächste Schritt darin, unseren eigenen Code zu laden, der den Eingang darstellt und als Hauptmodul bezeichnet werden kann. Wenn die Datei main.js heißt, es wird wie folgt geschrieben. Das ist es:


<script src="js/require.js" data-main="js/main"></script>    .js后缀可以省略
Nach dem Login kopieren

3. Wie schreibe ich das Hauptmodul

Wenn das Hauptmodul von jQuery abhängt, können Sie es so schreiben:

 require([&#39;jquery&#39;], function ($){
   alert($);
});
Nach dem Login kopieren

4. require.config()-Methode

require.config({
  paths: {
    "jquery": "jquery.min",
    "underscore": "underscore.min",
    "backbone": "backbone.min"
  }
});
Nach dem Login kopieren

Der obige Code gibt die Dateinamen der drei Module an. Der Pfad ist standardmäßig im gleichen Verzeichnis wie main .js (js-Unterverzeichnis). Wenn sich diese Module in anderen Verzeichnissen befinden, beispielsweise im Verzeichnis js/lib, gibt es zwei Möglichkeiten, sie zu schreiben.

  • Eine besteht darin, die Pfade einzeln anzugeben

require.config({
  paths: {
    "jquery": "lib/jquery.min",
    "underscore": "lib/underscore.min",
    "backbone": "lib/backbone.min"
  }
});
Nach dem Login kopieren
  •  Die andere Möglichkeit besteht darin, das Basisverzeichnis (baseUrl) direkt zu ändern.

require.config({
  baseUrl: "js/lib",
  paths: {
    "jquery": "jquery.min",
    "underscor: "underscore.min",
    "backbone": "backbone.min"
  }
});
Nach dem Login kopieren
  • Wenn sich ein Modul auf einem anderen Host befindet, können Sie dessen URL auch direkt angeben, z. B.

require.config({
  paths: {
    "jquery": "https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min"
  }
});
Nach dem Login kopieren

So schreiben Sie das AMD-Modul

geladen von js übernehmen AMD-Spezifikationen. Mit anderen Worten: Das Modul muss gemäß den AMD-Vorschriften geschrieben sein.

Konkret muss das Modul mit einer bestimmten define()-Funktion definiert werden. Wenn ein Modul nicht von anderen Modulen abhängig ist, kann es direkt in der Funktion define() definiert werden.

// math.js
define(function (){
  var add = function (x,y){
    return x+y;
  };
  return {
    add: add
  };
});
Nach dem Login kopieren

Die Lademethode ist wie folgt:

 // main.js
require([&#39;math&#39;], function (math){
  alert(math.add(1,1));
});
Nach dem Login kopieren

Wenn dieses Modul auch von anderen Modulen abhängt, dann das erste von Der Parameter der Funktion define() muss ein Array sein, das die Abhängigkeiten des Moduls angibt.

 define([&#39;myLib&#39;], function(myLib){
  function foo(){
    myLib.doSomething();
  }
  return {     //返回模块中的函数
    foo : foo
  };
});
Nach dem Login kopieren

当require()函数加载上面这个模块的时候,就会先加载myLib.js文件。

六、加载非规范的模块(shim的使用方式)

 //  app.js
 function sayHello(name){
  alert(&#39;Hi &#39;+name);
}
Nach dem Login kopieren
 //  main.js
require.config({
  shim: {
    &#39;app&#39;: { //这个键名为要载入的目标文件的文件名,不能随便命名。
      exports: &#39;sayHello&#39; //exports的值为my.js提供的 对外接口的名称
    }
  }
});

require([&#39;app&#39;], function(sayHello) {
    alert(sayHello())  
})
Nach dem Login kopieren

导出一个函数,意味着我们得到了一个javaScript类

但是如果在my.js中写了很多function,整合成一个function有点麻烦,想直接导出?方法如下:

 // app.js
function sayHi(name){
    alert(&#39;Hi &#39;+name);
}
function sayHello(name){
    alert(&#39;Hiello  &#39;+name);
}
Nach dem Login kopieren
// main.js  
  require.config({
    shim: {
      app: {
        init: function() { //这里使用init将2个接口返回
          return {
            sayHi: sayHi,
            sayHello: sayHello
          }
        }
      }
    }
  });

  require([&#39;app&#39;], function(a) {
    a.sayHi(&#39;zhangsan&#39;);
    a.sayHello(&#39;lisi&#39;);
  });
Nach dem Login kopieren

shim的有序导入

   require.config({  

    shim: {  
      &#39;jquery.ui.core&#39;: [&#39;jquery&#39;],  //表示在jquery导入之后导入
      &#39;jquery.ui.widget&#39;: [&#39;jquery&#39;],  
      &#39;jquery.ui.mouse&#39;: [&#39;jquery&#39;],  
      &#39;jquery.ui.slider&#39;:[&#39;jquery&#39;]
     },  
    paths : {    
       jquery : &#39;jquery-2.1.1/jquery&#39;,    
       domReady : &#39;require-2.1.11/domReady&#39;,    
       &#39;jquery.ui.core&#39; : &#39;jquery-ui-1.10.4/development-bundle/ui/jquery.ui.core&#39;,    
       &#39;jquery.ui.widget&#39; : &#39;jquery-ui-1.10.4/development-bundle/ui/jquery.ui.widget&#39;,    
       &#39;jquery.ui.mouse&#39; : &#39;jquery-ui-1.10.4/development-bundle/ui/jquery.ui.mouse&#39;,    
       &#39;jquery.ui.slider&#39; : &#39;jquery-ui-1.10.4/development-bundle/ui/jquery.ui.slider&#39; 
        }
  });    
 
  require([&#39;jquery&#39;, &#39;domReady&#39;,&#39;jquery.ui.core&#39;,&#39;jquery.ui.widget&#39;,&#39;jquery.ui.mouse&#39;,&#39;jquery.ui.slider&#39;],    function($) {            
      $("#slider" ).slider({              
       value:0,           
       min: 0,           
       max: 4,           
       step: 1,           
       slide: function( event, ui ) {}     
        });    
   }
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonZusammenfassung der Verwendung von Require.js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage