我有一个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)
有没有办法强制它每次加载新代码或(理想情况下)检查旧文件是否从服务器中消失,然后刷新浏览器?
我在开发模式下运行Vue,每次加载页面时都会收到此消息:
"您正在开发模式下运行Vue.确保在部署生产时打开生产模式.请参阅https://vuejs.org/guide/deployment.html上的更多提示 "
有没有办法在不切换到生产模式的情况下禁用它?
我有一个标题:
<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>
在其他视口上.
我有一个具有以下状态的vuex商店:
state: {
authed: false
,id: false
}
Run Code Online (Sandbox Code Playgroud)
在组件内部,我想监视authed
状态的变化并向服务器发送AJAX调用.它需要在各种组件中完成.
我尝试过使用store.watch()
,但无论何时发生变化id
或authed
发生变化.我也注意到,它不同于vm.$watch
你不能指定一个属性.当我试图这样做:
store.watch('authed',function(newValue,oldValue){
//some code
});
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误:
[vuex] store.watch only accepts a function.
任何帮助表示赞赏!
我试图将类中的一个字段限制为枚举。但是,当我尝试从课堂上获取字典时,它不会转换为字符串。相反,它保留了枚举。我检查了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'}
我正在尝试在服务器上接收 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 时我需要它立即退出
我的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 文件中有一个组件,可以从重用代码块中受益。我知道我可以将该代码移动到单独的 .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)
但是,据我所知,这是不可能的。
我有一个带有以下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)
它可以正确切换单选按钮(大部分情况下)。
问题:为此,我必须单击“男性”单选按钮两次。我只想单击一次即可切换它们。也许我没有正确使用此处model
描述的属性?
我看到了这个问题,但是它使用了较旧的Vue(没有model
属性),并且我不想在父级上捕获@change(单独组件背后的整个思想是尽可能多地抽象逻辑)
更新:对于任何有兴趣 …
我使用的是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)
我知道我可以
对html本身进行添加或更改,但是该应用程序很大,要查找所有这些地方将需要几天的时间。
有人知道我需要确保采用与旧cli + webpack组合相同的方式优化html的选项吗?