小编Ed.*_*Ed.的帖子

服务工作者无法在具有节点js服务器的脱机模式下工作

  • 我正在尝试使用脱机第一个策略构建PWA.
    • 源文件的服务器NodeJS服务器.
    • 我目前正在localhost节点服务器上测试它(不确定它有影响吗?).
    • 服务工作者+缓存似乎很好,但在离线模式下我只能获得Chrome离线页面.

让我们进入细节:

提供的页面(通过http:// localhost:8080/place/test url)有一些客户端JS,我在其中注册一个Service Worker:

client.js

    if ('serviceWorker' in navigator) {
        navigator.serviceWorker
                 .register(rootPath+'/js/service-worker.js')
                 .then(function() { console.log('Service Worker Registered'); });
    }
Run Code Online (Sandbox Code Playgroud)

service-worker.js(基于Google PWA教程)

var cacheName = 'myCacheVersion';
var filesToCache = [
    '../',
    '../place/test',
    '../js/client.js',
    '../js/service-worker.js',
    "../css/style.css"
];


self.addEventListener('install', function(e) {
  console.log('[ServiceWorker] Install');
  e.waitUntil(
    caches.open(cacheName).then(function(cache) {
      console.log('[ServiceWorker] Caching app shell');
      return cache.addAll(filesToCache);
    })
  );
});

self.addEventListener('activate', function(e) {
  console.log('[ServiceWorker] Activate');
  e.waitUntil(
    caches.keys().then(function(keyList) {
      return Promise.all(keyList.map(function(key) { …
Run Code Online (Sandbox Code Playgroud)

javascript localhost node.js service-worker progressive-web-apps

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

了解newRV_inc vs newRV_noinc

在试图处理C级的参考时,我似乎无法弄清楚newRV_inc和之间的差异(在实践中)newRV_noinc.为此,我嘲笑了这个小Inline::C例子.

#!/usr/bin/env perl

use strict;
use warnings;

use Devel::Peek 'SvREFCNT';

my $arrayref_inc = make_arrayref_inc();
print "inc: ", SvREFCNT($arrayref_inc), "\n";

my $arrayref_noinc = make_arrayref_noinc();
print "noinc: ", SvREFCNT($arrayref_noinc), "\n";

use Inline C => <<'END_C';
SV* make_arrayref_inc () {
  AV * array = newAV();
  SV * arrayref = newRV_inc((SV *)array);

  return arrayref;
}

SV* make_arrayref_noinc () {
  AV * array = newAV();
  SV * arrayref = newRV_noinc((SV *)array);

  return arrayref;
}
END_C
Run Code Online (Sandbox Code Playgroud)

得到:

inc: 1
noinc: …
Run Code Online (Sandbox Code Playgroud)

perl perlguts

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

Mojolicious重用先前建立的连接

我正在尝试重用以前建立的websocket连接,以避免websocket握手。我发现,一个自定义的WebSocket交易可以使用内置build_websocket_tx(详情点击这里),而且也为可使用检索每一个WebSocket连接的连接标识符connection中定义的子程序Mojo::Transaction(详情点击这里)。我可以通过某种方式将两者结合使用以重新使用连接吗?还有其他方法吗?

PS:Websocket连接应该是一致且可重用的。但是Mojolicoious没有为websocket连接提供任何此类选项。

编辑

无需连接即可重复使用的示例代码。

#!/usr/bin/perl

use strict;
use warnings;

use Mojo::UserAgent;
use JSON qw |encode_json|;

my $ua = Mojo::UserAgent->new;
my $url = "wss://trello.com/1/Session/socket";

$| = 1;

sub _connect {
    my $req = {
        type => "ping",
        reqid=> 0
    };
    $ua->websocket(
        $url => sub {
            my ($ua, $tx) = @_;

            die "error: ", $tx->res->error->{message}, "\n" if $tx->res->error;
            die 'Not a websocket connection' unless $tx->is_websocket;

            # Connection established.
            $tx->on(
                message => sub …
Run Code Online (Sandbox Code Playgroud)

perl mojo mojolicious

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

突变中的 GraphQL 描述性成功消息

目前,在 GraphQL JS 实现中,没有从突变返回描述性成功消息的标准方法,例如“用户创建成功”等。我的问题有两部分:

  1. 我的想法是从 API 返回成功消息是有益的。这样,消息可以在不同客户端(例如网络和移动设备)上保持一致。客户端不必为每个 API 调用实现自定义消息。但我不确定最佳实践是什么。从突变调用返回描述性成功消息是否有任何缺点(除了增加响应大小之外)?

  2. 如果我决定这样做,graphql-js 中是否有标准方法可以做到这一点?

例如,是否可以取回如下内容:

{
  data: {
    mutationName: {var1:"val1"}
  },
  messages: {
    mutationName:"User created successfully"
  }
}
Run Code Online (Sandbox Code Playgroud)

graphql graphql-js express-graphql

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

GraphQL - 扩展输入参数

我正在尝试使用具有各种字段的类型来指定 GraphQL 模式,并且还允许您OR: [...]使用相同的参数递归地添加。我让它像这样工作

input BookFilters {
  _id: String
  title: String
  title_contains: String
  title_startsWith: String
  title_endsWith: String
  OR: [BookFilters]
}

type Query {
   allBooks(_id: String
     title: String
     title_contains: String
     title_startsWith: String
     title_endsWith: String
     OR: [BookFilters]
   ): [Book]
}
Run Code Online (Sandbox Code Playgroud)

效果很好,这个查询

{
  allBooks(title_endsWith: "1", OR: [{ title: "2" }, {title:"3"}, {OR: [{title_contains: "Q"}, {OR:[{title:"Q"}]}]}]) {
    _id
    title
  }
}
Run Code Online (Sandbox Code Playgroud)

过得很好。

我的问题是,有没有办法消除重复?理想情况下我会喜欢它

type Query {
   allBooks(...BookFilters): [Book]
}
Run Code Online (Sandbox Code Playgroud)

是有效的,但似乎不是。


编辑 - 评论带来了片段。它们只能一个类型中声明出来,对吗?所以我仍然有一个新类型来列出我所有的查询参数,然后从中制作一个片段,重新列出所有字段?

即使事实并非如此,GraphQL 似乎仍然不喜欢传播输入参数。

fragment BookFiltersFragment on …
Run Code Online (Sandbox Code Playgroud)

javascript apollo graphql

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

函数::参数 - “在方法中......:'['之后缺少类型名称”是什么意思

我在使用模块Function::Parameters时遇到问题Types::Standard。在此代码中,在 Person.pm 中:

package Person;

use strict;
use warnings;
use Function::Parameters;
use Types::Standard qw(InstanceOf);

method is_taller_than(
  InstanceOf['Person'] $other
) {
  return;
}

1;
Run Code Online (Sandbox Code Playgroud)

使用perl -cw Person.pm报告:

In method is_taller_than: missing type name after '[' at Person.pm line 9.
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

perl

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