小编Eri*_*uan的帖子

在计算属性中使用$ refs

我如何访问$refs内部计算?第一次运行计算属性时始终未定义.

vue.js

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

禁用缓存时,Chrome CORS请求会更快?

我的应用在这里加载视频:https://core.arc.io/guanzo/VideoOfPeopleWalking.mp4

它使用Range请求标头以16Kb的块加载来自另一个来源的视频.我的服务器已将响应标头设置Access-Control-Max-Age 为10分钟,以防止出现多余的OPTIONS请求.

访问链接(它是一个HTML页面),打开网络工具,并观察获取16Kb块需要大约1秒.

现在选中"禁用缓存",您应该看到请求更快完成LOT,看起来有更多的并发请求.这与预期行为相反,因为每个请求都必须触发并等待OPTIONS请求.

如果启用了缓存,请求应该更快,不是吗?这里发生了什么?

以下是GIF格式的复制品:https://i.gyazo.com/ec5941829031cdd4dc684a3b53ec6c39.mp4

注意:块存储在IndexedDB中,因此如果刷新页面,则需要清除IndexedDB以强制触发所有请求.

编辑:筛选出任何firestore请求,我不确定为什么这些请求被解雇,但它应该与我的问题无关.

编辑:一个新的线索!https://i.gyazo.com/bd887533a42868f748564ccda4451881.png

选中"禁用缓存"后,Chrome将重复使用"连接ID"列中显示的相同TCP连接.表面上看,这应该可以更快地提出请求.

javascript google-chrome http browser-cache cors

9
推荐指数
1
解决办法
322
查看次数

在Vue中去抖动计算的属性/ getter

我似乎无法去抖(lodash)计算属性或vuex getter.去抖动的函数总是返回undefined.

https://jsfiddle.net/guanzo/yqk0jp1j/2/

HTML:

<div id="app">
  <input v-model="text">
  <div>computed: {{ textComputed }} </div>
  <div>debounced: {{ textDebounced }} </div>
</div>
Run Code Online (Sandbox Code Playgroud)

JS:

new Vue({
    el:'#app',
  data:{
    text:''
  },
  computed:{
    textDebounced: _.debounce(function(){
      return this.text
    },500),
    textComputed(){
        return this.text
    }
  }

})
Run Code Online (Sandbox Code Playgroud)

javascript lodash vue.js vuex

7
推荐指数
2
解决办法
6460
查看次数

将数字转换为 ArrayBuffer

我正在尝试使用 AES-CTR 算法解密浏览器上的数据。WebCrypto API要求将计数器作为BufferSource传递。如何将计数器(数字)转换为预期输入(字节数组)?

我使用的是全零 IV,因此计数器从 0 开始。假设我正在尝试解密计数器 = 445566 的数据。如何将 445566 转换为 ArrayBuffer?

const key = // retrieve decryption key
const encrypted = // retrieve encrypted data

const iv = new ArrayBuffer(16)
// iv is all zeros. I need it to represent 445566, how?

const algo = {
    name: 'AES-CTR',
    counter: iv,
    length: 128
}
const decrypted = await crypto.subtle.decrypt(algo, key, encrypted)
Run Code Online (Sandbox Code Playgroud)

编辑:在挖掘了一些加密库之后,我最终使用了这个。它似乎做了我想做的事,但不知道正确性、性能等。

