2012-01-03 50 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() { 

    }; 
});