Может ли прогрессивное веб-приложение выполнять вычисления на стороне сервера, когда интернет отключен - PullRequest
1 голос
/ 29 мая 2019

Я новичок в PWA, а также искал ответ, но не смог.

Я знаю, что PWA может обрабатывать все транзакции базы данных, когда интернет отключен, с помощью indexdb.

Для согласованности мне нужно выполнить некоторые вычисления на стороне сервера, но мне интересно, могу ли я с помощью PWA обрабатывать эти вычисления локально или нет.

Любой совет будет оценен.

Ответы [ 2 ]

1 голос
/ 04 июня 2019

Вы можете избежать дублирования кода, если будете использовать node.js. В этом случае вы можете повторно использовать одну и ту же функцию на стороне сервера и клиента

Например: вы можете написать файл summ.js, например:

const sum = (a, b) => a + b;

module.exports = sum;

после этого вы можете импортировать его для использования в FE:

import sum from './sum'

console.log(sum(1,2));

или создайте файл node.js handleSum.js на BE:

const sum = require('./sum');

console.log(sum(1, 2));

и вы можете выполнить свой handle.js следующим образом: node handleSum.js

1 голос
/ 03 июня 2019

Я думаю, что с точки зрения проектирования архитектуры было бы лучше, если бы расчеты выполнялись либо на стороне сервера, либо на стороне клиента, но не одновременно. Для удобства обслуживания рассмотрим принцип DRY .

Так что в вашем случае рассмотрите необходимость расчетов как локально, так и на стороне сервера. Почему это должно быть на любой из этих сторон? Если сервер выполняет вычисления, а затем сохраняет результат, вы можете использовать принципы фоновой синхронизации, чтобы задержать отправку данных и рассчитать и сохранить результат при необходимости.

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

Если вам абсолютно необходимы вычисления как на клиенте, так и на сервере, рассмотрите архитектуру, в которой модуль, выполняющий вычисления, может использоваться как локально, так и на стороне сервера. Это возможно, когда и сервер, и клиент используют JavaScript, то есть NodeJS. Затем вы можете импортировать этот модуль на сервер и загрузить + кешировать модуль на стороне клиента.

...