Πώς να απαιτούν jQuery μέσω της AMD στη γραφομηχανή

ψήφοι
16

Πώς μπορώ να απαιτούν την ενότητα AMD jQuery για τη μονάδα γραφομηχανή μου. Για παράδειγμα, ας υποθέσουμε ότι η δομή του καταλόγου για σενάρια μοιάζει με αυτό:


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

Θέλω το αρχείο που δημιουργείται JS από module.ts να απαιτούν jQuery-1.8.2.js να φορτωθούν μέσω require.js.

Αυτή τη στιγμή έχω:


    εισαγωγής jQuery = δομοστοιχείο ( 'jQuery') 

Αυτό έχει ως αποτέλεσμα το όνομα «jQuery» δεν υπάρχει στο τρέχον πεδίο.

Δημοσιεύθηκε 06/10/2012 στις 21:40
πηγή χρήστη
Σε άλλες γλώσσες...                            


5 απαντήσεις

ψήφοι
26

ΓΙΑ γραφομηχανή 1.7+

Μοιάζει με πρότυπο αλλάζει και πάλι, όπου η κάτω 0.9+ μέθοδος εξακολουθεί να λειτουργεί, αλλά με ES6 που έρχονται θα μπορούσε να χρησιμοποιηθεί η παρακάτω μονάδα φόρτωσης. (παραπομπή: https://github.com/TypeStrong/atom-typescript/issues/237#issuecomment-90372105 )

import * as $ from "jquery";

και ακόμη και η μερική αυτά

import {extend} from "jquery"; 

(αυτό εξακολουθεί να απαιτεί από τους jquery.d.ts, εάν είναι εγκατεστημένο TSD - tsd install jquery)

για την εγκατάσταση TSD: npm install tsd -g

ΓΙΑ γραφομηχανή 0.9+

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

//Do your stuff

Και επίσης, αν jquery.d.ts σας δεν καθορίζουν μια εξωτερική μονάδα, προσθέστε τα ακόλουθα στο jquery.d.ts:

declare module "jquery" {
    export = $;
}
Απαντήθηκε 01/09/2013 στις 21:04
πηγή χρήστη

ψήφοι
8

Νομίζω ότι πολλά από τη σύγχυση γύρω από αυτό οφείλεται στην jQuery δεν είναι πραγματικά ενεργεί σαν μια εξωτερική μονάδα, η οποία αναστέλλει τη χρήση μιας importδήλωσης. Η λύση είναι πολύ καθαρό, απλό και αρκετά για να μην αισθάνεται σαν ένα έργο-γύρω κομψό.

Έχω γράψει ένα απλό παράδειγμα χρησιμοποιώντας RequireJS και jQuery στη γραφομηχανή , η οποία λειτουργεί ως εξής ...

Μπορείτε να αρπάξει τους ορισμούς τύπου από Σίγουρα πληκτρολογούνται για RequireJS και jQuery.

Τώρα μπορείτε να χρησιμοποιήσετε πρώτες RequireJS με στατική πληκτρολόγηση στο εσωτερικό του αρχείου γραφομηχανή.

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

Και τότε το μόνο που χρειάζεται να προσθέσετε την ενιαία ετικέτα σεναρίου στη σελίδα σας:

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

Τα οφέλη σε σχέση με άλλες λύσεις;

  1. Μπορείτε να ενημερώσετε jQuery και RequireJS ανεξάρτητα
  2. Δεν χρειάζεται να βασίζονται σε ενημερώνονται έργο ροδέλα
  3. Δεν χρειάζεται να φορτώσετε με το χέρι jQuery (ή οτιδήποτε άλλο που δεν είναι «σαν μια ενότητα» ότι έχετε ένα .d.tsαρχείο για)
Απαντήθηκε 26/01/2013 στις 14:44
πηγή χρήστη

ψήφοι
6
  1. Πάρτε τις βασικές jquery.d.ts από την πηγή TS ( TypeScriptFile )
  2. Μετακίνηση των () δηλώσεις από την JQueryStatic σε μια λειτουργική μονάδα σαν αυτό:
  3. στην ενότητα κωδικό σας εισάγετε το 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. Η μεταγλώττιση μονάδα σας ως AMD (TSC --module τροπ my_code.ts)
  2. Χρησιμοποιήστε requirejs να συνθέσει την εφαρμογή σας από την πλευρά του πελάτη με την ακόλουθη ενότητα config:

requirejs.config({
   paths: {
      'jquery': 'js/jquery-1.8.2.min'
   }
});
Απαντήθηκε 09/10/2012 στις 15:59
πηγή χρήστη

ψήφοι
1

Πρώτα να πάρει το ( απαιτεί-jQuery ) από την επίσημη repo GitHub. Μετά από αυτό τον κατάλογο σας θα μοιάσει με:

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

Επί του παρόντος, ο ευκολότερος τρόπος για να συνεργαστεί με JQuery και AMD μονάδες σε γραφομηχανή είναι να γράψει τα εξής για τις main.ts:

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

Και κλήση από 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>

Η ελπίδα αυτό βοηθά!

Απαντήθηκε 06/10/2012 στις 22:40
πηγή χρήστη

ψήφοι
0

Μπορείτε αναφορά εξωτερικές μονάδες από τη διαδρομή και το όνομα αρχείου (μείον την επέκταση .js), ή απλά με το όνομα αρχείου και αν είναι παγκόσμια. Στην περίπτωσή σας, θα πρέπει να το κάνετε αυτό στο εσωτερικό της module.ts:

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

Θυμηθείτε να συντάξει με --module AMDδεδομένου ότι από προεπιλογή θα πάρετε κώδικα που χρησιμοποιεί το commonjs requireλειτουργία.

Απαντήθηκε 01/11/2012 στις 01:37
πηγή χρήστη

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