Especificación CommonJS y resumen de especificación AMD / CMD

Reimpreso: https://www.jianshu.com/p/7c7fc199b7aa

  • El módulo de carga estándar CommonJS es síncrono, y solo después de completar la carga se pueden realizar las siguientes operaciones.
  • La especificación AMD es para cargar módulos de forma asíncrona, lo que permite especificar funciones de devolución de llamada.
    Dado que Node.js se usa principalmente para la programación del servidor, los archivos de módulo generalmente ya están en el disco duro local, por lo que se carga más rápido y no necesita considerar el método de carga asíncrono, por lo que la especificación CommonJS es más aplicable. Sin embargo, si se trata de un entorno de navegador, para cargar el módulo desde el lado del servidor, debe usar el modo asíncrono, por lo que el lado del navegador generalmente adopta la especificación AMD.

CommonJSEn la especificación module, exportsyrequire

  • Cada archivo es un módulo y tiene su propio alcance. Dentro de cada módulo, la modulevariable representa el módulo actual y es un objeto, y sus exportsatributos (es decir, module.exportsson interfaces externas).
  • module.exportsEl atributo indica la interfaz de salida actual del módulo, y otros archivos que cargan el módulo realmente leen las module.exportsvariables.
  • Para mayor comodidad, Nodeproporcione una exportsvariable para que apunte cada módulo module.exports.
dejar exportaciones = module.exports;
  • requireEl comando se usa para cargar el archivo del módulo.

Ejemplos de uso:

  // name.js exports.name 
  = function () { return '李婷婷'}; // export 
  // getName.js 
  let getName = require ('name'); // import

Nota: No puede exportsapuntar directamente la variable a un valor, porque esto es equivalente a cortar la exportsconexión con module.exports:

exportaciones = función (x) {console.log (x)}

Si la interfaz externa de un módulo es un valor único, la exportssalida no se puede usar , solo la module.exportssalida.

Especificaciones de AMD / CMD

  • AMDEs RequireJSla salida estandarizada de la definición del módulo en el proceso de promoción.
    CMDEs SeaJSla salida estandarizada de la definición del módulo en el proceso de promoción.
  • Para los módulos dependientes, se AMDejecuta por adelantado y con CMDretraso. Pero RequireJSdesde el 2.0principio, que se puede cambiar para realizar retardo (dependiendo de la redacción manejado de manera diferente). CMDRespetado as lazy as possible.
  • CMDRespeta la dependencia del más cercano y AMDrespeta la dependencia del frente.
// CMD 
define ( función (require, exportaciones, módulo) {    
   let a = require ('./ a' ); 
   a.doSomething (); 
   · 
   let b = require ('./ b'); // depend Puede escribir    
   b.doSomething (); 
   ... 
}) 

// AMD recomienda 
definir (['./ a', './b'], función (a, b) { 
   // la dependencia debe comenzar Simplemente escriba     
  a.doSomething ()    
  ... 
  b.doSomething ()    
  ... 
})

Aunque AMDtambién admite CMDla redacción y también admite el paso requirecomo una dependencia, RequireJSel autor establece de manera predeterminada la redacción anterior, que también es la redacción de definición de módulo predeterminada en el documento oficial.

  • AMDEl APIvalor predeterminado es una distinción estricta entre usos múltiples y CMDuna APIresponsabilidad única.
    Por ejemplo AMD, lo requireglobal requirey lo local se requirellaman require. CMDAquí, no hay global require, pero de acuerdo con la integridad del sistema de módulos, se proporciona seajs.usepara realizar el inicio de carga del sistema de módulos. CMDAquí, cada uno APIes simple y puro.

Extensión
En la actualidad, no se han implementado todos los motores import, nodey se utiliza babelsoporte en él ES6. Es solo ES6para transcodificar para ES5volver a ejecutar, y la importsintaxis se transcodificará require. Es por eso que se usa cuando se exporta el módulo, module.exportsy importaún funciona cuando se importa el módulo , porque en esencia, se importtranscodificará requirepara ejecutarse.

¿Cuál es la diferencia entre AMD y CMD en la
especificación CommonJS del documento de referencia
?
Nodo no entiende requerir e importar, serás miserable

Supongo que te gusta

Origin www.cnblogs.com/web-record/p/12705808.html
Recomendado
Clasificación