javascript node.js amd intern node-modules

javascript - ¿Qué hace el carácter "!" En los nombres de los módulos de nodejs?



node.js amd (2)

Comencé a usar la biblioteca interna para escribir pruebas funcionales en js, y me di cuenta de que no podía entender esta sintaxis:

var assert = require(''intern/chai!assert''); var registerSuite = require(''intern!object'');

¿Cuál es el propósito de la ! ¿Carácter en el argumento del método require() ?


Respuesta corta

Identifica un recurso que forma parte de un complemento.
La estructura del identificador es: [plugin]![resource] .

Respuesta larga

En la documentation , puede encontrar que:

Intern se construye sobre un cargador estándar de AMD, lo que significa que sus módulos también se escriben normalmente en el formato de módulo AMD.

Por eso y cómo se inyecta realmente la función require , por lo que está claro que no está utilizando el módulo require se proporciona junto con Node.JS.

Afirma también que:

[Formato AMD] Permite que los módulos y otros activos se resuelvan de forma asincrónica o condicional mediante la escritura de complementos simples del cargador

Si sigue el link proporciona con la documentación cuando cita los cargadores, encontrará que:

Los complementos del cargador amplían una implementación de AMD al permitir la carga de recursos que no son dependencias tradicionales de JavaScript.

En particular, puede encontrar que una dependencia tiene la siguiente forma:

[Plugin Module ID]![resource ID]

No hace falta decir que la implementación predeterminada del cargador que se obtiene al utilizar intern se adhiere al estándar mencionado anteriormente.

Dicho esto, se deduce que, si tenemos en cuenta:

intern/chai!assert

Puede leerlo como inter/chai como módulo de plugin y assert como un recurso realmente requerido.

El propósito de la ! El carácter en el argumento del método require() es satisfacer los requisitos de la sintaxis utilizada para identificar un recurso que es parte de un complemento.


explunit esta respuesta para usted extraída de esta pregunta similar y muy bien explicada por explunit :

La sintaxis del signo de exclamación está reservada para los complementos. Normalmente, habrá algo más después del signo de exclamación que indica el recurso que cargaría el complemento, por ejemplo, text! MyTemplate.html, ¡pero en el caso de domReady! el complemento existe solo como una forma de esperar hasta que DOM se cargue antes de invocar la función de devolución de llamada, por lo que nada debe seguir el signo de exclamación.