Мое требование — предоставить небольшое приложение 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? Или проблема конкретно в моей реализации?
Цель состоит в том, чтобы они были идентичными. Однако пользователи требуют, чтобы они могли использовать функцию браузера «Сохранить страницу как» и чтобы полученный файл был идентичен тому, который им будет предоставлять приложение.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


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