小编wor*_*art的帖子

我应该在 PWA 中缓存 ServiceWorker 文件吗?

我仍然在努力如何避免渐进式 Web 应用程序中的缓存问题。任何 PWA 缓存的关键是能够更新 ServiceWorker 文件(我们称之为 sw.js)。但细节让我有点困惑:

  • 可以navigator.serviceWorker.register('sw.js')在每个页面加载时执行,因为register()更新应用程序缓存,或者如果一切都是最新的,则什么都不做——对吗?

  • 做一些类似navigator.serviceWorker.register('sw.js?' + Date.now())避免 HTTP 缓存的事情有意义吗?或者,如果服务器使用 ETags,我是否安全?

  • 浏览器是否在每次页面加载时检查网络是否有更新的 sw.js?我有时在网络检查器选项卡中看不到它。

  • 如果 sw.js 在应用程序缓存中,浏览器是否会在不检查服务器更新的情况下从那里获取它?

  • 我有时会看到像这样缓存自己的 ServiceWorker 演示脚本:

    self.addEventListener('install', ev => {
        const myCaches = {
            app: {...}, 
            sw: {
                files: [
                    '/sw.js'
                ],
                version: '1'
            }
        }
        for (let name in myCaches) {
            const cacheName = name + '-' + myCaches[name].version
            ev.waitUntil(
                caches.has(cacheName).then(uptodate => {
                    if (uptodate) return true
                    caches
                        .open(cacheName)
                        .then(cache => {
                            cache.addAll(myCaches[name].files)
                        })
                })
            ) …
    Run Code Online (Sandbox Code Playgroud)

javascript service-worker progressive-web-apps

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

使用异步函数从Node.js模块返回值

我为我的Node.js项目编写了一个模块,它处理一些数据并且应该返回结果,如下所示:

var result = require('analyze').analyzeIt(data);
Run Code Online (Sandbox Code Playgroud)

问题在于analyze.js取决于异步功能.基本上它看起来像这样:

var analyzeIt = function(data) {
    someEvent.once('fired', function() {
        // lots of code ...
    });
    return result;
};
exports.analyzeIt = analyzeIt;
Run Code Online (Sandbox Code Playgroud)

当然,这不起作用,因为result返回时仍然是空的.但是我该怎么解决呢?

javascript asynchronous node.js

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

npm run什么都不做

我已经使用Node.js / npm已有一段时间了,但是我从未使用过npm脚本。我很惊讶地发现我无法在Windows / Cygwin系统上完全使用它们。像这样的package.json ...

{
  "name": "demo",
  "scripts": {
    "env": "env",
    "hello": "echo Hello!",
    "crap": "I am complete nonsense."
  }
}
Run Code Online (Sandbox Code Playgroud)

...所有三个npm run命令都不起作用。npm run crap执行并立即返回OK状态(我使用-dd参数进行了测试);npm run doesntexist引发预期的错误。在常规Windows shell上不使用Cygwin进行测试没有区别。

cygwin node.js npm

4
推荐指数
1
解决办法
914
查看次数

网络推送消息是如何传递的?

我尝试为网页设置推送消息。虽然我了解前端部分(Push API)并且有一个工作的本地主机演示应用程序,但我只是不明白服务器如何将消息推送到浏览器。

推送服务中的包如何路由到客户端?客户端没有域名,通常也没有固定的IP地址,那怎么可能呢?

我已经阅读了Google 的 Web Push Libraries 指南RFC 8030的部分内容,但如果他们有这个问题的答案,我却无法理解。

web-push

3
推荐指数
1
解决办法
2180
查看次数