2012-10-03 59 views
14

Parece que TypeScript tiene un buen sistema de módulos, sin embargo, ¿esto reemplaza la necesidad de algo como requirejs? En otras palabras, cuando "compila" un paquete de mecanografía, ¿maneja toda la resolución de dependencia por usted? ¡Ejemplos serían apreciados!Gestión de paquetes TypeScript

Respuesta

16

TypeScript no tiene un cargador de módulo de tiempo de ejecución. Deberá proporcionar un cargador de módulos para usar en tiempo de ejecución, p. requiere js. TypeScript admite la generación de código JavaScript compatible con commonJS (para scripts node.js) y cargadores AMD (por ejemplo, requireJS). Para especificar cuál usar pase en el modificador "--module" al compilador con "amd" o "commonjs".

Aquí es cómo se exporta un módulo a máquina de escribir:

export module depModule { 
    export class A { 
    } 
} 

y aquí está el código JavaScript generado con el interruptor de AMD --module:

define(["require", "exports"], function(require, exports) { 
    (function (depModule) { 
     var A = (function() { 
      function A() { } 
      return A; 
     })(); 
     depModule.A = A; 
    })(exports.depModule || (exports.depModule = {})); 
}) 
3

mecanografiado puede emitir código que va a trabajar con ambos cargadores de dependencia compatibles con AMD como requirejs o commonjs entornos como Node. Puede controlar esto con la opción --module para el compilador. El compilador en sí no maneja la resolución de dependencia en tiempo de ejecución, eso depende de usted para que funcione, pero intenta resolver las dependencias en tiempo de compilación para que pueda darle información de tipo.

Puede ver ejemplos de proyectos que usan módulos en el directorio de prueba en CodePlex, this one por ejemplo. El resultado de la compilación de estos proyectos de prueba son archivos .js que se podrán cargar con, por ejemplo, requirejs (si pasa --module amd) o Node (si pasa --module commonjs).

2

Si su aplicación estará compuesta únicamente por módulos/archivos de mecanografía, es posible no usar cargadores de módulos u otra administración de dependencias. Deberá incluir todas las dependencias con referencias de comentarios y usar la opción --out del compilador. Por ejemplo:

tsc --out compiled.js app.ts 

Esto pondrá en compiled.js el js generados para app.ts y todas sus dependencias, incluidas las dependencias de las dependencias. El archivo resultante se puede incluir directamente en el archivo html con la etiqueta de script. También puede ser minimizado. La carga del módulo en el tiempo de ejecución no es compatible