Na przykład:
import Component from '@/components/component'
W kodzie, na który patrzę, zachowuje się jak ../
przejście o jeden poziom w górę w katalogu w stosunku do ścieżki pliku, ale chciałbym wiedzieć bardziej ogólnie, co robi. Niestety nie mogę znaleźć żadnej dokumentacji online z powodu problemu z wyszukiwaniem symboli.
javascript
Laser
źródło
źródło
Odpowiedzi:
Znaczenie i struktura identyfikatora modułu zależy od programu ładującego moduł lub bundlera modułów . Moduł ładujący moduł nie jest częścią specyfikacji ECMAScript. Z punktu widzenia języka JavaScript identyfikator modułu jest całkowicie nieprzejrzysty. Więc to naprawdę zależy od tego, jakiego modułu ładującego / pakującego używasz.
Najprawdopodobniej masz coś takiego jak babel-plugin-root-import w konfiguracji webpacka / babel.
Zasadniczo oznacza to od korzenia projektu … pozwala uniknąć konieczności pisania takich rzeczy
import Component from '../../../../components/component'
Edycja: Jednym z powodów, dla których istnieje, jest to, że
import Component from 'components/component'
nie robi tego, ale zamiast tego przeszukujenode_modules
folderźródło
Wiem, że jest stary, ale nie byłem do końca pewien, jak jest zdefiniowany, więc poszukałem go, przyszedłem, wykopałem trochę głębiej i ostatecznie znalazłem to w mojej konfiguracji Webpack wygenerowanej przez Vue-CLI ( Vue.js )
więc jest to alias, który w tym przypadku wskazuje na katalog główny projektu src wygenerowany przez vue-cli
źródło
'@*': ['client/src/*']
gdzie tylko część po@
zrobieniu tak, że mogę to zrobićimport X from '@components/x
i to właściwie próbuje uzyskać dostępclient/src/components/x
? TS + VSCode pozwala już w tej dokładnej formie w tsconfig.json, jednak błędy webpacka zCan't resolve '@components/x' in 'client/src/'
. Kiedy zmienię to na twoje rozwiązanie i ścieżki importu doimport X from '@/components/x'
niego natychmiast zaczynają działać, więc poza tym ścieżki są poprawne.Aby odpowiedzieć Benowi bardziej wyczerpująca:
Najpierw trzeba dodać
babel-plugin-root-import
w swoimdevDependencies
INpackage.json
(W przypadku korzystaniayarn
:yarn add babel-plugin-root-import --dev
). Następnie.babelrc
dodaj następujące wiersze doplugins
klucza:Teraz możesz użyć
@
. Na przykład:Zamiast
import xx from '../../utils/somefile'
Możesz
import xx from '@/utils/somefile'
źródło
Jak wspomniano powyżej, ta funkcja nie jest domyślnie dostępna w JS. Aby się nim cieszyć, musisz użyć wtyczki babel. A jego zadanie jest proste. Umożliwia określenie domyślnego źródła głównego dla plików JS i pomaga w mapowaniu do niego importowanych plików. Aby rozpocząć, zainstaluj za pośrednictwem npm:
lub
Utwórz
.babelrc
w katalogu głównym swojej aplikacji i skonfiguruj te ustawienia według własnego uznania:Dzięki powyższej konfiguracji możesz po prostu zaimportować z tego źródła, na przykład:
bez robienia tych wszystkich fajnych rzeczy:
Zwróć uwagę, że możesz również zmienić symbol na dowolny, podobny do
"~"
tego, że pływa twoją łodzią.źródło
Używam kodu VS do tworzenia natywnych aplikacji reagujących.
Potrzebujesz:
utwórz plik jsconfig.json w ścieżce głównej aplikacji
w pliku jsconfig.json dodaj następujący kod:
{"compilerOptions": {"baseUrl": ".", "target": "ES6", "module": "commonjs", "path": {"@ / ": ["src / "], "@components / ": [" src / components / "]," @ core / ": [" src / core / "]}}," exclude ": [" node_modules "]}
zasadniczo jak „shortcut”: [„abs_path”]
źródło