Идентификация модуля Github Seajs была относительно ясной. Но это не рассматривается во всем, особенно когда вам нужно руководить [идентификатор модуля] и [зависимость модуля], или когда вы пишете свой собственный инструмент автоматизации для транспортировки (PS: SPM, кажется, не очень адаптируется и не прост в Используйте, в конце концов, каждая структура каталогов проекта может сильно различаться и нелегко изменить. и правила анализа идентификатора должны быть тщательно поняты.
Примечания:
1. Идентификатор верхнего уровня всегда анализируется по сравнению с базовым базовым путем.
2. Абсолютный путь и корневой путь всегда проанализированы по сравнению с текущей страницей.
3. Относительные пути в требуемых и требованиях. АСИНС анализируются относительно текущего пути модуля.
4. Относительный путь в Seajs.use всегда анализируется по сравнению с текущей страницей.
В Seajs идентификатор модуля может быть примерно разделен на три типа: [относительный идентификатор], [идентификатор верхнего уровня] и [нормальный путь].
Обычные пути включают «абсолютный путь», «корневой путь» и т. Д.
Здесь мы сосредоточены на [относительном логотипе] и [Top Logo].
Относительные идентификаторы относятся к «./», «../», например: »./othermodule", "../lib/base".
Идентификаторы верхнего уровня относятся к файлам или каталогам (могут содержать: буквы, -, _), такие как: "App/widget/select"
Есть три места, где требуется идентификатор модуля:
Копия кода выглядит следующим образом: define ("id (1)", ["../ id2 (2)"], function (require, exports, module) {
var modulea = require ('./ modulea (3)');
})
ПРИМЕЧАНИЕ. Будь то первый параметр [идентификатор модуля] или второй параметр [идентификатор модуля] или [надежный идентификатор модуля], конечным стандартом сравнения является [проанализированный файл URI].
Следовательно, эти три места, на которых необходимо записано идентификаторы, могут быть написаны каким -либо образом, и пока они, наконец, проанализированы в одном и том же URI, они считаются тем же модулем.
Во время процесса анализа идентификатора он будет обработан заранее под псевдонимом и путями, определенными на Seajs.config.
Правила разрешения базового пути
(Слой 1, сам путь не зависит от каких -либо настроек)
1. [Идентификация верхнего уровня] не может быть использована, потому что идентификация верхнего уровня проанализируется по сравнению с базовым базовым путем, поэтому сама основа может использовать только [относительную идентификацию] или [корневой путь] и т. Д.
2. Путь по умолчанию - это каталог Seajs.
3. [Относительная идентификация]: анализировать относительно текущей страницы.
Правила разрешения пути на пути
(Слой 1, сам путь не зависит от каких -либо настроек)
1.
2. Поля в путях будут заменены в форме переменных, где они используются, а затем анализируются.
например:
Скопируйте код следующим образом: // кодовый блок (1)
// Определение пути:
seajs.config ({
База: "./ App/src",
путь:{
"A": "../ lib", // (1) относительный путь
«Lib»: «Path/to/lib», // (2) логотип верхнего уровня
"L2": "/lib" // (3) корневой путь
}
});
// Модуль MOD/M/M.JS:
...
требуется ("a/jQuery");
// => конвертировать в: "../../lib/jquery"
// => Загрузка: mod/lib/jQuery (Специальное примечание 1)
...
// Модуль MOD/F.JS:
...
требуется ("a/jQuery");
// => конвертировать в: "../../lib/jquery"
// => Загрузка: lib/jQuery (Специальное примечание 2)
...
Правила разрешения пути в псевдониме
(В слое 2 сам путь может зависеть от настройки пути)
1. Правила псевдонима похожи на пути, а путь псевдонима также может использовать «переменные» в путях
2. Напоминание: попробуйте использовать [идентификация верхнего уровня], [корневой путь] и [абсолютный путь] в пути и псевдониме, и не используйте [относительную идентификацию], потому что модули разных глубин будут проанализированы в разные пути.
3.
Seajs.use Правила разрешения пути
[Относительная идентификация]: анализировать относительно текущей страницы.
Определите определение идентификатора модуля идентификатора модуля (1)
(В слое 3 путь может быть установлен по сравнению с псевдонимом или путями)
Вы можете использовать: [относительная идентификация], [идентификация верхнего уровня], [корневой путь]
Рекомендуется использовать [Идентификация верхнего уровня].
【Относительная идентификация】: анализ относительно текущей страницы
Скопируйте код следующим образом: // кодовый блок (2)
// config - также используйте конфигурацию в [кодовой блок (1)]
// модуль 1, нет двусмысленности, анализ корневого пути
определить ("/app/src/module/base", ..);
// Модуль 2, однозначная идентификация верхнего уровня, анализируется по сравнению с базовым базовым путем
DEFINE ("APP/SRC/MODULE/BASE", ..);
// Модуль 3, с двусмысленностью и относительной идентификацией, здесь относительно текущей страницы (см. HTML -страницу этого модуля)
// но даже если [поверхностно один и тот же «ID»] используется в другом месте, могут быть проанализированы разные модули
определить ("./ App/src/module/base", ..);
Правила разрешения идентификатора зависимостей модуля (2)
(В слое 3 путь может быть установлен по сравнению с псевдонимом или путями)
【Относительная идентификация】: Относительный базовый анализ базовых путей
Скопируйте код следующим образом: // кодовый блок (3)
// config - также используйте конфигурацию в [кодовой блок (1)]
// нет двусмысленности, относительно разрешения пути корневого пути
определить ("..", ["/app/src/module/base"], ..)
// Нет двусмысленности, идентификация верхнего уровня, относительно базового анализа базового пути
определить ("..", ["app/src/module/base"], ..)
// Существует двусмысленность относительно текущего модуля.
// Зависимость здесь, по -видимому, зависит от `Модуль 3` в [Кодовый блок (2)]
// но если текущий модуль и текущая страница не находятся в одном каталоге уровня, он не будет проанализирован в `Модуль 3`
определить ("..", ["./app/src/module/base"], ..)
Требовать правила разрешения идентификации для других модулей в модуле (3)
(В слое 3 путь может быть установлен по сравнению с псевдонимом или путями)
【Относительная идентификация】: Относительный базовый анализ базовых путей
Скопируйте код следующим образом: // кодовый блок (4)
// config - также используйте конфигурацию в [кодовой блок (1)]
определить ("..", [..], function (require) {
// нет двусмысленности, относительно разрешения пути корневого пути
require ("/app/src/module/base");
});
определить ("..", [..], function (require) {
// Нет двусмысленности, идентификация верхнего уровня, относительно базового анализа базового пути
require ("app/src/module/base");
});
определить ("..", [..], function (require) {
// Существует двусмысленность относительно текущего модуля.
// Зависимость здесь, по -видимому, зависит от `Модуль 3` в [Кодовый блок (2)]
// но если текущий модуль и текущая страница не находятся в одном каталоге уровня, он не будет проанализирован в `Модуль 3`
require ("./ app/src/module/base");
})
Специальное напоминание: в модуле есть три места, где необходимо записать идентификаторы, и нет необходимости использовать ту же строку, если она проанализирована в тот же модуль.
Суммировать:
1. Настройки путей и псевдоним только эквивалентны переменной.
2. Используйте [логотип верхнего уровня] как можно больше.
3. Если вы не можете использовать идентификатор [верхнего уровня], такой как промежуток каталогов, относительно большой, попытаться установить псевдоним или пути, чтобы найти его в каталоге через идентификатор [не связанного пути], а затем определить ID под этот идентификатор.