在Document
/ Window
框架中访问ES6
和Aurelia
个对象的最佳方式是什么?我确实尝试直接在我的Aurelia代码中访问window
它确实有用,但这是正确的方式还是有Aurelia / ES6这样做的方式?
具体来说,我想访问window.localStorage和window.sessionStorage等属性。我刚刚开始使用Aurelia和ES6,所以虽然我想遵循这些标准,但我对如何做到这一点还是一个小小的菜鸟。
如下所示:
constructor() {
this.user = JSON.parse(window.sessionStorage.user || window.localStorage.user);
}
该代码实际上在Aurelia中有效,但以这种方式编写是否正确?
答案 0 :(得分:11)
在使用Web API时,这是在Aurelia中执行此操作的正确方法,因此您可以使用当前的代码。
然而,当使用DOM时,您当然也可以使用标准DOM API,但Aurelia有一个平台抽象层(PAL docs),它将抽象应用程序所在的任何平台,类似于DOM API。
例如,document.getElementById
的等价物将是
import {inject} from 'aurelia-framework'
import {DOM} from 'aurelia-pal'
@inject(DOM)
export class Home {
constructor(DOM) {
this.DOM = DOM
}
attached() {
let element = this.DOM.getElementById('someId')
}
}
不幸的是,PAL目前并没有做太多事情,但将来计划允许你使用日常的DOM API调用,即使你的应用程序可能没有正常运行"正常& #34; DOM。
不要忘记的一件非常重要的事情是原生的DOM& Web API非常强大,使用本机实现没有任何问题。其他框架倾向于围绕Web API构建自己的实现,这些Web API是针对其框架而定制的。结构和最佳实践,但这不一定是最好的事情。