api.use
ein Paket Zugang zu anderen Paketen gibt Symbole exportiert.
Zum Beispiel müssen Sie api.use("random")
(see how it's done in the accounts-base package), wenn Sie das Random
Symbol in einem Paketcode (see how the random
package.js
is api.export
ing Random
) verwenden möchten.
Allerdings meteor add
ing accounts-base
würde nicht Ihre gesamte Anwendung Zugriff auf die verwendeten Pakete geben (random
in diesem Fall). Wenn Ihre App random
benötigt, müssen Sie immer noch meteor add
.
api.imply
auf der anderen Seite, gibt die gesamte Anwendung den Zugriff auf das Paket exportiert Symbole.
Zum Beispiel see how accounts-google
is api.imply
ing accounts-base
.
accounts-base
is responsible for exporting the Accounts
symbol, wenn Sie meteor add accounts-google
, nicht nur accounts-base
auch in Ihren Anwendungsabhängigkeiten hinzugefügt wird, aber accounts-base
Symbole werden auch in Ihrer Anwendung, zur Verfügung gestellt speziell, weil es impliziert wurde.
accounts-base
ist sowohl Accounts
in seinem eigenen Code (api.use
) und ihre Abhängigkeiten Symbole für die gesamte App Export (api.imply
).
api.imply
kann verwendet werden, um "Schattenpakete" zu erstellen, die nur einige andere Pakete einbeziehen.
Zum Beispiel an einem gewissen Punkt MDG das showdown
Paket markdown
umbenannt, konnten sie nur haben meteor remove showdown && meteor add markdown
angegeben, aber es würde einige Aktionen auf den Endnutzer erforderlich ist.
Was sie stattdessen getan haben, ist das showdown
Paket und nur make it implying the new markdown
package.
laufen lassen, nahm ich 'api.export' immer zum vollständigen Projekt exportierte! Tatsächlich wird es zum Exportieren von Objekten verwendet, die dann auf verschiedene Arten importiert werden können: zum gesamten Projekt ("meteor add"), zum Umfang eines Pakets ("api.use") oder zu beiden ("api.imply"). Danke für die Einblicke! –
Dieses Konzept ist im Grunde das gleiche wie das Re-Exportieren in NPM-Paketen, zum Beispiel in ES6: 'export {Foo} von 'other-package' oder in CommonJS:' exports.Foo = require ('other-package') .Foo'. Meteor 1.3 unterstützt nun NPM-Module out-of-the-box, nur 'npm installieren' im Stammverzeichnis Ihrer App, dann' require() 'oder' import', was immer Sie in Ihrem App-Code benötigen (oder Pakete, die re-exportieren Dinge, und optional veröffentlichen sie auf NPM statt Atmosphäre). – trusktr
Vielleicht verstehe ich das falsch, aber ich verstehe den Unterschied zwischen dem Hinzufügen eines Pakets durch den Meteor nicht wirklich, was es explizit aufgelistet/definiert, und es einfach macht. Es scheint, als würden sie im Wesentlichen dasselbe tun. aber das api.imply bedeutet jetzt, dass Sie möglicherweise eine Reihe von Paketen zur Verfügung haben, die schwer zu finden/zu warten sind, weil sie in einer Vielzahl von Paketdefinitionen übersät sind. Habe ich recht, und wenn ja, was ist die Stärke darin über Meteor-Add? – dudewad