Требуется введение
TESSJS был основан Джеймсом Берком, который также является основателем спецификаций AMD.
Требуется, что вам позволит вам написать JavaScript иначе, чем обычно. Вы больше не будете использовать теги скрипта для введения файлов JS в HTML, и вам больше не нужно будет управлять зависимостями с помощью тегов сценариев.
Requirejs - очень маленькая структура загрузки модуля JavaScript, которая является одним из лучших реализатора спецификации AMD. Последняя версия requirejs составляет всего 14 тыс. После сжатия, которая очень легкая. Он также может работать в сочетании с другими структурами, и использование requirejs, несомненно, улучшит качество вашего фронтального кода.
Есть несколько моментов, которые стоит отметить при использовании requirejs для асинхронной загрузки модуля:
1. Два способа написать определение модуля
1. Функциональные определения, которые существуют в зависимости
Если у модуля есть зависимости: первый параметр - это массив имен зависимостей; Второй параметр является функцией. После того, как все зависимости модуля загружаются, функция будет вызвана для определения модуля, поэтому модуль должен вернуть объект, который определяет модуль. Отношение зависимостей вводится в функцию в качестве параметра, а список параметров соответствует списку имени зависимостей один за другим.
define (['a'], function (aj) {var hello = function () {aj.hello ('i am c.js');} return {hello: hello}});PS: Тип возвращаемого значения модуля не вынужден быть объектом, а возвращаемое значение любой функции разрешено.
2. Определение формата модуля CommonJS
Требуется: используется для введения методов, которые зависят от других модулей.
Экспорт: экспортирует объект, который экспортирует переменную модуля или метод.
Модуль: содержит информацию об этом модуле.
require.config ({baseurl: "", config: {'b': {size: 'large'}}, paths: {a: 'base/a', b: 'base/b', c: 'base/c'}}); define(function(require, exports, module) {var aJ = require("a");var hello = function(){aJ.hello('i am b.js');}var hello2 = function(){aJ.hello('i am b.js22');}exports.hello = hello;console.log("b.js: exports", экспорт); console.log ("b.js: module", module); console.log ("b.js: config", module.config ()); // нельзя использовать вместе, возврат будет перезаписать предыдущие экспорты/*return {hello: hello2}*/});PS: объект возврата и экспорт не могут быть использованы вместе, возврат будет перезаписать предыдущий экспорт.
Ниже приведена информация, напечатанная после вызова:
Экспорт: Видно, что экспорт является атрибутом модуля.
Модуль: он включает в себя псевдоним, URI, экспортный объект и метод информации конфигурации модуля.
Конфигурация: Нам часто нужно передать информацию о конфигурации в модуль. Эти конфигурации часто представляют собой информацию на уровне приложения и требуют средства для передачи их в модуль.
В requirejs он реализован на основе элемента конфигурации конфигурации reftjs.config ().
2. Остерегайтесь синглтонских переменных
Остерегайтесь переменных в синглтоне, потому что после того, как требуется один раз, последующее требование использует предыдущий кэш. Поэтому, когда переменная определена в модуле, если это требование изменено, другие требования останутся последовательными.
define (function () {var index = 0; var hello = function (msg) {console.log (msg);} var AddIndex = function () {index ++;} var getIndex = function () {return index;} return {hello: hello, AddIndex: AddIndex, getIndex: getIndex});Называется:
require (['a',], function (a) {require (['a'], function (a) {console.log (a.getindex ()); a.addindex (); a.addindex ();}); rete (['a'], function (a) {console.log (a.getindex ());});});});Вышеупомянутые напечатаны:
0
2
3. очистить кеш
Поскольку requirejs имеет функцию кэширования, но во время разработки мы не хотим, чтобы он кэш, поэтому мы можем установить Urlargs in retember.config.
Urlargs: requirejs добавляет дополнительные параметры запроса после URL -адреса при получении ресурса.
Пример:
Urlargs: "bust =" + (new Date ()). getTime ()
Это полезно в разработке, но не забудьте удалить его, прежде чем развернуть в среду сборки.
4. Загрузите модули из других пакетов
Требуется, что он поддерживает загрузку модулей из структуры пакета CommonJS, но требует дополнительной конфигурации.
Конфигурация пакета может указать следующие свойства для конкретного пакета:
1. Имя: имя пакета (для имени модуля/сопоставление префикса).
2. Местоположение: местоположение на диске. Положения относительно значений Baseurl в конфигурации, если они не содержат протоколов или начинаются с "/".
3. Main: после того, как примененный вызов требуется с «именем пакета», применяется модуль в пакете.
По умолчанию - «основной», если иное не установлено здесь.
Это значение относительно каталога пакетов.
пример:
main.js
require.config ({baseurl: "", Packages: [{name: "Student", место: "package-stu"}, {name: "Учитель", местоположение: "пакет-tea"}], urlargs: "bust =" + (new Date ()). gettime ()}); требуется (["Учительский/хранилище", учитель/чай "], функция (sto); Tea.Hello ();чай.js:
define (function (require, exports, module) {exports.hello = function () {console.log ('i - учитель.');}});stu.js:
определить (function (require, exports, module) {exports.name = 'cape';});Store.js:
определить (function (require, exports, module) {var stu = require ("Student/stu"); exports.hello = function () {console.log ('i am' + stu.name);}});Я чувствую, что есть две странные вещи в этом способе загрузки модулей из других пакетов (я не очень хорошо понимаю):
1. Если модули в других пакетах относятся к методу написания других модулей, повлияет ли пользователь метод написания модуля?
2. Main.js в других пакетах кажется бесполезным, и нет проблем без контента.
Приведенный выше контент - это детали потребностей, используемых редактором, и я надеюсь, что это будет полезно для всех!