function numberToArrayBuffer(value) {
    const view = new DataView(new ArrayBuffer(16))
    for (var index = …
Run Code Online (Sandbox Code Playgroud)

javascript cryptography aes webcrypto-api

7
推荐指数
2
解决办法
9895
查看次数

vue如何接管预呈现的页面?

我正在使用prerender-spa-plugin,效果很好!我很好奇vue如何设法检测预渲染.为什么不尝试像往常一样渲染其组件?

我试过寻找答案,但没有人在讨论vue如何实现这个目标.

vue.js

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

如何批量删除存储桶

如何批量删除存储桶?

这是我尝试过的.

def deleteAllBuckets():
    batch = storage_client.batch()
    with batch:
        for bucket in storage_client.list_buckets():
            bucket.delete()
Run Code Online (Sandbox Code Playgroud)

技术上它是有效的,因为桶被删除,但我不相信我发送一个批量请求.看起来我每桶发送一个请求.

将上述代码与Google Cloud Datastore中的批量请求进行比较

def deleteAllEntities():
    query = datastore_client.query(kind="Charge")
    queryIter = query.fetch()

    batch = datastore_client.batch()
    with batch:
        for entity in queryIter:
            batch.delete(entity.key)
Run Code Online (Sandbox Code Playgroud)

您可以看到我正在批处理对象上调用delete方法.使用存储代码,我在bucket对象上调用delete.不幸的是,云存储python API没有任何示例.

python google-cloud-storage

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

Node Express:如何仅将自定义错误消息发送回客户端

在承诺拒绝的情况下,如何确保仅将我创建的错误消息发送到客户端?

我抛出了一个自定义错误,效果很好。

return db.query(`SELECT * FROM events WHERE hostId = ? AND status = ?;`,[userId, ACTIVE_EVENT])
.then((results)=>{
    if(results.length != 0)
        throw new Error('You already have an active event')
})
Run Code Online (Sandbox Code Playgroud)

后来被抓了

.catch(function (err) {
    console.log(err)
    res.status(400).send(err.message)
});
Run Code Online (Sandbox Code Playgroud)

并向客户端发送一条不错的错误消息。

但有时我会从格式错误的数据库查询或其他什么情况中收到令人讨厌的错误,并且客户端会看到类似“ER_TRUNCATED_WRONG_VALUE:不正确的时间值:”的消息

node.js express

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

Express 无法为 React 构建正确提供静态文件

我是新来的反应。我一直在尝试将 MEAN stack 应用程序转换为express 和reactjs 应用程序,但在正确输入构建文件时遇到问题。看起来我的服务器正在加载我的index.html 文件来代替我的js 文件。谁能帮我弄清楚为什么?

我在浏览器中的 main.js 中出现以下错误:Uncaught SyntaxError: Unexpected token <

我的文件构建到一个 build 文件夹中,该文件夹是我的 server.js 文件的同级文件。mywebsite (root) -src (f) -build (f) -server.js -public (f)

这是我的 server.js

require('./server/config/config');

// Get dependencies
const express = require('express');
const morgan = require('morgan');
const path = require('path');
const http = require('http');
const bodyParser = require('body-parser');

const api = require('./server/routes/api');

const compression = require('compression')
const app = express();

app.use(compression());

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

app.use(morgan(':remote-addr - :remote-user [:date[clf]] ":method :url 
HTTP/:http-version" …
Run Code Online (Sandbox Code Playgroud)

static node.js express reactjs

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

Kubernetes:如何从 configmap 扩展 env 变量

我正在使用配置映射将 env 变量注入到我的容器中。一些变量是通过连接变量创建的,例如:

~/.env 文件

HELLO=hello
WORLD=world
HELLO_WORLD=${HELLO}_${WORLD}
Run Code Online (Sandbox Code Playgroud)

然后我创建配置映射

kubectl create configmap env-variables --from-env-file ~/.env

部署清单引用了配置映射。

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: my-app
spec:
  template:
    spec:
      containers:
      - name: my-image
        image: us.gcr.io/my-image
        envFrom:
        - configMapRef:
            name: env-variables
Run Code Online (Sandbox Code Playgroud)

当我执行到我正在运行的 Pod 并执行命令时

$ printenv HELLO_WORLD

我希望看到hello_world,但我看到了${HELLO}_${WORLD}。变量未展开,因此我的应用程序引用这些变量将获得未展开的值。

我如何确保变量得到扩展?

如果重要的话,我的图像使用的是高山。

docker kubernetes

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

显示文本时丢失换行符

我可以看到换行符“?” 用于 Chrome 开发者工具中的字符串

<br>??<br>Event Status: confirmed?<br>Event Description: Hog Day (Night )and Hog Day (Day)??Friday...
Run Code Online (Sandbox Code Playgroud)

如果我双击它并粘贴到记事本,则会保留换行符。

当我将字符串保存到这样的对象时,

var summary = el.find("summary").text();
var volunteerEvent = {title: title, summary: summary}
Run Code Online (Sandbox Code Playgroud)

并最终显示在页面上,

$('#volunteerEventDescription').empty().html(event.summary);
Run Code Online (Sandbox Code Playgroud)

换行符消失了,这是一大块文本。

我如何保留换行符?

html javascript jquery jquery-mobile

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

一旦满足条件,跳过if语句

这个问题来自我的OCD-ish性质.说我有这段代码.

boolean executed = false;
for(Object o : Collection){
    if((o fulfills condition) && executed  == false){
        //do something
        executed  = true;
    } 
    //other code
}
Run Code Online (Sandbox Code Playgroud)

如果规范只要求if语句执行一次,是否有更好的方法来跳过检查 if条件而不是设置executed为true?令我困扰的是,在if语句已经执行之后,循环需要检查if条件每个循环迭代.

执行布尔值的要点是防止if语句再次执行.我不知道这是可能的,但我希望把它一步,并跳过检查,如果有条件的一次executedtrue.

编辑:我仍然需要在条件满足后完成循环.

java loops

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

套接字发射到房间适用于除发送者之外的所有套接字

我正在使用 socket.io 创建投票功能。套接字通过channelId. 每当房间中的任何插座发出vote事件时,我都会尝试将电流vote-list发送到该房间中的所有插座。

我的问题是,如果我在同一个房间里有套接字 A、B、C,则来自套接字 A 的投票对 B 和 C 可见(即on.('vote')调用B 和 C 的侦听器),但对 A 本身不可见。

我期望发生的是,如果套接字 A、B、C 位于同一个房间,并且 A 发出 a votevote则将调用所有套接字 A、B、C侦听器。

客户:

这些侦听器是在方法中定义的,但为了清楚起见,我将它们单独列出。定义了所有变量。

const socket = io('https://localhost:3001')

socket.emit('join-channel',{ 
    channelId: payload.channelId,
    senderId: socket.id
 })

socket.emit('vote',{
    senderId: socket.id,
    channelId: state.channelId,
    vote: payload.vote,
    userId: state.userId
})

socket.on(`vote`, function (data) {
    store.commit(MUTATIONS.SET_VOTES, data)
});
Run Code Online (Sandbox Code Playgroud)

服务器

module.exports = (app,server) => { var io = require('socket.io')(server);

io.on('connection', function (socket) {

    socket.on('join-channel',data=>{ …
Run Code Online (Sandbox Code Playgroud)

node.js express socket.io

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