Heim > Web-Frontend > js-Tutorial > Hauptteil

Teilen Sie ein Beispiel-Tutorial zur Verwendung von r.js zum Paketieren und Modularisieren

零下一度
Freigeben: 2017-06-15 13:18:41
Original
1606 Leute haben es durchsucht

Dieser Artikel führt Sie hauptsächlich in die relevanten Informationen zur Verwendung von r.js zum Packen modularer Javascript-Dateien ein. Die Einführung im Artikel ist sehr detailliert und hat einen gewissen Referenz- und Lernwert für alle Freunde, die sie benötigen, können dem untenstehenden Editor folgen . Schauen Sie mal rein.

Vorwort

r.js (lokaler Download) ist das Optimierungstool (Optimizer) von requireJS, das das Frontend komprimieren und zusammenführen kann Auf der Grundlage des asynchronen On-Demand-Ladens von requireJS bieten wir außerdem eine Front-End-Optimierung, um die Front-End-Dateigröße und Dateianforderungen an den Server zu reduzieren. In diesem Artikel werden die relevanten Inhalte von r.js im Detail vorgestellt. Interessierte Freunde können einen Blick darauf werfen.

Einfache Verpackung

[Projektstruktur]

Mit einem einfachen Beispiel Veranschaulichen Sie die Verwendung von RJS. Der Projektname ist „demo“. Es enthält zwei Dateien, s1.js und s2.js, im js-Verzeichnis. Der Inhalt ist wie folgt:


//s1.js
define(function (){
 return 1;
})
//s2.js
define(function (){
 return 2;
})
Nach dem Login kopieren

Verwenden Sie main.js, um die beiden Dateien s1.js und s2.js aufzurufen


require(['s1','s2'], function(a,b){
  console.log(a+b);
});
Nach dem Login kopieren

Der Inhalt von index.html lautet wie folgt


<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
 <script data-main="js/main" src="js/require.js"></script>
</head>
<body>
</body>
</html>
Nach dem Login kopieren

Führen Sie die Datei index.html aus. Die abhängigen Ressourcen sind wie unten dargestellt

[ Paketierung]

Als nächstes verwenden Sie r.js, um die Javascript-Datei zu packen, und r.js muss mithilfe der build.js-Datei konfiguriert werden. Die Konfiguration ist wie folgt


({
 baseUrl: "./",
 name:&#39;main&#39;,
 out:&#39;out.js&#39;
})
Nach dem Login kopieren

Führen Sie als Nächstes den node r.js -o build.js-Befehl

im Projektstammverzeichnis aus, um eine out.js-Datei mit dem folgenden Inhalt zu generieren :


define("s1",[],function(){return 1}),define("s2",[],function(){return 2}),require(["s1","s2"],function(n,e){console.log(n+e)}),define("main",function(){});
Nach dem Login kopieren

Ändern Sie die Eintragsdatei von index.html in „out.js“, die Datei kann weiterhin normal ausgeführt werden


<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
 <script data-main="js/out" src="js/require.js"></script>
</head>
<body>
</body>
</html>
Nach dem Login kopieren

jQuery-Paketierung

Im Allgemeinen verwenden wir kein natives Javascript für die Entwicklung, sondern verwenden eher Bibliotheken für Effiziente Entwicklung. Nehmen Sie jQuery als Beispiel, um den obigen Code zu transformieren

Das s1-Modul und das s2-Modul basieren jeweils auf jQuery, um die Breite und Höhe des Seiten-p-Elements zu erhalten.


//s1.js
define([&#39;../common/jquery&#39;],function (){
 return $(&#39;p&#39;).height();
})
//s2.js
define([&#39;../common/jquery&#39;],function (){
 return $(&#39;p&#39;).width();
})
Nach dem Login kopieren

Die Projektstruktur ist wie folgt: Der js-Ordner enthält zwei Unterordner, common und module. Der gemeinsame Ordner enthält die gemeinsamen Dateien require.js und jquery.js Der Modulordner enthält die Module s1.js und s2.js.

Im Stammverzeichnis der Seite befinden sich index.html, die Eintragsdatei main.js sowie r.js und build.js

【Enthält jQuery】

Wenn das gepackte main.js jQuery.js einschließen möchte, lautet der Code wie folgt


({ 
 appDir: &#39;./&#39;, //项目根目录
 dir: &#39;./dist&#39;, //输出目录,全部文件打包后要放入的文件夹(如果没有会自动新建的)
 baseUrl:&#39;./&#39;,
 modules: [ //要优化的模块,相对baseUrl的路径,也是省略后缀“.js”
 { name:&#39;main&#39; } 
 ], 
 fileExclusionRegExp: /^(r|build)\.js|.*\.scss$/, //过滤,匹配到的文件将不会被输出到输出目录去
 optimizeCss: &#39;standard&#39;, 
 removeCombined: true //如果为true,将从输出目录中删除已合并的文件
})
Nach dem Login kopieren

n( e,t){console.log(parseInt(e)+parseInt(t))}),define("main",function(){});

[ jQuery nicht enthalten]

Wenn andere Seiten ebenfalls jQuery verwenden müssen, packen sie beim Packen auch jQuery. Auf diese Weise entspricht es dem einmaligen Packen von jQuery für jede Seite, und die Leistung ist sehr schlecht. Ein besserer Ansatz besteht darin, jQuery nicht zu packen, sodass Sie den Cache verwenden können, wenn andere Seiten auf jQuery verweisen.

Der Inhalt von build.js ist wie folgt


({ 
 appDir: &#39;./&#39;, //项目根目录
 dir: &#39;./dist&#39;, //输出目录,全部文件打包后要放入的文件夹(如果没有会自动新建的)
 baseUrl:&#39;./&#39;,
 modules: [ //要优化的模块,相对baseUrl的路径,也是省略后缀“.js”
 { 
  name:&#39;main&#39;,
  exclude: [&#39;js/common/jquery&#39;]//不打包jQuery
 } 
 ], 
 fileExclusionRegExp: /^(r|build)\.js|.*\.scss$/, //过滤,匹配到的文件将不会被输出到输出目录去
 optimizeCss: &#39;standard&#39;, 
 removeCombined: true //如果为true,将从输出目录中删除已合并的文件
})
Nach dem Login kopieren

Führen Sie als Nächstes den Befehl node r.js -o build.js aus

Nach dem Ausführen wird ein Ordner „dist“ generiert. Bei den in diesem Ordner enthaltenen Dateien handelt es sich ausschließlich um verarbeitete Dateien, die für den Online-Betrieb geeignet sind

Das obige ist der detaillierte Inhalt vonTeilen Sie ein Beispiel-Tutorial zur Verwendung von r.js zum Paketieren und Modularisieren. 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