如何访问Window& Aurelia中的文档对象?

时间:2016-02-22 05:58:38

标签: javascript ecmascript-6 aurelia

Document / Window框架中访问ES6Aurelia个对象的最佳方式是什么?我确实尝试直接在我的Aurelia代码中访问window它确实有用,但这是正确的方式还是有Aurelia / ES6这样做的方式?

具体来说,我想访问window.localStoragewindow.sessionStorage等属性。我刚刚开始使用Aurelia和ES6,所以虽然我想遵循这些标准,但我对如何做到这一点还是一个小小的菜鸟。

如下所示:

constructor() {
    this.user = JSON.parse(window.sessionStorage.user || window.localStorage.user);
}

该代码实际上在Aurelia中有效,但以这种方式编写是否正确?

1 个答案:

答案 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是针对其框架而定制的。结构和最佳实践,但这不一定是最好的事情。