让我们进入细节:
提供的页面(通过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
在试图处理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) 我正在尝试重用以前建立的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) 目前,在 GraphQL JS 实现中,没有从突变返回描述性成功消息的标准方法,例如“用户创建成功”等。我的问题有两部分:
我的想法是从 API 返回成功消息是有益的。这样,消息可以在不同客户端(例如网络和移动设备)上保持一致。客户端不必为每个 API 调用实现自定义消息。但我不确定最佳实践是什么。从突变调用返回描述性成功消息是否有任何缺点(除了增加响应大小之外)?
如果我决定这样做,graphql-js 中是否有标准方法可以做到这一点?
例如,是否可以取回如下内容:
{
data: {
mutationName: {var1:"val1"}
},
messages: {
mutationName:"User created successfully"
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用具有各种字段的类型来指定 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) 我在使用模块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 ×3
graphql ×2
javascript ×2
apollo ×1
graphql-js ×1
localhost ×1
mojo ×1
mojolicious ×1
node.js ×1
perlguts ×1