I have amazing news: CodeSnap v3 is live! 🚀 It's a full refactor, now built with my upcoming Nuxt starter kit, powered by NuxtHub and Nuxt UI Pro . With this switch, I also drastically reduced monthly costs by moving from Supabase to Cloudflare D1.
To celebrate the launch, you can grab the lifetime deal at 50% off using the code UXMT1HGC. Now I can finally focus on wrapping up the starter kit and (hopefully) release it in the coming weeks or months!
👉🏻 The development of Vue + Lynx represents an exciting opportunity for Vue developers to build truly native mobile applications while leveraging their existing web development skills.
👉🏻 In this article, you'll learn about all the things that are involved in the build process of a Vue.js app (or a React.js app), including Vite, esbuild, Rollup, and the up-and-coming tool called Rolldown.
👉🏻 "Nuxt Content Narrator" brings a new dimension to your content by making it accessible through high-quality voice narration with very little effort.
👉🏻 Throughout this tutorial, you'll build an app to put concepts into practice.
💡 Pinia Tip: Subscribing to State Changes
If you use Pinia , you can watch the state and its changes through the $subscribe()$subscribe() method of a store.
The advantage of using $subscribe()$subscribe() over a regular watch()watch() is that subscriptions will trigger only once after patches (e.g. when using the function version from above).
1cartStore.$subscribe((mutation, state) => {2 // import { MutationType } from 'pinia'3 mutation.type // 'direct' | 'patch object' | 'patch function'4 // same as cartStore.$id5 mutation.storeId // 'cart'6 // only available with mutation.type === 'patch object'7 mutation.payload // patch object passed to cartStore.$patch()89 // persist the whole state to the local storage whenever it changes10 localStorage.setItem('cart', JSON.stringify(state))11})
👉🏻 Lazy loading of background images can be done using the IntersectionObserver API, which monitors when offscreen images are about to become visible in the viewport and then loads them.
👉🏻 The Supabase UI Library has pre-built, shadcn/ui-based components and blocks that simplify the connection of front-end interfaces to Supabase backends.
👉🏻 It has features like authentication, realtime updates, and file uploads.
If you're using Vue 3, you're probably using composables. But other than using VueUse where you can, how do you get the most out of them? Over the past few years I've been slowly putting together a list of patterns and best practices for how to write composables in the best way. I've spent hours reading the source code of VueUse (one of the best — but most time-consuming — ways to learn it). I've read articles, listened to talks, and written lots and lots of my own code. I ended up with 15 different patterns, and each one will help you to write better composables. I've condensed and put all of these composables together into a course — Composable Design Patterns. Get Composable Design Patterns now. Because this is the launch, it's on sale for 35% off until Thursday. For each of the 15 patterns in this course, you'll get: A concise overview that tells you when and how to use it, along with variations and edge cases ...
Weekly Vue News #194 Reactive Time Ago View online Hi 👋 I'm on vacation this week, so no special news from my side — just some fresh Vue & Nuxt content for you! Enjoy this issue and have a lovely week ☀️ Vue 📕 Optimizing heavy operations in Vue with Web Worke...
Read this on my blog We made it to 200! Thanks for reading and supporting me over the last few years, it means a lot to me. Tomorrow is the last day of the Composable Design Patterns course launch and the 35% off discount. If you were hoping to pick it up, don't forget to check it out! As always, I've got some tips and links for you, and a new podcast episode. Enjoy, and have a great week! — Michael 🔥 Default Content with Slots You can provide fallback content for a slot, in case no content is provided: < !-- Child.vue --> < template > < div > < slot > Hey! You forgot to put something in the slot! < / slot > < / div > < / template > This content can be anything, even a whole complex component that provides default behaviour: < !-- Child.vue --> < template > < div > < slot name = "search" > < !-- Can...
评论
发表评论