如何通过requirejs加载ckeditor

时间:2012-01-03 13:44:16

标签: javascript ckeditor requirejs

我在尝试通过requirejs加载ckeditor时遇到问题(我已经尝试将主要的ckeditor js文件转换为单独的模块,但这只会导致所有地狱崩溃)所以我现在正在检查是否存在这是一个非常简单的方法,我错过了。

我知道requirejs允许你加载普通的js脚本,所以可能只是加载ckeditor.js文件(未经编辑,所以它仍然是一个IIFE /自执行功能) - 可以使用requirejs或者你正在使用requirejs用于加载模块,那么整个项目是否需要基于模块?

任何帮助表示感谢。

亲切的问候, 标记

3 个答案:

答案 0 :(得分:26)

或者,您可以创建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'
    });
}
}

答案 1 :(得分:2)

另一种方法:

var require = {
    "shim": {
        "path/foo/ckeditor/ckeditor": { "exports": "CKEDITOR" }
    }
};

define(['moduleX', 'path/foo/ckeditor/ckeditor'], function (x, ckeditor) { 

     ckeditor.editor.prototype.fooFunc = function() {

     };
});

答案 2 :(得分:-2)

好的,好像我在这里回答了我自己的问题。

我没有尝试将ckeditor分解为模块,而是使用RequireJs将脚本加载到其中。

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
    });

});

```