Rangy поставляется в виде базовой библиотеки, rangy-core.js, а также набор дополнительных модулей, встроенных в отдельные файлы (например, rangy-serializer.js). Я пытаюсь найти лучший способ связать rangy-core и модули, которые мне нужны в виде одного файла.Как я могу связать Rangy вместе с дополнительными модулями?
фона:
Я создаю немного JavaScript, который загружается в 3-сайты сторонних производителей. Первое, что я делаю, когда загружаюсь, - это уменьшить мои дополнительные зависимости (jQuery, Ractive, Rangy). Количество сетевых запросов, которые я запускаю, вызывает беспокойство, поэтому я бы хотел не разделить каждую часть Rangy отдельно.
Что я пробовал:
1) погрузка вручную. В настоящее время я вставляю тег скрипта, чтобы вытащить rangy-core.js, а затем, когда он загружен, я вставляю теги, чтобы вытащить дополнительные модули. Это работает, но это приводит к 4 сетевым запросам. Что-то вроде этого:
function loadRangy() {
// loadScript inserts a script tag and then calls
// back to a function when the script is loaded
loadScript('//cdnjs.cloudflare.com/ajax/libs/rangy/1.3.0/rangy-core.min.js', function() {
loadScript('//cdnjs.cloudflare.com/ajax/libs/rangy/1.3.0/rangy-classapplier.min.js');
loadScript('//cdnjs.cloudflare.com/ajax/libs/rangy/1.3.0/rangy-textrange.min.js');
loadScript('//cdnjs.cloudflare.com/ajax/libs/rangy/1.3.0/rangy-serializer.min.js');
});
2) Проанализировать. Я попытался использовать Browserify, чтобы объединить эти 4 скрипта в один. Я, вероятно, делать это неправильно, но то, что я попытался просто:
browserify rangy-*.js -o rangy-combined.js
Это взрывает с:
Error: Cannot find module 'rangy' from '/Users/foo/bar/rangy/1.3.0'
at /usr/local/lib/node_modules/browserify/node_modules/resolve/lib/async.js:46:17
at process (/usr/local/lib/node_modules/browserify/node_modules/resolve/lib/async.js:173:43)
at ondir (/usr/local/lib/node_modules/browserify/node_modules/resolve/lib/async.js:188:17)
at load (/usr/local/lib/node_modules/browserify/node_modules/resolve/lib/async.js:69:43)
at onex (/usr/local/lib/node_modules/browserify/node_modules/resolve/lib/async.js:92:31)
at /usr/local/lib/node_modules/browserify/node_modules/resolve/lib/async.js:22:47
at Object.oncomplete (fs.js:107:15)
Да, это сработает. Дополнительные модули могут быть в любом порядке. –
Отлично, спасибо за подтверждение. И спасибо за библиотеку! – Ghazgkull