2012-01-03 96 views
12

我遇到了试图通过requirejs加载ckeditor的问题(我已经尝试将主ckeditor js文件转换为单独的模块,但这只是导致所有地狱打破疏松),所以我现在检查是否有一种非常简单的方法来做到这一点,我错过了。我知道requirejs允许你加载正常的js脚本,所以也许只是加载ckeditor.js文件(未编辑,所以它仍然是一个IIFE /自我执行的函数) - 这将工作与requirejs或如果你是使用requirejs加载模块,整个项目是否需要基于模块?如何通过requirejs加载ckeditor

任何帮助表示赞赏。

亲切的问候, 马克

回答

-2

OK,看来我在这里回答了我的问题。

而不是试图将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 
    }); 

}); 

```

+7

这种方法不会列出的CKEditor作为模块的扶养,并且不使用RequireJS要么加载CKEditor的,而不是回落到(一对)的JavaScript代码加载CkEditor。这意味着CKEditor可能不会在该模块运行时加载。 – 2012-08-10 12:09:51

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的核心对于这个问题,如果你不需要jQuery的整合),并知道这将是可供选择:

require(
[ 
    "jquery", 
    "ckeditor-jquery" 
], 
function(_jquery_) { 

    $('#editorContent2').ckeditor({ 
     customConfig : '', 
     skin:'office2003' 
    }); 
} 
} 
+0

谢谢,这工作完美。我知道答案就是要补充它,但我懒得想出如何正确地做到这一点。谢天谢地,我没必要。 – 2013-07-31 19:16:02

+0

仍然不适合我...我得到错误,说依赖关系路径是错误的。任何其他有用的信息,你们可以给我?谢谢 – w3jimmy 2013-12-12 23:42:43

+0

@Tom Chiverton,你如何获得CSS加载? – 2014-03-22 22:25:53

1

另一种方式来做到这一点:

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

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

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

    }; 
});