Beispielsweise:
import Component from '@/components/component'
In dem Code, den ich mir anschaue, verhält es sich so, als ../
würde man im Verzeichnis relativ zum Dateipfad eine Ebene nach oben gehen, aber ich möchte allgemeiner wissen, was es tut. Leider kann ich aufgrund des Problems bei der Symbolsuche keine Dokumentation online finden.
javascript
Laser
quelle
quelle
Antworten:
Die Bedeutung und Struktur der Modulkennung hängt vom Modullader oder Modulbündler ab . Der Modullader ist nicht Teil der ECMAScript-Spezifikation. Aus Sicht der JavaScript-Sprache ist die Modulkennung vollständig undurchsichtig. Es hängt also wirklich davon ab, welchen Modullader / Bundler Sie verwenden.
Sie haben höchstwahrscheinlich so etwas wie Babel-Plugin-Root-Import in Ihrer Webpack / Babel-Konfiguration.
Im Grunde bedeutet es von der Wurzel des Projekts .. es vermeidet, Dinge wie schreiben zu müssen
import Component from '../../../../components/component'
Bearbeiten: Ein Grund dafür ist, dass
import Component from 'components/component'
dies nicht der Fall ist, sondern imnode_modules
Ordner gesucht wirdquelle
Ich weiß, dass es alt ist, aber ich war mir nicht ganz sicher, wie es definiert ist, also habe ich es nachgeschlagen, bin vorbeigekommen, habe etwas tiefer gegraben und es schließlich in meiner von Vue-CLI ( Vue.js ) generierten Webpack-Konfiguration gefunden
Es handelt sich also um einen Alias, der in diesem Fall auf das Stammverzeichnis des von vue-cli generierten src-Verzeichnisses des Projekts verweist
quelle
'@*': ['client/src/*']
Wo wird nur der Teil danach@
genommen, damit ich es tun kannimport X from '@components/x
und es richtig versucht, darauf zuzugreifenclient/src/components/x
? TS + VSCode erlaubt das bereits in genau dieser Form in tsconfig.json, jedoch Webpack-Fehler mitCan't resolve '@components/x' in 'client/src/'
. Wenn ich es in Ihre Lösung ändere und die Importpfade dazuimport X from '@/components/x'
sofort funktionieren, sind die Pfade ansonsten korrekt.Um Bens Antwort umfassender zu machen:
Zuerst müssen Sie hinzufügen
babel-plugin-root-import
in demdevDependencies
inpackage.json
(Bei Verwendung vonyarn
:yarn add babel-plugin-root-import --dev
). Fügen Sie dann in Ihrem Schlüssel.babelrc
die folgenden Zeilen einplugins
:Jetzt können Sie verwenden
@
. Beispielsweise:Anstatt
import xx from '../../utils/somefile'
Du kannst
import xx from '@/utils/somefile'
quelle
Wie oben erwähnt, ist diese Funktion standardmäßig nicht in JS enthalten. Sie müssen ein Babel-Plugin verwenden, um es zu genießen. Und seine Arbeit ist einfach. Sie können eine Standardstammquelle für Ihre JS-Dateien angeben und Ihre Dateiimporte darauf zuordnen. So starten Sie die Installation über npm:
oder
Erstellen Sie eine
.babelrc
im Stammverzeichnis Ihrer App und konfigurieren Sie diese Einstellungen nach Ihrem Geschmack:Mit der obigen Konfiguration können Sie einfach wie folgt aus dieser Quelle importieren:
ohne all diese funky Sachen zu machen:
Beachten Sie, dass Sie das Symbol auch in etwas ändern können, das
"~"
Ihr Boot schwimmt.quelle
Ich verwende VS-Code, um native Apps zu erstellen.
Was Sie brauchen ist:
Erstellen Sie eine jsconfig.json unter dem Stammpfad Ihrer App
Fügen Sie in Ihrer jsconfig.json den folgenden Code hinzu:
{"compilerOptions": {"baseUrl": ".", "target": "ES6", "module": "commonjs", "path": {"@ / ": ["src / "], "@components / ": [" src / components / "]," @ core / ": [" src / core / "]}}," exclude ": [" node_modules "]}
im Grunde wie "Verknüpfung": ["abs_path"]
quelle