Day: 2023年9月1日

为什么 Rust 是开发者中最受推崇的语言

Rust 作为最受开发者推崇和渴望的语言继续位居榜首,在这篇文章中,我们将更深入地探讨 Rust 如何(以及为何)赢得世界各地开发者的青睐。

在Stack Overflow 的年度开发者调查中, Rust连续第八年位居“最受欢迎的编程语言”榜首。超过 80% 的开发人员表示他们希望明年再次使用该语言,您不得不想知道一种不到 20 年前创建的语言如何俘获了世界各地开发人员的心。

在本文中,我们将了解 Rust 的历史、它的常用用途、为什么开发人员如此喜爱它,以及一些可帮助您开始学习 GitHub 上增长最快的语言之一的资源

ServiceWorker、MessageChannel 和 postMessage

上周我写了一篇关于渐进式网络的缓存策略的文章,该策略首先使用缓存,然后进入网络,在网页之间共享消息并ServiceWorker协调对缓存内容的更新。swivel今天我将描述用于简化 ServiceWorkers 消息传递的库的内部工作原理。

事实证明,您可以通过多种不同的方式在 aServiceWorker及其控制的网页之间共享消息。
  • 客户端可能想要向a 发送消息ServiceWorker、询问某事或通知某事– 这是“单播”(1 对 1)
  • A可能想要向客户端ServiceWorker发送回复– 单播
  • AServiceWorker可能想要向其控制下的每个客户端发送更新– 一条“广播”(一对多)消息
  • AServiceWorker可能想要向发起请求的客户端发送更新– 单播

客户端页面和 Service Worker 之间的双向通信

Workbox 和 Preact 都与这个问题没有太大关系。Workbox 允许您在 Service Worker 中使用您想要的任何其他代码,而 Preact 也应该适用于您的客户端应用程序。)

此示例页面演示了使用 来从客户端页面向服务工作人员发送消息,然后进行响应MessageChannel。客户端页面上使用的相关帮助程序代码如下所示:

function sendMessage(message) {
  return new Promise(function(resolve, reject) {
    const messageChannel = new MessageChannel();
    messageChannel.port1.

Service worker 如何与客户端通信

问题:

我一直在尝试从服务人员向客户发送消息,但是如果我使用

self.clients.matchAll()
.then((clients) => {
  clients.forEach(function(client) {
    client.postMessage({msg: 'Hello from SW'})
  })
})

即使我在浏览器中打开了一个选项卡,它也不会发送到任何客户端,但是如果我从客户端服务工作者发送消息

// client
navigator.serviceWorker.controller.postMessage({title: 'Send message from client'})

并在服务人员中

self.addEventListener('message', function(event) {
  self.clients.fetchAll()
    .then((clients) => {
      clients.forEach(function(client) {
        client.postMessage({msg: 'Hello from SW'})
     })
  

WebSocket 安全性:8 大漏洞及其解决方法

什么是 WebSocket?

WebSocket 变得越来越流行,因为它们极大地简化了客户端和服务器之间的通信。 

WebSocket 协议使用 OSI 模型应用层(第 7 层)来允许客户端和服务器执行双向(全双工)通信。这使得创建动态、实时的 Web 应用程序(例如即时消息和照片共享应用程序)成为可能。

Input elements should have autocomplete attributes

浏览器console 报

[DOM] Input elements should have autocomplete attributes (suggested: "current-password"): 

解决:

尝试改变

<input type="password" name="password">

<input type="password" name="password" autocomplete="on">

自动完成功能可让 Web 开发人员指定用户代理在填写表单字段值时提供自动帮助的权限(如果有),以及向浏览器提供有关字段中预期信息类型的指导。

 …

div嵌套div ,点击子级div不触发父级div点击事件

情况如下:

<div class="footfixed" style="cursor:pointer" οnclick="toAdvertDetail('${appPath}home/showNewsDetail?newsId=4');" >
<div class="close" onClick="event.cancelBubble = true"> </div>
</div>
<!-- 底部悬浮end -->

外层的div有一个点击跳转事件,按钮div也是一个点击事件用来隐藏整个div,产生的问题是,点击了关闭按钮了同事会触发父级div的跳转事件,

解决方法: 在子级div上增加一个事件 onClick="event.cancelBubble = true",这样就可以只触发自身的点击事件了