小编A.P*_*nko的帖子

angular 2 observable timeout第二个参数类型

我目前正在尝试使Angular 2 Observable的timeout()方法正常工作,但在所有教程中都有similair代码,其中timeout()方法的第二个参数是一个简单的错误:

return this.http.get('http://...')
                .timeout(2000, new Error('Timeout exceeded'));
Run Code Online (Sandbox Code Playgroud)

但是当我复制这段代码时,TypeScript会说第二个参数的类型无效,并且希望看到实现接口IScheduler的 smth .

解决问题的方法之一是创建实现IScheduler接口的新类,但它具有我不熟悉的功能(now()方法和任务).

有谁知道,我应该这样做还是有其他办法使事情有效?如果不是错误我想放置一些回调函数怎么办?

timeout http observable angular

6
推荐指数
1
解决办法
8614
查看次数

vue-router 在运行测试期间不会重置

目前我正在为 Vue.js 应用程序编写测试并遇到问题:如果有一些路由测试,href则在每个下一个测试中都会根据以前的测试修改路径。

例如,如果在第一个测试中我模拟点击一个链接href='document/123'并检查vm.$router.history.path,它将正确显示document/123,但如果在下一个测试中我将尝试做同样的事情,vm.$router.history.path将显示document/document/123并继续在路径中添加“文档”与每个下一个测试。

这很奇怪,看起来routerdescribe块中的所有测试期间都保持存在,即使我有beforeEach钩子在那里我重新初始化Vue和所有插件的使用以及Vue-routerafterEach钩子我$destroy()Vue实例上调用方法。

有什么方法可以修改或重置钩子中的vm.$router.history对象或其属性,afterEach还是我错过了其他东西?

下面是测试代码:

import Vue from 'vue'
import Search from '../../../src/Search.vue';
import router from '../../../src/router';

describe('Search', () => {
   let vm;

   beforeEach((done) => {
     const container = document.createElement('div');
     vm = new Vue({
        router,
        render: h => h(Search),
     }).$mount(container);
     done();
   });

   afterEach((done) => {
     vm.$destroy(); …
Run Code Online (Sandbox Code Playgroud)

unit-testing vue-router vuejs2

6
推荐指数
1
解决办法
533
查看次数

Vuetify 断点在 Nuxt.js 中不起作用

我正在开发一个使用Nuxt.js作为 SSR 引擎和Vuetify作为样式框架的项目。在我的模板之一中,我有这样的代码:

<v-layout row wrap align-center 
 :class="{ 'mb-4': $vuetify.breakpoint.smAndDown }">...</v-layout>
Run Code Online (Sandbox Code Playgroud)

如您所见,只有在小屏幕和小屏幕上时,我才想应用mb-4类。但是当我在桌面大屏幕上加载它并检查元素时,即使屏幕分辨率与应用此类的逻辑不匹配,也会附加此类。但是,当我调整浏览器窗口大小时,样式会恢复到预期状态。

我尝试在生命周期钩子中手动调度'resize'事件:

mounted() {
   window.dispatchEvent(new Event('resize')); 
}
Run Code Online (Sandbox Code Playgroud)

但它没有帮助。即使我把它包起来setTimeout,仍然没有运气。

UPD:找到了解决方法,但仍然认为这不是最佳解决方案:已更改

:class="{ 'mb-4': $vuetify.breakpoint.smAndDown }"
Run Code Online (Sandbox Code Playgroud)

:class="{ 'mb-4': isMounted && $vuetify.breakpoint.smAndDown }"
Run Code Online (Sandbox Code Playgroud)

并在mounted生命周期钩子中添加:this.isMounted = true

更新:在挖掘 Vuetify 源代码时发现,它以 200 毫秒的延迟检查窗口宽度,因为窗口宽度检查是一项代价高昂的操作。这就是为什么我们有延迟。

vue.js vuejs2 nuxt.js vuetify.js

5
推荐指数
1
解决办法
3300
查看次数

我们是否需要手动设置Nuxt发送压缩或brotli压缩的文件?

为了提高灯塔得分,我需要启用gzip和/或brotli压缩,以便提高性能得分。我在nuxt.config.js文件中添加了两个webpack插件:

plugins: [
    new CompressionPlugin({
      filename: `[path].gz[query]`,
      algorithm: `gzip`,
      test: /\.js$|\.css$|\.html$/,
      threshold: 10240,
      minRatio: 0.8
    }),
    new BrotliPlugin({
      asset: `[path].br[query]`,
      test: /\.js$|\.css$|\.html$/,
      threshold: 10240,
      minRatio: 0.8
    })
  ]
Run Code Online (Sandbox Code Playgroud)

我可以确认,在添加这两个插件实际上是创造.gz.br我的文件版本。

主要问题是:为了发送这些压缩文件,我是否应该对我的nuxt配置文件做一些额外的操作,否则nuxt会自行处理?是否可以检查localhostbrotli例如,因为我已经读过,仅适用于HTTPS协议)?

PS我不使用任何框架expressrestify

gzip webpack brotli nuxt.js

2
推荐指数
1
解决办法
1461
查看次数