Hogyan igényel jquery keresztül AMD géppel

szavazat
16

Hogyan szükség jquery AMD modul az én géppel modult. Például mondjuk könyvtár struktúrát script így néz ki:


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

Azt akarjuk, hogy a generált js fájlt module.ts megkövetelni jquery-1.8.2.js betölthető keresztül require.js.

Jelenleg már:


    import jQuery = modul ( 'jQuery') 

Ez azt eredményezi, neve „jquery” nem létezik a jelenlegi körét.

A kérdést 06/10/2012 21:40
a forrás felhasználó
Más nyelveken...                            


5 válasz

szavazat
26

A géppel 1.7+

Úgy néz ki, mint a hagyományos változik újra, ha az alábbi 0.9+ módszer is működik, de a ES6 jön a következő modul betöltése lehetne használni. (referencia: https://github.com/TypeStrong/atom-typescript/issues/237#issuecomment-90372105 )

import * as $ from "jquery";

és még a részleges is

import {extend} from "jquery"; 

(ez még mindig szükség van a jquery.d.ts, ha tsd telepítve - tsd install jquery)

telepíteni tsd: npm install tsd -g

A géppel 0.9+

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

//Do your stuff

És azt is, ha a jquery.d.ts nem határoznak meg külső modul hozzá az alábbi jquery.d.ts:

declare module "jquery" {
    export = $;
}
Válaszolt 01/09/2013 21:04
a forrás felhasználó

szavazat
8

Azt hiszem, sok a zavar körül ez annak köszönhető, hogy jQuery nem igazán úgy viselkedik, mint egy külső modul, ami gátolja a használata, amely importnyilatkozatot. A megoldás igen tiszta, egyszerű és elegáns ahhoz, hogy nem érzem magam, mint egy megoldást.

Írtam egy egyszerű példát használva RequireJS és jQuery géppel , amely a következőképpen működik ...

Te fogd típusú definíciók Határozottan beírt a RequireJS és jQuery.

Most már használhatja a nyers RequireJS statikus gépelési belsejében a géppel fájlt.

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

És akkor már csak be kell adni az egységes script tag az oldalon:

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

Előnyök a másik megoldás?

  1. Tudod frissíteni a jQuery és RequireJS függetlenül
  2. Nem kell támaszkodnia alátétet projekt frissül
  3. Nem kell kézzel betölteni jQuery (vagy bármi mást, ami nem „mint egy modul”, hogy van egy .d.tsfájl)
Válaszolt 26/01/2013 14:44
a forrás felhasználó

szavazat
6
  1. Vegyük az alap jquery.d.ts a TS forrásból ( TypeScriptFile )
  2. Mozgassa a () nyilatkozatok a JQueryStatic egy modul, mint ez:
  3. a kódban modul importálja a 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. Fordítsd a modult AMD (TSC --module amd my_code.ts)
  2. Használja requirejs komponálni az alkalmazás kliens oldalon az alábbi config rész:

requirejs.config({
   paths: {
      'jquery': 'js/jquery-1.8.2.min'
   }
});
Válaszolt 09/10/2012 15:59
a forrás felhasználó

szavazat
1

Először kap a ( szükség-jquery ) a hivatalos GitHub repo. Ezt követően a könyvtár fog kinézni:

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

Jelenleg a legegyszerűbb módja, hogy működjön együtt a jQuery és AMD modulok géppel írni a következő a main.ts:

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

És hívja azt a 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>

Remélem ez segít!

Válaszolt 06/10/2012 22:40
a forrás felhasználó

szavazat
0

Hivatkozhatunk külső modulok elérési út és fájlnév (mínusz a Js mellék) vagy csak a fájlnév, ha azok a globális. Az Ön esetében, meg kell tennie ezt a belsejében module.ts:

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

Ne feledje, hogy elkészül a --module AMDmivel alapértelmezés szerint kapsz kódot, amely a commonjs requirefunkciót.

Válaszolt 01/11/2012 01:37
a forrás felhasználó

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