title | date | author | gravatar | hidden | |
---|---|---|---|---|---|
Vue 3 将成为新的默认版本 |
2022-01-20 |
尤雨溪 |
eca93da2c67aadafe35d477aa8f454b8 |
@youyuxi |
true |
划重点:Vue 3 将在 2022 年 2 月 7 日成为新的默认版本!
<div id="app"> | |
<button id="reset">reset</button> | |
<button id="outer">no leak</button> | |
<div id="container"> | |
<button id="inner">leak</button> | |
<span>1</span> | |
<span>2</span> | |
<span>3</span> | |
<span>4</span> | |
<span>5</span> |
title | date | author | gravatar | hidden | |
---|---|---|---|---|---|
Vue 3 将成为新的默认版本 |
2022-01-20 |
尤雨溪 |
eca93da2c67aadafe35d477aa8f454b8 |
@youyuxi |
true |
划重点:Vue 3 将在 2022 年 2 月 7 日成为新的默认版本!
compilerOptions
when using runtime compiler (ce0bbe0)app.config.compilerOptions
(091e6d6)// example vite.config.js | |
import { cdn } from './vite-plugin-cdn' | |
export default { | |
plugins: [ | |
// also supported: esm.run, jspm | |
// loads the dep over the CDN during dev | |
// auto downloads and includes into the bundle during build | |
cdn('skypack', { | |
vue: '^3.0.5' |
<template> | |
<div class="jumbotron"> | |
<div class="row"> | |
<div class="col-md-6"> | |
<h1>Vue.js 3.0.0-alpha4 (keyed)</h1> | |
</div> | |
<div class="col-md-6"> | |
<div class="row"> | |
<div class="col-sm-6 smallpad"> | |
<button type="button" class="btn btn-primary btn-block" id="run" @click="run">Create 1,000 rows</button> |
/* App.svelte generated by Svelte v3.14.1 */ | |
/* After terser compression: min:6.00kb / gzip:2.43kb / brotli:2.15kb */ | |
const { | |
SvelteComponent, | |
append, | |
attr, | |
destroy_block, | |
detach, | |
element, | |
empty, |
<template> | |
<div id="demo"> | |
<h1>Latest Vue.js Commits</h1> | |
<template v-for="branch in branches"> | |
<input type="radio" | |
:id="branch" | |
:value="branch" | |
name="branch" | |
v-model="currentBranch"> | |
<label :for="branch">{{ branch }}</label> |
This change only affects render function users. If you only use templates, you can ignore this change.
In render functions, scoped slots are exposed on this.$scopedSlots as functions. Up until now, calling a scoped slot function can return a single VNode or an Array of VNodes based on what the parent component is passing in. For example, given this component:
const Child = {
export default { | |
async mounted() { | |
// if an async error is thrown here, it now will get | |
// caught by errorCaptured and Vue.config.errorHandler | |
this.posts = await api.getPosts() | |
} | |
} |