Cómo requerir jQuery a través de AMD a máquina de escribir

votos
16

¿Cómo requiero el módulo AMD jQuery para mi módulo de mecanografiado. Por ejemplo, digamos estructura de directorios para las escrituras se ve así:


    jquery-1.8.2.js
    jquery.d.ts
    module.ts
    require.js

Quiero que el archivo generado a partir de JS module.ts para requerir jquery-1.8.2.js ser cargado a través de require.js.

Actualmente tengo:


    importación jquery = módulo ( 'jquery') 

Esto da como resultado el nombre de jQuery no existe en el ámbito actual.

Publicado el 06/10/2012 a las 21:40
fuente por usuario
En otros idiomas...                            


5 respuestas

votos
26

PARA mecanografiado 1.7+

Se ve como norma está cambiando de nuevo, en el que el método siguiente 0.9+ todavía funciona, pero con ES6 viene la carga siguiente módulo podría utilizarse. (Referencia: https://github.com/TypeStrong/atom-typescript/issues/237#issuecomment-90372105 )

import * as $ from "jquery";

e incluso las parciales

import {extend} from "jquery"; 

(esto todavía requiere los jquery.d.ts, si se ha instalado TSD - tsd install jquery)

instalar TSD: npm install tsd -g

PARA mecanografiado 0.9+

/// <reference path="../../typings/jquery/jquery.d.ts" />
import $ = require('jquery');

//Do your stuff

Y también, si sus jquery.d.ts no definen un módulo externo, añada lo siguiente a jquery.d.ts:

declare module "jquery" {
    export = $;
}
Respondida el 01/09/2013 a las 21:04
fuente por usuario

votos
8

Creo que mucha de la confusión en torno a esto se debe a jQuery realmente no actuar como un módulo externo, lo cual inhibe el uso de un importcomunicado. La solución es bastante limpio, simple y suficiente para no sentirse como una solución alternativa elegante.

He escrito un ejemplo sencillo de uso de RequireJS y jQuery a máquina , que funciona de la siguiente manera ...

Que agarrar las definiciones de tipo de duda con tipo de RequireJS y jQuery.

Ahora puede utilizar RequireJS primas con tipos estáticos dentro del fichero de transcripción.

app.ts

///<reference path="require.d.ts" />
///<reference path="jquery.d.ts" />

require(['jquery'], function ($) {
    $(document).ready(() => {
        alert('Your code executes after jQuery has been loaded.');
    });
});

Y a continuación, sólo tiene que añadir la etiqueta script sola a su página:

<script data-main="app" src="require.js"></script>

Ventajas sobre otras soluciones?

  1. Puede actualizar jQuery y RequireJS independiente
  2. Usted no tiene que depender de proyecto de cuña que se actualiza
  3. Usted no tiene que cargar manualmente jQuery (o cualquier otra cosa que no es "como un módulo" que tiene un .d.tsarchivo para)
Respondida el 26/01/2013 a las 14:44
fuente por usuario

votos
6
  1. Tomar las jquery.d.ts básicas de la fuente TS ( TypeScriptFile )
  2. Mover los () declaraciones de la JQueryStatic en un módulo de la siguiente manera:
  3. en su módulo de código importar el jQuery:

import $ = module("jquery");

declare module "jquery" {
   export function (selector: string, context?: any): JQuery;
   export function (element: Element): JQuery;
   export function (object: { }): JQuery;
   export function (elementArray: Element[]): JQuery;
   export function (object: JQuery): JQuery;
   export function (func: Function): JQuery;
   export function (): JQuery;
}
  1. Compilar el módulo como AMD (AMD TSC --module my_code.ts)
  2. Utilice RequireJS para componer su aplicación en el lado del cliente con la sección de configuración siguiente:

requirejs.config({
   paths: {
      'jquery': 'js/jquery-1.8.2.min'
   }
});
Respondida el 09/10/2012 a las 15:59
fuente por usuario

votos
1

En primer lugar obtener la ( require-jquery ) desde el repositorio oficial de GitHub. Después de esto su directorio se verá así:

require-jquery.js
jquery.d.ts
main.ts
main.js
test.html

Actualmente, la forma más fácil de trabajar con módulos de jQuery y AMD en texto mecanografiado es escribir lo siguiente en los main.ts:

///<reference path="jquery.d.ts" />
declare var require;
require(["jquery"], function($:JQueryStatic) {
    $('body').append('<b>Hello JQuery AMD!</b>');
});

Y llamarlo desde su test.html:

<!DOCTYPE html>
<html>
    <head>
        <script data-main="main" src="require-jquery.js"></script>
    </head>
    <body>
        <h1>TypeScript JQuery AMD test</h1>
    </body>
</html>

¡Espero que esto ayude!

Respondida el 06/10/2012 a las 22:40
fuente por usuario

votos
0

Se hace referencia a módulos externos de ruta y el nombre (menos la extensión .js), o simplemente por nombre de archivo si son globales. En su caso, usted debe hacer esto dentro de module.ts:

import jquery = module('./jquery-1.8.2');

Recuerde que debe compilar con --module AMDya que por defecto obtendrá código que utiliza el CommonJS requirefunción.

Respondida el 01/11/2012 a las 01:37
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more