Pregunta

Entonces, en las extensiones de Firefox, se alienta a los objetos de su extensión a vivir en subbjetos como com.contoso.myExtension. De esa manera, no ha puesto ningún objeto en el espacio de nombres global y las extensiones generalmente se mantienen fuera del cabello del otro. (Al menos en la ventana del navegador común.xul)

Pero por lo que he entendido sobre Módulos de código JavaScript (JSMS), es que mientras el módulo en sí funciona en un espacio de nombres separado, los símbolos que exporta terminarán en el espacio de nombres global de cualquier código que lo importe. Además, es imposible que una extensión sea "agradable" y solo intente construir subobjetos; Esos símbolos exportados simplemente pasarán las variables globales que ya existían. Además, no puede exportar un símbolo como com.contoso.myExtension. Es solo una variable global simple.

Entonces, ¿cuál es el protocolo para jugar bien cuando se usa JSMS? ¿Hacer nombres de variables muy largos y espero que no chocen?

¿Fue útil?

Solución

En primer lugar, no he visto una verdadera estándar para cómo manejar esto. Pero definitivamente podemos hacer mucho mejor que solo nombres de variables largos ...

Tiene razón sobre los módulos de código JavaScript que viven en un espacio de nombres (así que para hablar), sin embargo, cuando los importa, no tiene que importarlos al espacio de nombres global. Si miras el Componentes.utils.import Documentación, ves que puedes importar a un alcance específico. Eso es, No tiene que contaminar el espacio de nombres global.

Puedes recoger tus módulos en un myExtension espacio de nombres.

var myExtension = {};
Components.utils.import("resource://.../module.jsm", myExtension);

Y envolver esto dentro de una función de auto ejecución no permite que las variables se filtren en el espacio de nombres global, ni siquiera myExtension!

(function(){
    var myExtension = {};
    Components.utils.import("resource://.../module.jsm", myExtension);
})();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top