Мини-загрузчик модулей JavaScript на основе Promise.
Очень лёгковесный, размер минифицированного файла составляет 2.3 КБ, а размер при передаче gzip — 1.3 КБ.
Поддерживает модули AMD и API require в виде промисов.
Для определения модуля используйте следующий пример с использованием стандарта AMD для файла hello.js
:
define([], () => {
// Реализация каких-либо функций, классов или библиотек внутри модуля, затем возврат значения
return "hello world";
});
Вы можете вызвать модуль hello.js
, аналогично тому, как это делается в requirejs:
require("hello", hello => {
// Возвращаемое значение модуля будет передано в качестве аргумента
alert(hello); // Отображение возврата модуля
});
Также можно использовать методы async/await
ES6 для вызова модуля hello.js
:
(async () => {
let hello = await require("hello");
alert(hello);
})();
Если поддерживается предложение top-level await, то можно использовать его напрямую:
let hello = await require("hello");
alert(hello);
Вы также можете использовать require
в определении модуля AMD:
define(async () => {
let hello = await require("hello");
//let a = await require("a");
//let b = await require("b");
// Для нескольких зависимых модулей
//let [ hello, a, b ] = await Promise.all([
// require('hello'), require('a'), require('b') //...
//]);
return hello.toUpperCase();
});
При вызове неподдерживаемого модуля AMD вы можете использовать hook для решения проблемы экспорта модуля:
// Например, загрузка jQuery
// Сначала помещаем файл jquery в папку ./lib/jquery.js
// Затем определяем hook
require.setHook("./lib/jquery", () => {
return window.$;
});
// Затем вызываем модуль
require("./lib/jquery", $ => {
$("#id").css({ color: red });
});
cwd
рабочая директория
// Текущая рабочая директория
require.cwd = "./assets/js";
// После установки cwd, вы можете использовать @ вместо пути к рабочей директории
define(["@/a.js"], a => {
// a берётся из ./assets/js/a.js
});
default
по умолчанию используется имя файла
// Если указан путь до каталога, то по умолчанию используется имя файла index.js
require.default = "index.js";
// Указание на каталог
define(["assets/lib/"], lib => {
// lib берётся из ./assets/lib/index.js
});
tag
метка версии кэша
// Все пути модулей будут иметь метку tag
require.tag = "v=1.0.1";
define(["assets/test"], test => {
// Путь запроса для test будет assets/test.js?v=1.0.1
});
Кроме того, вы можете настроить скрипт <script>
в вашем HTML:
<script
src="assets/js/im.js"
data-cwd="assets/js"
data-default="index.js"
data-tag="1.0.1"
data-main="app.js"
></script>
<!--
data-main указывает входной js файл,
который автоматически импортируется и выполняется, что эквивалентно:
require('app.js');
-->
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )