Как загрузить ckeditor через requirejs
У меня возникли проблемы с загрузкой ckeditor через requirejs (я пробовал преобразовать основной файл jc ckeditor в отдельные модули, но это просто заставило весь ад сломаться), и поэтому я теперь проверяю, это очень простой способ сделать это, что я пропустил.
Я знаю, что requirejs позволяет загружать нормальные js-скрипты, поэтому, возможно, просто загрузите файл ckeditor.js(не отредактированный, так что он все еще выполняет функцию IIFE/self-executing) - будет работать с requirejs или если вы используете requirejs для загрузки модулей, тогда весь проект должен быть основан на модуле?
Любая помощь была оценена.
С уважением,
Марк
Ответы
Ответ 1
Хорошо, кажется, я ответил на свой вопрос здесь.
Вместо того, чтобы пытаться сломать ckeditor в модули, я просто использовал RequireJs для загрузки script целиком.
require(['require', 'dependancy-A', 'dependancy-B', 'dependancy-C'], function(require, A, B, C){
// this = [object DOMWindow]
// CKEDITOR_BASEPATH is a global variable
this.CKEDITOR_BASEPATH = '/ckeditor/';
require(['/ckeditor/ckeditor'], function(){
// Code to create a new editor instance
});
});
`` `
Ответ 2
В качестве альтернативы вы можете создать прокладку RequireJS для загрузки вещей в правильном порядке и присвоить имена модулей RequireJS надлежащим образом файлам распространения CKEditor.
Это означает, что ваш модуль все еще заявляет, что он зависит от CKEditor, что намного приятнее, чем просто проявить магию.
require.config({
shim: {
'ckeditor-jquery':{
deps:['jquery','ckeditor-core']
}
},
paths: {
"jquery": '/javascript/jquery-1.7.1/jquery.min',
'ckeditor-core':'/javascript/ckeditor-3.6.4/ckeditor',
'ckeditor-jquery':'/javascript/ckeditor-3.6.4/adapters/jquery'
}
});
то в модуле вы можете зависеть от ckeditor-jquery (или ckeditor-core, если вам не нужна интеграция jQuery) и знаете, что он будет доступен:
require(
[
"jquery",
"ckeditor-jquery"
],
function( _jquery_ ) {
$('#editorContent2').ckeditor({
customConfig : '',
skin:'office2003'
});
}
}
Ответ 3
Другой способ сделать это:
var require = {
"shim": {
"path/foo/ckeditor/ckeditor": { "exports": "CKEDITOR" }
}
};
define(['moduleX', 'path/foo/ckeditor/ckeditor'], function (x, ckeditor) {
ckeditor.editor.prototype.fooFunc = function() {
};
});