Универсальный загружаемый HTML-файл, включаяchart.js, из приложения nuxt

Мое требование — предоставить небольшое приложение Nuxt, которое генерирует простой HTML-файл, включающий некоторые обзорные разделы услуг, предоставляемых клиентам компании, в которой я работаю. Конкретный вариант использования здесь заключается в том, что приложение предоставляет HTML-файл, который можно загрузить и снова открыть в любом браузере, онлайн или оффлайн, со 100% функциональностью.

Это работает с SSR и Nuxt, однако у меня возникли проблемы с использованиемchart.js.

Текущее состояние приложения: Супербазовое приложение Nuxt, созданное с помощью nuxi, трех компонентов Vue. Один из компонентов реализует chart.js, все это приводит к следующему:

Однако когда я сохраняю полученный файл (mhtml или html), часть диаграммы не отображается. Компонент Chart, по сути, заключается в следующем:

 methods: {
      renderChart() {
        const ctx = this.$refs.chartCanvas.getContext('2d');
  
        new Chart(ctx, {
          type: 'pie',
          data: {
            labels: ['green', 'red'],
            datasets: [{
              data: [this.green, this.red],
              backgroundColor: ['green', 'red']
            }]
          },
          options: {
            responsive: true,
            maintainAspectRatio: false
          }
        });
      }
    }
  }

который вызывается onMounted и отображается следующим образом:

<template>
    <div>
      <canvas ref = "chartCanvas"></canvas>
    </div>
 </template>
  

Я пробовал создавать приложение разными способами (статические и серверные), но это не помогло.

Является ли это проблемой, связанной с тем, что перехватчики жизненного цикла недоступны через SSR? Или проблема конкретно в моей реализации?

Уточните, создает ли ваше приложение те «загружаемые» HTML-документы, которые должны содержать все, или вы просто используете функцию «сохранить страницу как» в своем браузере? В вашем первоначальном описании звучит так, как будто это первое, но затем «Однако, когда я сохраняю полученный файл (mhtml или html)», скорее, предполагает, что это может быть второе ...?

CBroe 27.02.2024 11:51

Цель состоит в том, чтобы они были идентичными. Однако пользователи требуют, чтобы они могли использовать функцию браузера «Сохранить страницу как» и чтобы полученный файл был идентичен тому, который им будет предоставлять приложение.

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

Ответы 1

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

Более простой путь может состоять в том, чтобы экспортировать холст как datauri, а затем использовать строку буфера в качестве источника для кнопки загрузки. Таким образом, вы просто экспортируете график в формате PNG или аналогичного. Судя по всему, вы хотите создать графики на стороне сервера, а затем сделать их доступными для загрузки, и это лучший/наиболее очевидный способ добиться этого.

Да, это работает и очень просто реализовать, спасибо! Требуется пожертвовать некоторой интерактивностью, которую обеспечиваетchart.js, но, тем не менее, оно того стоит.

fesieg 27.02.2024 12:07

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