This week is the Vue.js Nation Conference (January 29-30), and it's free to register — don't miss out! 🎉
On my end, I've migrated both mokkapps.de and weekly-vue.news to Nuxt Content v3 and Nuxt UI Pro v3. Next up, I'll be continuing work on my Nuxt Starter Kit. Lots of exciting things ahead — stay tuned!
👉🏻 A new suite of open source UI components for Svelte, React, and Vue.
💡 Vue Tip: Use effectScope for Managing and Cleaning Up Reactive Effects
Vue provides the effectScope effectScope API to group and cleanup multiple reactive effects.
An EffectScope EffectScope instance can automatically collect effects run within a synchronous function so that these effects can be disposed together at a later time.
Let's take a look at a simple example:
1// effect, computed, watch, watchEffect created inside the scope will be collected23const scope = effectScope()45scope.run(() => {6 const doubled = computed(() => counter.value * 2)78 watch(doubled, () => console.log(doubled.value))910 watchEffect(() => console.log('Count: ', doubled.value))11})1213// Dispose of all effects in the scope14scope.stop()15
A practical application is the createSharedComposable createSharedComposable function in VueUse:
1import type { EffectScope } from 'vue'2import type { AnyFn } from '../utils'3import { effectScope } from 'vue'4import { tryOnScopeDispose } from '../tryOnScopeDispose'56/**7 * Make a composable function usable with multiple Vue instances.8 *9 * @see https://vueuse.org/createSharedComposable10 */11export function createSharedComposable<Fn extends AnyFn>(composable: Fn): Fn {12 let subscribers = 013 let state: ReturnType<Fn> | undefined14 let scope: EffectScope | undefined1516 const dispose = () => {17 subscribers -= 118 if (scope && subscribers <= 0) {19 scope.stop()20 state = undefined21 scope = undefined22 }23 }2425 return <Fn>((...args) => {26 subscribers += 127 if (!scope) {28 scope = effectScope(true)29 state = scope.run(() => composable(...args))30 }31 tryOnScopeDispose(dispose)32 return state33 })34}
This function creates a shared composable that efficiently manages side effects across multiple components. For example, using a useMouse useMouse hook, you can prevent multiple event listeners from being added:
1function useMouse() {2 const x = ref(0)3 const y = ref(0)45 function handler(e) {6 x.value = e.x7 y.value = e.y8 }910 window.addEventListener('mousemove', handler)1112 onUnmounted(() => {13 window.removeEventListener('mousemove', handler)14 })1516 return { x, y }17}1819const useSharedMouse = createSharedComposable(useMouse)
effectScope effectScope allows developers to manage reactive effects more efficiently and clearly. By leveraging this powerful feature, you can ensure your applications are not only more performant but also easier to maintain.
👉🏻 In this tutorial, you'll build a simple Nuxt application with Deno that will display a list of dinosaurs and allow you to learn more about each one when you click on the name.
👉🏻 Alexander Lichter is joined by Daniel Roe, full-time open source developer and lead of the Nuxt team to go through some notable events of 2024 in the Vue and Nuxt ecosystem.
👉🏻 Tailwind CSS v4.0 is a major release that focuses on performance improvements, with up to 5x faster full builds and over 100x faster incremental builds.
It's here! Learn to write better composables in Vue with my latest course. You can now grab Composable Design Patterns for 35% off during the launch . Check it out here . Composable Design Patterns is a collection of patterns to help you write better composables in Vue. The format is very similar to Clean Components Toolkit: Pattern overview — an in-depth explanation of the pattern, including edge cases, variations, and common pitfalls. Real-world example — an example using the pattern that goes beyond toy demos that don't really show you much. Step-by-step refactoring — see how to use this pattern by following a refactoring example worked out for you. The first three patterns are borrowed from Clean Components Toolkit, but the rest are completely brand-new, and exclusive to this course. (the last two patterns will be finished next week). Here's the link again if you'd like to know more: Composable Design Patterns in Vue ...
Tuesday, February 20, 2024 Journalists like everyone in America should pray President Biden stays healthy, because our only alternative is Putin. And btw in Russia, the non-government-owned news people had to leave, to go into exile. The journalists are playing with fire not just for us, but for themselves too. It's not ridiculous to ring the bells really loud about this because we've already lived through this nightmare once. # Surely there must be people inside the NYT that find this as exhausting as we do. How can we set up a receptacle for leaks from inside the NYT and WP so we can get the truth about who's selling us out to Trump and Putin inside those supposedly great public-serving news orgs? # I don't like Twitter/X -- it's stupid, it already had a perfectly good name. It is what it is. I use Twitter, I don't imagine stopping, certainly not as some kind of demonstration. But it isn't X or Twitter/X. It's just stupid old fucke...
评论
发表评论