Por exemplo:
import Component from '@/components/component'
No código que estou vendo, ele se comporta como ../
subir um nível no diretório em relação ao caminho do arquivo, mas eu gostaria de saber de maneira mais geral o que ele faz. Infelizmente, não consigo encontrar nenhuma documentação on-line devido ao problema de busca de símbolos.
javascript
Laser
fonte
fonte
Respostas:
O significado e a estrutura do identificador do módulo depende do carregador ou do empacotador de módulos . O carregador de módulo não faz parte da especificação do ECMAScript. Da perspectiva da linguagem JavaScript, o identificador do módulo é completamente opaco. Portanto, depende realmente de qual carregador / bundler de módulo você está usando.
Você provavelmente tem algo como babel-plugin-root-import na sua configuração webpack / babel.
Basicamente, isso significa que, desde a raiz do projeto , evita-se escrever coisas como
import Component from '../../../../components/component'
Editar: Uma razão pela qual existe é porque
import Component from 'components/component'
não faz isso, mas pesquisa nanode_modules
pastafonte
Sei que é antigo, mas eu não tinha muita certeza de como é definido, então procurei, vi um detalhe mais profundo e finalmente encontrei isso na minha configuração do Webpack gerada pelo Vue-CLI ( Vue.js )
portanto, é um alias que, neste caso, aponta para a raiz do diretório src gerado pelo vue-cli do projeto
fonte
'@*': ['client/src/*']
onde apenas a parte depois@
é tirada, para que eu possa fazerimport X from '@components/x
e ele tenta acessar corretamenteclient/src/components/x
? O TS + VSCode já permite isso nesta forma exata no tsconfig.json, no entanto erros do webpack comCan't resolve '@components/x' in 'client/src/'
. Quando eu a altero para a sua solução e os caminhos de importaçãoimport X from '@/components/x'
começam imediatamente a funcionar, portanto, os caminhos estão corretos.Para fazer a resposta de Ben mais abrangente:
Primeiro você precisa adicionar
babel-plugin-root-import
em suadevDependencies
napackage.json
(Se estiver usandoyarn
:yarn add babel-plugin-root-import --dev
). Em seguida,.babelrc
adicione as seguintes linhas naplugins
chave:Agora você pode usar
@
. Por exemplo:Ao invés de
import xx from '../../utils/somefile'
Você pode
import xx from '@/utils/somefile'
fonte
Como dito acima, esse recurso não está em JS por padrão. Você precisa usar um plugin babel para se divertir. E seu trabalho é simples. Ele permite que você especifique uma origem raiz padrão para seus arquivos JS e ajuda a mapear suas importações de arquivos para ele. Para iniciar a instalação através do npm:
ou
Crie um
.babelrc
na raiz do seu aplicativo e defina essas configurações ao seu gosto:Com a configuração acima, você pode simplesmente importar dessa fonte como:
sem fazer todas essas coisas divertidas:
Observe que você também pode alterar o símbolo para algo como
"~"
isso flutua no seu barco.fonte
Estou usando o código VS para criar aplicativos nativos de reação.
O que você precisa é:
crie um jsconfig.json no caminho raiz do seu aplicativo
no seu jsconfig.json, adicione o seguinte código:
{"compilerOptions": {"baseUrl": ".", "target": "ES6", "module": "commonjs", "caminhos": {"@ / ": ["src / "], "@components / ": [" src / components / "]," @ core / ": [" src / core / "]}}," excluir ": [" node_modules "]}
basicamente como "atalho": ["abs_path"]
fonte