小编ier*_*dna的帖子

VueJS /浏览器缓存生成版本

我有一个VueJS应用程序.每当我运行npm run build它时会创建一组新dist/*文件,但是,当我在服务器上加载它们(删除旧版本后),并在浏览器中打开页面时,它会加载旧版本(从我假设的缓存中).当我刷新页面时,它加载新代码没问题.

这是我的index.html:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/>
        <meta http-equiv="cache-control" content="max-age=0" />
        <meta http-equiv="cache-control" content="no-cache" />
        <meta http-equiv="expires" content="-1" />
        <meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
        <meta http-equiv="pragma" content="no-cache" />
        <link rel="stylesheet" href="/static/css/bootstrap.min.css"/>
    </head>
    <body>
        <div id="app"></div>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

有没有办法强制它每次加载新代码或(理想情况下)检查旧文件是否从服务器中消失,然后刷新浏览器?

html browser-cache vue.js

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

在VueJS中禁用"开发模式"警告

我在开发模式下运行Vue,每次加载页面时都会收到此消息:

"您正在开发模式下运行Vue.确保在部署生产时打开生产模式.请参阅https://vuejs.org/guide/deployment.html上的更多提示 "

有没有办法在不切换到生产模式的情况下禁用它?

vue.js vuejs2

22
推荐指数
3
解决办法
2万
查看次数

根据视口更改Vuetify中的字体大小?

我有一个标题:

<v-card-text style="font-size:5em">
    Some Heading Here
</v-card-text>
Run Code Online (Sandbox Code Playgroud)

当视图是XS时,我想将字体大小设置为3em.现在我复制它如下:

<v-card-text hidden-xs-only style="font-size:5em">
    Some Heading Here
</v-card-text>
<v-card-text visible-xs-only style="font-size:3em">
    Some Heading Here
</v-card-text>
Run Code Online (Sandbox Code Playgroud)

但是,我想避免这种重复并单独使用CSS解决问题,但无需@media在本地.vue文件中编写自己的查询.那可能吗?

或者,我可以使用预定义的类而不是直接指定字体大小,甚至完全指定不同的元素,例如,<h3>当它是XS时,但<h2>在其他视口上.

css viewport vue.js vuetify.js

13
推荐指数
3
解决办法
8589
查看次数

当vuex存储中的特定状态更改时发出事件

我有一个具有以下状态的vuex商店:

state: {
    authed: false
    ,id: false
}
Run Code Online (Sandbox Code Playgroud)

在组件内部,我想监视authed状态的变化并向服务器发送AJAX调用.它需要在各种组件中完成.

我尝试过使用store.watch(),但无论何时发生变化idauthed发生变化.我也注意到,它不同于vm.$watch你不能指定一个属性.当我试图这样做:

store.watch('authed',function(newValue,oldValue){
  //some code
});
Run Code Online (Sandbox Code Playgroud)

我收到了这个错误:

[vuex] store.watch only accepts a function.

任何帮助表示赞赏!

vue.js vuex

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

Pydantic 枚举字段未转换为字符串

我试图将类中的一个字段限制为枚举。但是,当我尝试从课堂上获取字典时,它不会转换为字符串。相反,它保留了枚举。我检查了pydantic 文档,但找不到与我的问题相关的任何内容。

这段代码代表了我真正需要的东西。

from enum import Enum
from pydantic import BaseModel

class S(str, Enum):
    am='am'
    pm='pm'

class K(BaseModel):
    k:S
    z:str

a = K(k='am', z='rrrr')
print(a.dict()) # {'k': <S.am: 'am'>, 'z': 'rrrr'}
Run Code Online (Sandbox Code Playgroud)

我试图让 .dict() 方法返回 {'k': 'am', 'z': 'rrrr'}

python pydantic fastapi

8
推荐指数
4
解决办法
5784
查看次数

从 udp 流式传输时,轻轻停止 ffmpeg(以使其完成写入 mp4 文件)

我正在尝试在服务器上接收 udp 流并将其写入 mp4 文件。这工作正常:

  ffmpeg -i udp://127.0.0.1:12345 -codec copy out.mp4
Run Code Online (Sandbox Code Playgroud)

如果我按 CTRL+C(或将 SIGINT 发送到进程),ffmpeg 将退出并且我有一个可用的 mp4 文件。

但是,如果数据停止进入 udp 端口​​(例如,在 10 分钟的流传输后)并且我尝试停止 ffmpeg,则它需要 2 个中断信号,此时 ffmpeg 会突然退出并导致无法播放的 mp4 文件。

有谁知道如何防止 ffmpeg 在没有输入数据时挂起或强制它写出 mp4 标头?

我知道我可以指定一个 url 选项

 udp://127.0.0.1:12345?timeout=<microseconds>
Run Code Online (Sandbox Code Playgroud)

但是,我需要能够在录制过程中忽略偶尔(5-10 分钟长)的暂停,并且只在最后退出。所以即使我设置 timeout=60000000 它会导致我的应用程序在我想停止流时等待 10 分钟(例如,如果没有数据)并且当我向它发送 SIGINT 时我需要它立即退出

video udp ffmpeg video-streaming

7
推荐指数
1
解决办法
3737
查看次数

将数据(正文)附加到VueJS中的$ http.delete事件

我的Vue.JS组件中有以下方法:

removeItems (itemsArray) {
    this.$http.delete(this.apiUrl, {items : itemsArray})
    .then((response) => {
       this.msg = response.msg;
    });
}
Run Code Online (Sandbox Code Playgroud)

在vue-resource 0.8.0中一切正常.升级到1.0.3后它没有.我在发行说明中发现他们body从GET请求中删除了,这是有道理的,但为什么DELETE请求停止工作?如果它们body在DELETE请求中禁用显式指定,我该如何添加它?

vue.js vue-resource

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

在一个 .vue 文件中声明多个模板

我在 .vue 文件中有一个组件,可以从重用代码块中受益。我知道我可以将该代码移动到单独的 .vue 文件并将其作为新组件导入。但是,该组件不会在其他任何地方使用,我想避免使目录混乱。是否可以在不使用代码中的template:"<div>.....</div>"内容的情况下在父级中声明此组件的模板?

这是想法:

<template>
  <div>
    ...some html here...
    <div v-for="item in items">
      {{item.name}}: 
      <div v-if="item.available">YES!</div>
      <div v-else>NO :(</div>     
    </div>    

    ...some other components and data here...

    <div v-for="item in items">
      {{item.name}}: 
      <div v-if="item.available">YES!</div>
      <div v-else>NO :(</div>
    </div>    
  </div>
</template>
Run Code Online (Sandbox Code Playgroud)

我希望能够做这样的事情:

<template>
  <div>
    ...some html here...
    <div v-for="item in items">
      <itemizer inline-template v-model="item">
        {{value.name}}: 
        <div v-if="value.available">YES!</div>
        <div v-else>NO :(</div>
      </itemizer>
    </div>    

    ...some other components and data here...

    <div v-for="item in items">
      <itemizer v-model="item"/>
    </div>    
  </div>
</template>
Run Code Online (Sandbox Code Playgroud)

但是,据我所知,这是不可能的。

vue.js vue-component

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

Vue.JS自定义单选按钮组件需要单击两次

我有一个带有以下HTML标记的自定义单选按钮组件:

<div id="app">
{{message}} - {{sex}}
<radio value="m" v-model="sex" name="sex">Male</radio>
<radio value="f" v-model="sex" name="sex">Female</radio>
</div>
Run Code Online (Sandbox Code Playgroud)

组件(和应用程序)的定义如下:

Vue.component('radio', {
    model : {
      prop:'checked',
      event:'change'
    },
    props : {
      value:null,
      name:String
    },
  data : () => ({
    val:''
  }),
  methods : {
    update (e) {
        this.$emit('change',e.target.value);
    }
  },
  template:'<div><input :value="value" :name="name" type="radio" v-model="val" @change="update"><slot></slot></div>'
})

var app = new Vue({
  el: '#app',
  data: {
    message: 'selected:',
    sex:''
  }
})
Run Code Online (Sandbox Code Playgroud)

jsFiddle

它可以正确切换单选按钮(大部分情况下)。

问题:为此,我必须单击“男性”单选按钮两次。我只想单击一次即可切换它们。也许我没有正确使用此处model描述的属性?

我看到了这个问题,但是它使用了较旧的Vue(没有model属性),并且我不想在父级上捕获@change(单独组件背后的整个思想是尽可能多地抽象逻辑)

更新:对于任何有兴趣 …

radio-button vue.js vue-component vuejs2

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

升级到vue-cli 3后HTML中的空格消失了

我使用的是vue cli 2,没有任何自定义配置。现在,我升级到cli3,并且在已处理的HTML中注意到它删除了所有空格。例如,如果我的原始html是这样的:

<div class="link">
    <i class="fa fa-lg" :class="item.icon"/>
    <span class="hidden-sm hidden-xs">{{item.name}}</span>
</div>
Run Code Online (Sandbox Code Playgroud)

旧的(cli 2 + webpack)会将其转换为:

<div class="link"><i class="fa fa-lg fa-calendar"/> <span class="hidden-sm hidden-xs">CALENDAR</span></div>
Run Code Online (Sandbox Code Playgroud)

而新的这样做:

<div class="link"><i class="fa fa-lg fa-calendar"/><span class="hidden-sm hidden-xs">CALENDAR</span></div>
Run Code Online (Sandbox Code Playgroud)

请注意,该空间已消失,<span class...这导致了以下原因:

有空间

成为这个:

没有空间

我的vue.config.js很基本:

// vue.config.js
module.exports = {
  runtimeCompiler: true
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以&nbsp;对html本身进行添加或更改,但是该应用程序很大,要查找所有这些地方将需要几天的时间。

有人知道我需要确保采用与旧cli + webpack组合相同的方式优化html的选项吗?

webpack vue.js vue-cli

5
推荐指数
2
解决办法
807
查看次数