Включение пакетов npm в приложение Vue.js

У меня есть приложение vue, которое так структурировано (автоматически создано vue init webpack myProject:

index.html
components/
-main.js
-App.vue

Я хочу иметь возможность включать пакеты npm. Например, https://github.com/ACollectionOfAtoms/atomic-bohr-model. Следуя инструкциям, я запустил npm install atomic-bohr-model --save и включил

<script type = "text/javascript" src = "./node_modules/atomic-bohr-model/dist/atomicBohrModel.min.js" charset = "utf-8"></script>

в моем файле index.html. Чтобы использовать пакет, согласно странице github, мне нужно запустить некоторый javascript,

var atomicConfig = {
  containerId: "#bohr-model-container",
  numElectrons: 88,
  idNumber: 1
}

var myAtom = new Atom(atomicConfig)

который запускается с соответствующим элементом: <div id = "bohr-model-container"></div>. Итак, я сделал следующее внутри одного компонента, который отображается в App.vue:

<template>
    <div id = "bohr-model-container" style = "width: 200px; height: 200px"></div>
</template>

<script>
var atomicConfig = {
    containerId: '#bohr-model-container',
    numElectrons: 88,
    idNumber: 1,
};

var myAtom = new Atom(atomicConfig);

export default {
    name: 'myComponent'
};
</script>

Проблема в том, что когда я пытаюсь запустить приложение, я получаю пустую белую страницу. Строка var myAtom = new Atom(atomicConfig); нарушает работу приложения. Почему это происходит? Я предполагаю, что Atom не определен в сценарии моего компонента. Могу ли я импортировать что-нибудь в первой строке?

Почему это не работает так же, как пример приложения, предоставленный для пакета npm, который работает только с использованием простых файлов html и js? Простите за неопытность, я новичок в фреймворках javascript. Заранее спасибо.

просто импортируйте его вместо того, чтобы включать его, используя <script src>

NoobTW 20.08.2018 00:50

Как мне его импортировать? Я привык к строке импорта, представленной в инструкциях github, извините, что спросил

agreis1 20.08.2018 00:52
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
6
2
10 029
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как правило, чтобы импортировать модули npm в проект Webpack, npm-install пакет, а затем import или require модуль в вашем коде. Например:

import _ from 'lodash';
// OR
const _ = require('lodash');

демонстрация

В вашем случае atomic-bohr-model только объявляет window.Atom и не экспортирует никаких символов, поэтому вам нужно импортировать его следующим образом:

import 'atomic-bohr-model/dist/atomicBohrModel.min.js'; // sets window.Atom
// OR
require('atomic-bohr-model/dist/atomicBohrModel.min.js'); // sets window.Atom

И тогда ваш компонент будет использовать window.Atomвнутри ловушки жизненного цикла mounted, после чего шаблон будет отрисован и #bohr-model-container станет доступным:

<template>
  <div id = "bohr-model-container" style = "width: 200px; height: 200px"></div>
</template>

<script>
import 'atomic-bohr-model/dist/atomicBohrModel.min.js';

export default {
  mounted() {
    new window.Atom({
      containerId: '#bohr-model-container',
      numElectrons: 88,
      // ...
    });
  }
};
</script>

демонстрация

Другие вопросы по теме