2012-01-03 34 views
12

Tôi đang gặp sự cố khi cố gắng tải ckeditor qua requirejs (Tôi đã thử chuyển đổi tệp jk chính của jkeditor thành các mô-đun riêng lẻ nhưng điều đó vừa khiến tất cả địa ngục bị ngắt) và vì vậy tôi bây giờ kiểm tra để xem nếu có một cách rất đơn giản để làm điều này mà tôi đã bỏ lỡ.Làm thế nào để tải ckeditor thông qua requirejs

Tôi biết requirejs cho phép bạn tải các tập lệnh js bình thường để có thể tải tệp ckeditor.js (chưa chỉnh sửa, do đó, nó vẫn là một hàm IIFE/tự thực hiện) - sẽ hoạt động với requirejs hoặc nếu bạn sử dụng requirejs để tải các mô-đun, toàn bộ dự án có cần phải dựa trên mô-đun không?

Bất kỳ trợ giúp nào được đánh giá cao.

Trân trọng, Đánh dấu

Trả lời

-2

OK, có vẻ như tôi đã trả lời câu hỏi của riêng mình tại đây.

Thay vì cố gắng ngắt ckeditor thành các mô-đun, tôi chỉ sử dụng RequireJ để tải toàn bộ tập lệnh.

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

phương pháp này không liệt kê ckeditor như một dependancy của mô-đun, và không sử dụng RequireJS để tải ckeditor hoặc, thay vì rơi xuống trở lại (một cặp) JavaScript thẻ để tải CkEditor. Điều này có nghĩa CKEditor có thể không được nạp vào thời điểm mô-đun này chạy. –

26

Ngoài ra, bạn có thể tạo một shim RequireJS để tải những thứ theo đúng thứ tự, và bí danh tên mô-đun RequireJS thích hợp để các tập tin phân phối ckeditor.

Điều này có nghĩa là mô-đun của bạn vẫn tuyên bố nó phụ thuộc vào CKEditor, điều này đẹp hơn rất nhiều so với việc nó chỉ hiển thị bằng phép thuật.

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

sau đó trong một module bạn có thể phụ thuộc vào ckeditor-jquery (hoặc ckeditor-core cho rằng vấn đề, nếu bạn không cần sự tích hợp jQuery) và biết nó sẽ có sẵn:

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

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

Cảm ơn, điều này đã làm việc hoàn hảo. Tôi biết câu trả lời sẽ là để bôi nhọ nó, nhưng tôi đã quá lười biếng để nghĩ ra cách để làm điều đó đúng cách. Rất may, tôi không phải làm vậy. –

+0

vẫn không hoạt động đối với tôi ... Tôi gặp lỗi khi nói đường dẫn phụ thuộc sai. bất kỳ thông tin hữu ích nào khác mà các bạn có thể cho tôi? cảm ơn – w3jimmy

+0

@Tom Chiverton, làm cách nào để tải css? –

1

một cách khác để làm điều đó:

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

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

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

    }; 
}); 
Các vấn đề liên quan