یک ابزار نوشته شده با جاواسکریپت برای لود کردن اسکریپتهای جاوااسکریپت به صورت غیر همزمان. (= بدون بلاک کردن لود فایلهای دیگر)
روش سنتی استفاده از کدهای خارجی جاوااسکریپت در طراحی وب به این صورت است که فایلها به کمک تگهای <script />
فراخوانی و پشت سر هم دریافت میشدند. این روش مشکلاتی دارد؛ مثلاً برنامهنویس باید در صفحات وب تمام نیازمندی ها را به ترتیبی که صفحه کنونی به آن نیاز دارد قرار دهد، در صورتی که ممکن است نیازمندیها برای صفحات مختلف متفاوت باشد.
require.js نیازمندیها را زمانی که واقعا به آنها نیاز باشد وارد میکند.
به عنوان مثال ماژول Car را تعریف میکنیم:
Car.js
define([], function() {
var module = function() {
var className = 'car';
this.start = function() { /* ... */ };
this.stop = function() { /* ... */ };
};
return module;
});
برای تعریف ماژول Pride که به ماژول Car وابسته است میتوانیم به صورت زیر عمل کنیم:
Pride.js
define(['Car.js'], function(Car) {
var module = Car;
var killDriver = function() {};
module.start = function() {
killDriver();
};
return module;
});
حالا برای ساختن یک شئ از Pride کد زیر کافی است:
<script type="text/javascript"> require(['Pride.js'], function(Pride) { var myCar = new Pride(); // ... die }); </script>
بنابراین مجبور نیستیم ماژول Car را با علم به این که بعدا از آن میخواهیم استفاده کنیم؛ وارد کنیم. Require.js زمانی که کد بالا را ببیند به صورت خودکار آن را وارد میکند.