api.use
dà un accesso pacchetto per altri pacchetti simboli esportati.
Per esempio è necessario api.use("random")
(see how it's done in the accounts-base package) se si desidera utilizzare il simbolo Random
in un codice di pacchetto (see how the random
package.js
is api.export
ing Random
).
Tuttavia, meteor add
ing accounts-base
non consentirebbe a tutta l'applicazione di accedere ai pacchetti utilizzati (random
in questo caso). Se la tua app ha bisogno di random
, dovrai comunque effettuare il meteor add
.
api.imply
invece, dà l'intera applicazione di accedere a tale pacchetto simboli esportati.
Ad esempio, see how accounts-google
is api.imply
ing accounts-base
.
accounts-base
is responsible for exporting the Accounts
symbol, quando meteor add accounts-google
, non solo accounts-base
è aggiunto anche nelle vostre dipendenze delle applicazioni, ma accounts-base
simboli sono anche resi disponibili nella vostra app, proprio perché era implicito.
accounts-base
è sia utilizzando Accounts
nel proprio codice (api.use
) ed esportare i suoi simboli dipendenze a tutta l'app (api.imply
).
api.imply
può essere utilizzato per creare "pacchetti shadow" che stanno semplicemente inserendo altri pacchetti.
Per esempio, ad un certo punto MDG rinominato il pacchetto showdown
a markdown
, potrebbero semplicemente hanno dichiarato di meteor remove showdown && meteor add markdown
, ma avrebbe richiesto azioni sugli utenti finali.
Quello che hanno invece è mantenere il pacchetto showdown
e solo make it implying the new markdown
package.
ho assunto' api.export' sempre esportato nel progetto completo! In realtà, è usato per esportare oggetti che possono poi essere importati in diversi modi: per l'intero progetto ('meteor add'), per l'ambito di un pacchetto (' api.use') o di entrambi ('api.imply'). Grazie per gli approfondimenti! –
Questo concetto è praticamente lo stesso della riesportazione nei pacchetti NPM, ad esempio in ES6: 'export {Foo} da 'other-package'' o in CommonJS:' exports.Foo = require (' other-package ') .Foo'. Meteor 1.3 supporta subito i moduli NPM, solo 'npm install' nella directory principale della tua app, quindi' require() 'o' importa' tutto ciò che ti serve nel codice dell'app (o scrivi pacchetti che riesportano cose, e facoltativamente li pubblicano su NPM anziché su Atmosphere). – trusktr
Forse sto fraintendendo questo, ma non capisco davvero la differenza tra la meteor aggiunta di un pacchetto, che lo rende esplicitamente elencato/definito, e api.implicandolo. Sembra che essenzialmente facciano la stessa cosa, ma api.imply significa che ora hai potenzialmente a disposizione un sacco di pacchetti difficili da trovare/mantenere perché sono disseminati in un assortimento di definizioni di pacchetti. Ho ragione su questo, e se sì, qual è la forza in esso sopra aggiungere meteor? – dudewad