我使用 Yarn 安装了 Quasar 框架:
yarn global add @quasar/cli
但是安装似乎存在问题,我现在需要删除全局包。我检查了 Yarn 文档,他们有一个删除命令,但它似乎不是全局的。我知道 NPM 允许全局删除:
npm uninstall -g @quasar/cli
我怎样才能用 Yarn 做同样的事情?
很简单,我想在调试时禁用浏览器控制台中出现的重复工作箱消息的显示。例如,我不需要看到:
WorkBox: Using NetworkFirst to respond to '/fonts/KFOlCnqEu92Fr1MmEU9fBBc-.woff'
Run Code Online (Sandbox Code Playgroud)
它弄乱了我的 FireFox 控制台,这是我非常不喜欢的东西。如果你喜欢它,好吧,请不要试图改变我对这些无用(对我而言)消息的好处的看法。你知道怎么关掉吗?为了提供信息,我使用 Quasar 和 Vue 来创建 SPA - 甚至不是 PWA。谢谢。
在IntelliJ中,您可以设置目标Java版本,如下所示:
不幸的是,我没有看到我可以为Kotlin做同样的事情.这使得我无法使用Quasar-Kotlin.我想切换到M14,即使我安装了1.0 beta.我怎么能改回来?
将build.gradle
文件更改回M14后,我的项目中出现了编译错误.
我的build.gradle
:https://gist.github.com/Jire/5b517fd767ad498bc18f
我最近读到了Quasar,它为JVM提供了"轻量级"/类似Go的"用户模式"线程(它还有一个像Akka一样的Erlang启发的Actor系统,但这不是主要问题)
例如:
package jmodern;
import co.paralleluniverse.fibers.Fiber;
import co.paralleluniverse.strands.Strand;
import co.paralleluniverse.strands.channels.Channel;
import co.paralleluniverse.strands.channels.Channels;
public class Main {
public static void main(String[] args) throws Exception {
final Channel<Integer> ch = Channels.newChannel(0);
new Fiber<Void>(() -> {
for (int i = 0; i < 10; i++) {
Strand.sleep(100);
ch.send(i);
}
ch.close();
}).start();
new Fiber<Void>(() -> {
Integer x;
while((x = ch.receive()) != null)
System.out.println("--> " + x);
}).start().join(); // join waits for this fiber to finish
}
}
Run Code Online (Sandbox Code Playgroud)
据我所知,上面的代码没有产生任何JVM /内核线程,所有这些都是在用户模式线程中完成的(或者他们声称)这应该更便宜(就像我正确理解的Go一样)
我的问题是 - …
我正在使用 Vue3 和组合 API。在表单组件中,我在每个字段(子组件)上放置了引用。
\n由于某些原因,ref
自定义组件的 与ref
Quasar 组件的 不同。
当我console.log
使用ref
自定义组件时,我在 DevTools 中得到以下信息:
Proxy\xc2\xa0{__v_skip: true} \n
Run Code Online (Sandbox Code Playgroud)\n(Target 中没有任何属性)
\n而对 Quasar 组件的引用给出了:
\nProxy\xc2\xa0{\xe2\x80\xa6} \n
Run Code Online (Sandbox Code Playgroud)\n(包含 Target 中组件的所有属性)
\n因此,我无法使用ref
来访问这些子组件的属性或方法。
我什至不知道是什么__v_skip
意思。\n我的自定义组件是用 定义的script setup
,这可能是一个原因吗?
知道如何解决这个问题吗?
\n更新\n如果我defineExpose
在子组件中使用我想使用 a 从外部访问的属性和方法ref
,它确实有效。但不太方便,因为这些组件有很多道具。
我有一个Vue组件,它使用多个子组件.在这些子组件上,我有一个观察数据变化并处理这些变化的观察者.我想为此实施去抖动.
watch: {
data: {
handler: function () {
this.processData()
},
deep: true
}
},
methods: {
processData: debounce(function () {
console.log(this.id)
}, 250),
Run Code Online (Sandbox Code Playgroud)
问题是debounce有效,所以它只在最后一个子组件上执行.
我找到了一个debounce函数的解决方案,可以接受额外的id debounceWithId
但问题是,如果我指定此函数如下:
methods: {
processData: debounceWithId(function () {
console.log(this.id)
}, 250, this.id),
Run Code Online (Sandbox Code Playgroud)
最后一个this.id未定义.
在多个组件中使用去抖动的正确方法是什么,因此该函数会在每个组件上单独触发?
在大多数Vue.js教程中,我看到类似的东西
new Vue({
store, // inject store to all children
el: '#app',
render: h => h(App)
})
Run Code Online (Sandbox Code Playgroud)
但我正在使用vue-cli(我实际上正在使用类星体)并且它为我声明了Vue实例,所以我不知道我应该说我想store
成为一个"Vue-wide"全球变量.我在哪里指定?谢谢
这是我第一次使用quasar,我根据文档(https://quasar-framework.org/guide/app-installation.html)使用Quasar CLI创建一个项目
? quasar init quasar_demo
Running command: vue init 'quasarframework/quasar-starter-kit' quasar_demo
? Project name (internal usage for dev) quasar_demo
? Project product name (official name) Quasar App
? Project description A Quasar Framework app
? Author
? Check the features needed for your project: ESLint, Vuex, Axios, Vue-i18n, IE11 support
? Pick an ESLint preset Standard
? Cordova id (disregard if not building mobile apps) org.cordova.quasar.app
Run Code Online (Sandbox Code Playgroud)
上面的最后一条命令告诉我输入Cordova ID,这是什么Cordova id
,我在哪里可以得到它?
我需要我的 q-select 根据之前分配的“id”来选择“名称”。目前,输入显示的是数字“id”,而不是它所属的名称。
<q-select
class="text-uppercase"
v-model="model"
outlined
dense
use-input
input-debounce="0"
label="Marcas"
:options="options"
option-label="name"
option-value="id"
emit-value
map-options
@filter="filterFn"
@update:model-value="test()"
>
<template v-slot:no-option>
<q-item>
<q-item-section class="text-grey"> No results </q-item-section>
</q-item>
</template>
</q-select>
Run Code Online (Sandbox Code Playgroud)
示例 我希望在 q-select 中显示已加载的 id: 12 的名称。
const model = ref(12);
const options = ref([]);
const filterFn = (val, update) => {
if (val === "") {
update(() => {
options.value = tableData.value;
});
return;
}
update(() => {
const needle = val.toLowerCase();
options.value = tableData.value.filter((v) =>
v.name.toLowerCase().includes(needle)
);
}); …
Run Code Online (Sandbox Code Playgroud)