Подтвердить что ты не робот

Импорт ES6 с использованием ('@') входа в путь в проекте vue.js с использованием Webpack

Я начинаю новый проект vue.js, поэтому я использовал инструмент vue-cli для создания нового проекта webpack (т.е. vue init webpack).

Когда я проходил через сгенерированные файлы, я заметил следующие импорт в файле src/router/index.js:

import Vue from 'vue'
import Router from 'vue-router'
import Hello from '@/components/Hello' // <- this one is what my qusestion is about

Vue.use(Router)

export default new Router({
    routes: [
        {
            path: '/',
            name: 'Hello',
            component: Hello
        }
    ]
})

Я не видел знак (@) на пути раньше. Я подозреваю, что он допускает относительные пути (может быть?), Но я хотел убедиться, что понимаю, что это действительно так.

Я пробовал искать в Интернете, но не смог найти объяснение (проблема, потому что поиск "при знаке" или использование символа буква @ не помогает в качестве критериев поиска).

Что делает @ на этом пути (ссылка на документацию будет фантастической), и это ли это вещь? Что такое веб-пакет? Что такое vue-loader?

UPDATE

Спасибо Феликс Клинг за то, что он указал мне на другой вопрос о дублировании stackoverflow на этот вопрос.

В то время как комментарий к другому сообщению stackoverflow не является точным ответом на этот вопрос (это не был плагин babel в моем случае), он указал мне в правильном направлении, чтобы найти, что это было.

В лесах, которые vue-cli запускают для вас, часть базовой конфигурации webpack устанавливает псевдоним для файлов .vue:

Псевдоним в проекте

Это имеет смысл как в том, что он дает вам относительный путь из файла src, и устраняет требование .vue в конце пути импорта (который вам обычно нужен).

Спасибо за помощь!

4b9b3361

Ответ 1

Это делается с помощью параметра конфигурации resolve.alias Webpack и не относится к Vue.

В шаблоне Vue Webpack Webpack настроен для замены @/ на путь src:

  resolve: {
    extensions: ['.js', '.vue', '.json'],
    alias: {
      ...
      '@': resolve('src'),
    }
  },
  ...

Ответ 2

Также имейте в виду, что вы также можете создавать переменные в tsconfig:

"paths": {
  "@components": ["src/components"],
  "@scss": ["src/styles/scss"],
  "@img": ["src/assests/images"],
  "@": ["src"],
}

Это может быть использовано в целях соглашения об именовании:

import { componentHeader } from '@components/header';

Ответ 3

Я заканчиваю со следующей комбинацией

import HelloWorld from '@/components/HelloWorld'
=>
import HelloWorld from 'src/components/HelloWorld'

IDE перестанет предупреждать URI, но это вызывает недопустимый URI при компиляции в "build\webpack.base.conf.js"

resolve: {
  extensions: ['.js', '.vue', '.json'],
  alias: {
    'src': resolve('src'),
  }
},

Ответ 4

разрешения ( 'SRC') не работает для меня но path.resolve( 'ЦСИ') работает

resolve: {
    alias: {
      'vue$': 'vue/dist/vue.esm.js',
      '@': path.resolve('src')
    },
    extensions: ['*', '.js', '.vue', '.json']
  },