2015-08-20 4 views
0

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) 

ответ

1

Я не уверен, если это рекомендуемый/лучший подход, но я я обнаружил, что могу просто конкатенировать файлы, и все, кажется, работает (до тех пор, пока я сначала ставил rangy-core). Используя Grunt, это выглядит так:

/*global module:false*/ 
module.exports = function(grunt) { 

    // Project configuration. 
    grunt.initConfig({ 
     pkg: grunt.file.readJSON('package.json'), 

     concat: { 
      rangy: { 
       src: [ '../rangy/1.3.0/uncompressed/rangy-core.js', '../rangy/1.3.0/uncompressed/*.js' ], 
       dest: ‘../lib/rangy-combined.js’ 
      } 
     } 
    }); 

    grunt.loadNpmTasks('grunt-contrib-concat'); 

    grunt.registerTask('rangy', [ 'concat:rangy' ]); 

}; 
+0

Да, это сработает. Дополнительные модули могут быть в любом порядке. –

+0

Отлично, спасибо за подтверждение. И спасибо за библиотеку! – Ghazgkull

Смежные вопросы