Jak požadovat jQuery pomocí AMD na psacím stroji

hlasů
16

Jak mohu požadovat, aby jQuery AMD modul pro mé strojopisem modulu. Například řekněme, že adresářová struktura pro skripty vypadá takto:


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

Chci vygenerovaný soubor js z module.ts požadovat jQuery-1.8.2.js načíst přes require.js.

V současné době mám:


    import jquery = modul ( 'jquery') 

To má za následek názvem „jQuery“ neexistuje ve stávajícím rozsahu.

Položena 06/10/2012 v 21:40
zdroj uživatelem
V jiných jazycích...                            


5 odpovědí

hlasů
26

FOR strojopisem 1.7+

Vypadá to, že norma je opět mění, kde se pod 0.9+ metoda stále funguje, ale s ES6 příchod by mohly být použity následující modul zatížení. (reference: https://github.com/TypeStrong/atom-typescript/issues/237#issuecomment-90372105 )

import * as $ from "jquery";

a dokonce i ty dílčí

import {extend} from "jquery"; 

(to stále vyžadují, aby jquery.d.ts, pokud je nainstalován TSD - tsd install jquery)

nainstalovat TSD: npm install tsd -g

FOR strojopisem 0.9+

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

//Do your stuff

A také, pokud vaše jquery.d.ts nedefinují externí modul, přidejte následující jquery.d.ts:

declare module "jquery" {
    export = $;
}
Odpovězeno 01/09/2013 v 21:04
zdroj uživatelem

hlasů
8

Myslím, že hodně zmatku okolo je to způsobeno jQuery opravdu chová jako externí modul, který inhibuje Použití importprohlášení. Řešení je poměrně čistý, jednoduchý a dost se mi obejití elegantní.

Napsal jsem si jednoduchý příklad použití RequireJS a jQuery na stroji , který pracuje takto ...

Urvat definice typu z Rozhodně napsaný pro RequireJS a jQuery.

Nyní můžete používat syrové RequireJS statickou psaní uvnitř souboru strojopisem.

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.');
    });
});

A pak stačí jen přidat jednu tag script na svou stránku:

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

Výhody oproti jiným řešením?

  1. Můžete aktualizovat jQuery a RequireJS nezávisle
  2. Nemusíte se spoléhat na podložku projekt aktualizuje
  3. Nemáte ručně načíst jQuery (nebo cokoli jiného, co není „jako modul“, že máte .d.tssoubor)
Odpovězeno 26/01/2013 v 14:44
zdroj uživatelem

hlasů
6
  1. Vezměte základní jquery.d.ts ze zdroje TS ( TypeScriptFile )
  2. Přesunout () prohlášení z JQueryStatic do modulu, jako je tento:
  3. v modulu kódu importovat 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. Sestavit svůj modul AMD (TSC --module amd my_code.ts)
  2. Použijte requirejs psát aplikace na straně klienta s následující sekci config:

requirejs.config({
   paths: {
      'jquery': 'js/jquery-1.8.2.min'
   }
});
Odpovězeno 09/10/2012 v 15:59
zdroj uživatelem

hlasů
1

Za prvé získat ( vyžaduje-jQuery ) od oficiálního GitHub repo. Poté, co tento adresář bude vypadat následovně:

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

V současné době je nejjednodušší způsob, jak pracovat s jQuery a AMD modulů na strojopis psát následující na main.ts:

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

A volání z vašeho 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>

Snad to pomůže!

Odpovězeno 06/10/2012 v 22:40
zdroj uživatelem

hlasů
0

Odkazovat externích modulů dle cestu a název souboru (mínus JS rozšíření), nebo jen podle názvu souboru v případě, že jsou globální. Ve vašem případě byste měli udělat uvnitř module.ts:

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

Nezapomeňte kompilovat --module AMD, protože ve výchozím nastavení dostanete kód, který používá commonjs requirefunkci.

Odpovězeno 01/11/2012 v 01:37
zdroj uživatelem

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