Por ejemplo:
import Component from '@/components/component'
En el código que estoy viendo, se comporta como ../
subir un nivel en el directorio relativo a la ruta del archivo, pero me gustaría saber de manera más general qué hace. Lamentablemente, no puedo encontrar ninguna documentación en línea debido al problema de búsqueda de símbolos.
javascript
Láser
fuente
fuente
Respuestas:
El significado y la estructura del identificador del módulo dependen del cargador del módulo o del paquete del módulo . El cargador de módulos no forma parte de la especificación ECMAScript. Desde la perspectiva del lenguaje JavaScript, el identificador del módulo es completamente opaco. Por lo tanto, realmente depende de qué cargador / paquete de módulos esté utilizando.
Lo más probable es que tenga algo como babel-plugin-root-import en su configuración webpack / babel.
Básicamente significa desde la raíz del proyecto ... evita tener que escribir cosas como
import Component from '../../../../components/component'
Editar: Una razón por la que existe es porque
import Component from 'components/component'
no hace eso, sino que busca en lanode_modules
carpetafuente
Sé que es viejo, pero no estaba exactamente seguro de cómo se define, así que lo busqué, lo encontré, cavé un poco más y finalmente encontré esto en mi configuración de Webpack generada por Vue-CLI ( Vue.js )
entonces es un alias que en este caso apunta a la raíz del directorio src generado por vue-cli del proyecto
fuente
'@*': ['client/src/*']
donde sólo la parte después@
se toma, por lo que puedo hacerimport X from '@components/x
y trata correctamente para el accesoclient/src/components/x
? TS + VSCode ya lo permite en esta forma exacta en tsconfig.json, sin embargo, los errores de paquete web conCan't resolve '@components/x' in 'client/src/'
. Cuando lo cambio a su solución y las rutas de importaciónimport X from '@/components/x'
comienzan a funcionar de inmediato, por lo que las rutas son correctas.Para que la respuesta de Ben sea más completa:
En primer lugar es necesario agregar
babel-plugin-root-import
en sudevDependencies
enpackage.json
(Si se utilizayarn
:yarn add babel-plugin-root-import --dev
). Luego, en su.babelrc
agregar las siguientes líneas enplugins
clave:Ahora puedes usar
@
. Por ejemplo:En vez de
import xx from '../../utils/somefile'
Usted puede
import xx from '@/utils/somefile'
fuente
Como se dijo anteriormente, esta característica no está en JS por defecto. Tienes que usar un complemento de babel para disfrutarlo. Y su trabajo es simple. Le permite especificar una fuente raíz predeterminada para sus archivos JS y le ayuda a asignarle las importaciones de sus archivos. Para comenzar, instale a través de npm:
o
Cree un
.babelrc
en la raíz de su aplicación y configure estos ajustes a su gusto:Con la configuración anterior, simplemente puede importar desde esa fuente como:
sin hacer todas estas cosas funky:
Tenga en cuenta que también puede cambiar el símbolo a algo como
"~"
si flota su barco.fuente
Estoy usando el código VS para crear aplicaciones nativas de reacción.
Lo que necesitas es:
cree un jsconfig.json en la ruta raíz de su aplicación
En su jsconfig.json, agregue el siguiente código:
{"compilerOptions": {"baseUrl": ".", "target": "ES6", "module": "commonjs", "caminos": {"@ / ": ["src / "], "@components / ": [" src / components / "]," @ core / ": [" src / core / "]}}," exclude ": [" node_modules "]}
básicamente como "acceso directo": ["abs_path"]
fuente