Если я правильно понимаю, о чем вы пытаетесь спросить, после того, как Angular упакован, вам не нужно ничего для его запуска, поэтому вы можете связать его и использовать как статический веб-сайт в таких местах, как Amazon Web Services S3ведра ("без сервера"). Вы можете читать из файлов JSON в автономной среде, если они являются локальными для проекта. Это может выглядеть примерно так:
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { IDataFile } from '../interfaces/data-file.interface';
@Injectable({
providedIn: 'root'
})
export class MyDataService {
static data: IDataFile;
constructor(private http: HttpClient) { }
load() {
const jsonFile = `assets/data/my-data.json`;
return new Promise<void>((resolve, reject) => {
this.http.get(jsonFile).toPromise().then((response: IDataFile) => {
MyDataService.data = <IDataFile>response;
resolve();
}).catch((response: any) => {
reject(`Could not load file '${jsonFile}': ${JSON.stringify(response)}`);
});
});
}
}
Затем вы можете загрузить свои данные в службу при запуске, добавив метод в ваш app.module.ts после импорта, а затем добавив свою службу в разделе провайдеров:
export function initializeApp(data: MyDataService ) {
return () => data.load();
}
...
providers: [
MyDataService ,
{
provide: APP_INITIALIZER,
useFactory: initializeApp,
deps: [MyDataService], multi: true
},
]
Затем вы можете использовать свой сервис в любом месте вашего приложения с MyDataService.data.somedata
.
Основным предостережением для всего этого является то, что, как я уже сказал, вы можете ПРОЧИТАТЬ из файла JSON, но вы не можете записать обратно, так что это не будут данные, которые вы можете обновить, кроме как в памяти (данные будут непостоянными и будут сброшены при перезагрузке). Вы можете бороться с этим до некоторой степени, если вы используете local sessionStorage или localStorage, или даже cookie-файлы, а затем перезаписать свои предварительно загруженные данные, если ваше локальное хранилище заполнено;но в этом случае не будет централизованного управления данными, поэтому это должен быть конкретный вариант использования.
Если вы хотите записывать файлы в файловой системе, я бы посмотрел на рабочий столОболочка приложения для вашего Angular-приложения, такого как Electron (https://electronjs.org/),, но это потребует установки для ваших пользователей.