如何在Aurelia中访问Window&Document对象?

ghi*_*ing 5 javascript ecmascript-6 aurelia

在/ framework中访问DocumentWindow对象的最佳方法是什么?我确实尝试直接在我的Aurelia代码中访问它似乎确实有效,但这是正确的方式还是有Aurelia/ES6这样做的方式?ES6Aureliawindow

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

类似于以下内容:

constructor() {
    this.user = JSON.parse(window.sessionStorage.user || window.localStorage.user);
}
Run Code Online (Sandbox Code Playgroud)

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

Sve*_*ven 12

这是在使用Web API时在Aurelia中执行此操作的正确方法,因此您可以使用当前的代码.

然而,随着DOM工作时,你当然可以用标准DOM API,以及,但Aurelia路上有一个平台抽象层(PAL文档即会抽象的任何平台应用程序驻留在一个类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')
  }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,PAL目前并没有做太多的事情,但将来计划允许你使用日常的DOM API调用,即使你的应用程序可能没有在"普通"DOM中运行.

不要忘记的一件非常重要的事情是本机DOM和Web API非常强大,使用它们的本机实现没有任何问题.其他框架倾向于围绕Web API构建自己的实现,这些实现是针对其框架的结构和最佳实践而定制的,但这不一定是最好的.