2012-01-03 16 views
12

Tengo problemas al intentar cargar a través de CKEditor RequireJS (He intentado convertir el archivo de CKEditor principal js en módulos individuales, sino que simplemente ha causado todo el infierno a punto de desatarse) y por lo que estoy ahora comprobando si hay una manera muy simple de hacer esto que me he perdido.Cómo cargar a través de CKEditor RequireJS

Sé que requirejs le permite cargar scripts js normales, así que tal vez solo cargue el archivo ckeditor.js (sin editar, por lo que sigue siendo una función IIFE/autoejecutable): ¿funcionaría con requirejs o si Usando requirejs para cargar módulos, ¿todo el proyecto necesita ser basado en módulos?

Cualquier ayuda apreciada.

Saludos cordiales, Marcos

Respuesta

-2

OK, parece que respondió a mi propia pregunta aquí.

En lugar de tratar de romper CKEditor en módulos que acabo de utilizar RequireJS para cargar la secuencia de comandos en su totalidad.

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

Este método no muestra CKEditor como una dependencia del módulo, y no utiliza RequireJS para cargar CKEditor o bien, en lugar de caer a (un par de) etiquetas JavaScript para cargar CkEditor. Esto significa que es posible que CKEditor no esté cargado cuando se ejecuta este módulo. –

26

Como alternativa, puede crear una cuña RequireJS para cargar las cosas en el orden correcto, y alias RequireJS nombres propios módulos a los archivos de distribución de CKEditor.

Esto significa que su módulo todavía declara que depende de CKEditor, lo cual es mucho mejor que tener que acaba de aparecer por arte de magia.

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

entonces en un módulo que puede depender CKEditor-jQuery (o CKEditor núcleos para el caso, si usted no necesita la integración de jQuery) y saber que va a estar disponible:

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

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

Gracias, esto funcionó a la perfección. Sabía que la respuesta iba a ser calzarlo, pero era demasiado flojo para pensar cómo hacerlo correctamente. Afortunadamente, no tuve que hacerlo. –

+0

aún no funciona para mí ... me sale error que indica las dependencias caminos están mal. ¿Alguna otra información útil que ustedes me puedan dar? gracias – w3jimmy

+0

@Tom Chiverton, ¿cómo se carga el CSS? –

1

Otra manera de hacerlo:

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

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

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

    }; 
}); 
Cuestiones relacionadas