#javascript #vue.js #vuejs2
#javascript #vue.js #vuejs2
Вопрос:
Я хочу импортировать несколько компонентов Vuejs в устаревший проект.
В настоящее время я включил следующий скрипт в заголовок моего веб-сайта:
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js">
и файл компонента (я хотел бы разделить каждый компонент в другом файле)
<script type="module" src="comp1.js"></script>
<script type="module" src="comp2.js"></script>
Это работает, но я хочу иметь один JS-файл, который будет импортировать все остальные компоненты, чтобы я мог указать на него в своем HTML в один JS-файл.
Есть идеи?
Комментарии:
1. Добавьте пакет, т.Е. webpack, другого способа нет.
2. @Slim Я попытался «добавить» проект vue js в свою устаревшую кодовую базу, но он работает как SPA в пределах одного тега —
<div id=app></div>
. Мне нужно использовать компоненты внутри проекта vue.3. Я понял ваш случай, и вам не нужно использовать vue-cli для настройки. Просто установите webpack и импортируйте все свои файлы в один файл с помощью
import
илиrequire.context
из webpack. Используйте webpack для компиляции их в один файл, на который должны быть ссылки в html.
Ответ №1:
Создайте папку для вашего пакета — frontend-dev
например.
$ cd frontend-dev
$ npm init
добавьте следующие зависимости
"devDependencies": {
"@babel/core": "^7.2.2",
"@babel/preset-env": "^7.3.1",
"babel-loader": "^8.0.5",
"webpack": "^4.29.3",
"webpack-cli": "^3.2.3"
}
$ npm install
Создайте webpack.config.js
со следующими минимальными конфигурациями:
let path = require('path');
module.exports = {
output: {
path: p('../public'), // where to create bundles files
publicPath: '/public/', // public path to the created files
},
module: {
rules: [
{
test: /.js$/,
exclude: /node_modules/,
use: {
loader: "babel-loader",
options: {
presets: ['@babel/preset-env']
}
}
},
]
},
};
/**
* Path.resolve alias curried with current directory (__dirname)
* as first parameter
*/
function p(){
return path.resolve(__dirname, ...arguments)
}
В frontend-dev
папке create src
и index.js
в ней:
// index.js
import '../../comp1.js'
import '../../comp2.js'
Добавьте "build": "webpack"
команду в раздел скрипты package.json
и запускайте npm run build
, чтобы увидеть вас bundled.js файл в указанном общедоступном каталоге.
Вы можете использовать require.context
для импорта всех файлов в каталог, см. webpack docs .
Комментарии:
1. Спасибо, в чем преимущество использования babel / webpack.config.js здесь? Мне удалось создать приложение, используя «сборку npx» без конфигурационного файла webpack.
2. Ну, webpack — это просто пример сборщика пакетов, который знает, как обращаться с импортом. Вы можете использовать тот, который вам больше всего нравится 🙂