Да, вы можете передать данные вместе с отправкой статической страницы, но для этого вам понадобится немного изменить подход.
Одним из распространенных способов является внедрение данных непосредственно в статическую HTML-страницу во время ее обработки на сервере, так что при загрузке страницы данные уже будут доступны на клиенте. Вот как это можно сделать:
1. Подготовьте данные на сервере.
2. Вставьте их в HTML-страницу через тег `<script>`.
Вот пример, как вы можете это реализовать:
```javascript
router.get("/exchange/tsx/:id", async (req, res) => {
const transactionId = req.params.id;
// Получите данные транзакции на основе ID
const transactionData = await getTransactionData(transactionId); // Ваш метод для получения данных
// Читаем статический HTML файл
const indexPath = path.join(staticFilesPath, "index.html");
fs.readFile(indexPath, 'utf8', (err, data) => {
if (err) {
res.status(500).send('Ошибка сервера');
return;
}
// Заменяем специальный маркер данными транзакции
const htmlWithData = data.replace(
'<script>window.__INITIAL_DATA__ = {};</script>',
`<script>window.__INITIAL_DATA__ = ${JSON.stringify(transactionData)};</script>`
);
// Отправляем модифицированную страницу пользователю
res.send(htmlWithData);
});
});
```
В этом примере:
1. Мы получаем данные транзакции с помощью `getTransactionData(transactionId)`.
2. Читаем файл `index.html`.
3. Используем `replace`, чтобы подставить данные в специальный тег `<script>`, который потом можно будет использовать в вашем Vue-приложении.
4. Отправляем модифицированную страницу.
На стороне клиента вы можете получить эти данные, загрузив их из `window.__INITIAL_DATA__`:
```javascript
const initialData = window.__INITIAL_DATA__ || {};
```
Эти данные затем могут быть использованы в вашем Vue-компоненте, и вы можете инициализировать состояние вашего приложения с их помощью.
Этот подход позволяет отправить данные вместе с HTML-кодом, избегая дополнительных запросов после загрузки страницы.