jsdom窗口缓存

cjr*_*uck 14 dom express jsdom

在express.js中使用jsdom.jsdom()我创建了一个带有"base"布局标记的文档,并将一些客户端库(如jQuery)附加到其窗口.

只需要做一次这样的设置就好了.

问题是窗口文档的DOM将根据请求的URL而改变.有没有办法让每个请求从同一个缓存的窗口对象启动并增强它,还是必须在每次请求时从头开始设置?

hoh*_*ner 0

我认为这是不可能的。当您使用 jsdom 构建器创建新文档时,您指定的任何自定义选项只会影响当前正在创建的文档。此后创建的任何其他文档都将依赖于默认功能。

然而,您实际上可以修改这些默认功能——我认为这就是您所追求的。在创建任何文档之前,您可以修改所有未来文档的这些默认值:

require('jsdom').defaultDocumentFeatures = {
  FetchExternalResources   : ['script'], 
  ProcessExternalResources : false,
  MutationEvents           : false,
  QuerySelector            : false
}
Run Code Online (Sandbox Code Playgroud)

阅读 jsdom 的README可以获得每个选项的解释。