Получите полифил с коническим градиентом для работы с Vue

Я пытаюсь реализовать этот полифилл в моем проекте Vue.js:

<script src = "https://cdnjs.cloudflare.com/ajax/libs/prefixfree/1.0.7/prefixfree.min.js"></script>
<script src = "conic-gradient.js"></script>

Я использую Vue, созданный с помощью Vue-CLI, с однофайловыми компонентами и веб-пакетом.

Описание кажется таким простым, добавьте два тега скрипта и бац, оно работает.

Я добавил в свой проект NPM-пакет conic-gradient (yarn add conic-gradient), который извлекает как сценарий conic-gradient, так и требуемый prefixfree.

Затем я попробовал выполнить сухой импорт в своем main.js:

import 'conic-gradient'

также как и

import conic-gradient from 'conic-gradient'

а затем позвонив:

Vue.use(conic-gradient

Я также пробовал сухой импорт в моем компоненте (Dome.vue)

Однако, похоже, ничто не отображает конический градиент. Что я делаю неправильно?

Поведение ключевого слова "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) для оценки ваших знаний,...
1
0
281
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Конический градиент не является плагином Vue, поэтому вы не можете просто сделать с ним Vue.use. Ни модуля ES6 (извините за позднее уведомление), поэтому вы не можете использовать import ConicGradient..., автор опубликовал неудачный пакет npm.

Поскольку вы сказали, что ваш проект был создан с помощью Vue-CLI, вы должны найти файл src/main.js и поместить свой import ConicGradient from 'conic-gradient' в его верх.

И вы можете начать использовать это как

import ConicGradient from 'conic-gradient'

new Vue({
    data: {
        gradient: new ConicGradient({
            stops: 'gold 40%, #f06 0',
            repeating: true,
            size: 400
       });
    }

})

Перейдите к своему index.html и вставьте его непосредственно перед закрывающим тегом вашего тела </body> (загрузите этот файл и вместо этого предоставьте локальную копию)

<script src = "https://cdn.rawgit.com/LeaVerou/conic-gradient/609dc5f4/conic-gradient.js"></script>

Теперь в ваших компонентах Vue вы можете использовать new window.ConicGradient({ ... })

Рабочий фрагмент

Vue.config.productionTip = Vue.config.devtools = false

new Vue({
  el: '#app',
  data: {
    gradient: new window.ConicGradient({
      stops: 'red, yellow, lime, aqua, blue, magenta, red',
      size: 100
    })
  }
})
<script src = "https://cdn.rawgit.com/LeaVerou/conic-gradient/609dc5f4/conic-gradient.js"></script>
<script src = "https://unpkg.com/[email protected]"></script>

<div id = "app">
  <img :src = "gradient.png" style = "border-radius: 50%" />
</div>

Итак, мне нужно выполнить импорт в main.js, а также в каждом компоненте, в котором я его использую? Я не хочу заливать свой файл main.js разными градиентами, которые я использую во всем приложении.

irongollem 01.05.2018 16:01

Вы просто импортируете его в компоненты, которые вам нужны. Если вы используете его не в файле main.js, а в другом компоненте, не импортируйте его в файл main.js. Хотя вы обнаружите, что «импортируете» его в различные компоненты, здесь отвечает webpack, и код не будет «повторяться». Импортировано много раз, но загрузился только один раз. Так работают модули ES6!

Frondor 01.05.2018 16:04

если я это сделаю: импортировать ConicGradient из 'conic-gradient' экспорт по умолчанию {имя: 'купол', data () {return {gradient: new ConicGradient ({stop: 'gold 40%, # f06 0'})}}} I получить сообщение об ошибке [Vue warn]: Error in data (): "TypeError: __WEBPACK_IMPORTED_MODULE_0_conic_gradient ___ default.a не является конструктором"

irongollem 01.05.2018 16:08

Моя беда, я не понимал, что пакет не был готов для es6. Он опубликован в реестре npm, но вы не можете импортировать его как модуль es6. Я только что отредактировал свой ответ другим подходом

Frondor 01.05.2018 16:38

Не решает проблему в css, но теперь работает в js, что тоже работает

irongollem 02.05.2018 11:24

Это происходит из-за того, что элементы монтируются после того, как библиотека вводит "полифил css", как мне кажется. Вам также необходимо знать, что вы используете webpack в своем проекте, созданном с помощью cli. Так что вам лучше поискать решение webpack для css.

Frondor 02.05.2018 23:27

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