标题可能不是直截了当的,但我想在此详细解释我的疑问。
目标是找出以角度Js
存储和共享数据的最佳方式第一种方法
将数据存储为窗口对象,如
window.myVar ='someValue'
并访问应用程序中的任何位置
第二种方法是制作服务并共享数据
@Injectable()
export class commonDataService{
constructor() { }
dataService = {};
setItem(id, val) {
this.dataService[id] = val;
}
getItem(id) {
return (this.dataService[id]);
}
deleteItem(id) {
if (this.dataService[id]) {
delete (this.dataService[id]);
}
}
deleteAll() {
// delete all properties of this item
for (const property in this.dataService) {
if (this.dataService[property]) {
delete this.dataService[property];
}
}
}
}
现在注入此服务并使用get和set Across application
继续获取和更新数据在这两种方法中哪一个更好,或者在角度或javascript中有任何其他方法。
当然数据安全明智的服务作为任何人都可以看到的窗口对象更好
这两种方法的优点和缺点是什么? 1.记忆消耗明智 2.任何内存泄漏都不合适 3.随着应用程序的增长,任何其他性能影响
答案 0 :(得分:1)
集中服务将是最佳选择。事实上,对于大规模应用程序,我强烈推荐使用可以帮助维护应用程序状态的Store
的ngRx。或者,对于更简单的用例,您可以实现利用Subjects和Observables的集中服务。
例如。
@Injectable()
export class CentralService {
masterData$: BehaviorSubject<any[]> = new BehaviorSubject<any[]>([1,2,3]);
updateData(newData: number[]): void {
this.masterData$.next(newData);
}
}