Подтвердить что ты не робот

Как загрузить ckeditor через requirejs

У меня возникли проблемы с загрузкой ckeditor через requirejs (я пробовал преобразовать основной файл jc ckeditor в отдельные модули, но это просто заставило весь ад сломаться), и поэтому я теперь проверяю, это очень простой способ сделать это, что я пропустил.

Я знаю, что requirejs позволяет загружать нормальные js-скрипты, поэтому, возможно, просто загрузите файл ckeditor.js(не отредактированный, так что он все еще выполняет функцию IIFE/self-executing) - будет работать с requirejs или если вы используете requirejs для загрузки модулей, тогда весь проект должен быть основан на модуле?

Любая помощь была оценена.

С уважением, Марк

4b9b3361

Ответ 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() {

     };
});