In my job as a consultant, I often code review Vue applications. It is common to me to see views with a lot of business logic and computed values. This isn't necessarily a bad thing, but can incur technical debt.
As you likely know if you've read my blog before, I have spent the last decade or so creating courses to be viewed on Pluralsight. I love making these kinds of video-based courses, but I've decided to get back to instructor led training a bit.
If you've heard me talk about Vite in the past (and so commonly mispronouce it), you know I am a fan. With many Vue, React and SvelteKit applications are moving to Vite, I've been investigating how to integrate it for development and production into ASP.NET Core applications. Let's see what I found out.
After discussing this topic with a client, I realized that my old method of hosting SPAs in ASP.NET Core didn't handle resources correctly, so I dug in and came up with **yet another** technique. This one is the simpliest and the least intrusive and works better than most. Let me know what you think about it:
I'm happy to see that instead, they've adopted Pinia as an alternative. I am not in love with Pinia (as I use reactive objects more often) but for complex scenarios it reminds me of something closer to the Composition API.
I went on the WebRush podcast (with John Papa and Dan Whalin (et al.)) and had a discussion about reactive() and ref() in the Composition API that resulted in this video.
I finally got to speak at a live event! This week I headed to Kansas City for KCDC, one of my favorite regional events.
I'm finally finishing up my studio/office in the house. With that, I'm getting back to making my "Coding Shorts" videos. If you're enjoying them, please let me know.
I blame Joseph Guadagno. His post on how to setup a coding stream made it look too easy. So I'm diving in. I'm going to be live coding every Wednesday at 1pm (UTC-4).
If you've not noticed, I've been doing more video these days. I'm doing a weekly show called "Coding Shorts" where I cover topics that aren't course lengthed. The newest entry in this series is a demo of why I like Vue's Composition API. I convert an Options API to a Composition API and show you why I'm moving most of my Vue work to it.
Over three years ago I launched a new option for learning at my company's website (https://courses.wilderminds.com). I was really excited to be able to create courses that weren't the mold of my Pluralsight courses. I wanted to be able to experiment with different ways of teaching people how to code.
If you've seen my projects or courses over the last few years, I had been advocating for using NPM for client-side libraries and SPAs at the same time. This caused the need to merge generated packages.json files. This added to the complexity. In addition, to handle the client-side libraries with NPM, you needed a way to both read the node_modules folder during development. This was handled with some middle-ware created by the late, great @OdeToCode (K. Scott Allen).
Running a build for your Vue is a common task for many Vue developers. The team behind Vue has been working on a development server to simplify this. This project is called Vite.
I've talked about how the term SPA annoys me. I think that client-side frameworks are great for expanding websites, not replacing them. With that in mind, I like the idea of a handful of client-side apps enhancing websites, but not every framework makes that easy.
So many of the Vue demos I've seen fail to look at the authentication use case. For some of my course demos I've had to dig into it.
Vuelidate is reworking their project in light of Vue 3's release. It is only in Alpha, but I like the approach and integrated it into my Microservice demo I'm working on.
In the several years that I've been developing and teaching Vue, I've tried a lot of different ways to make ASP.NET Core and Vue play nice with each other. One of the strategies that I've seen employed (especially with Angular and React) is the Spa Framework Extensions out of Microsoft. Because Vue didn't work out of the box (or have a template) I dismissed this approach for a long time. Now that the platform has matured and there is an open source extension for Vue,
I've been digging into Vue 3 a lot lately. One topic that a lot of people seem to be discussing whether to use Vuex or not in Vue's Composition API (that is prominent in Vue 3).
I've been working with Vue 3 Beta and RC (currently in RC5) and early on I needed some validation but the Vue stalwards of vuelidate and vee-validate weren't working with the Composition API early on. What was I do to?
I've been digging into Vue 3's beta for a while now. I like the new composition API, but it looks like there weren't that many quickstarts for getting a Vue 3 project going.
In my spare time, I've been working on a micro-services example to try and make a minimum viable micro-service using ASP.NET Core. To make things that much harder, I've also decided to use Vue 3 for the front end. In for a penny, in for a pound.
Yet another of my talks that resulted from being bored at home and on Twitter. I had a great time talking to this great group.
I recently offered my speaking skills on Twitter since I'm stuck at the house. My wife really wants me out of the house, but luckily I like the sound of my own voice enough that virtual talks fill that same void.
As Vue 3 continues it's relentless Beta drive (with almost daily Beta builds), all of us Vue developers have to get ready for changes. The one I want to mention today is the changes in mounting a new Vue object.
With Vue 3 now in beta, some people are starting to look into it deeper (including me). While a lot of the features are meant to improve the performance and speed, the Vue team did decided to take out a feature lots of people use: filters.
I was delighted to spend some time today at Connect.Tech conference. Great web conference and it was packed. So many excited people who wanted to talk about web technologies!
I've been updating the CoreCodeCamp project (the basis for the Atlanta Code Camp's website) for this year's Code Camp. Most of the changes are under the covers, but I wanted to talk about what I learned.
I've been updating the Atlanta Code Camp website to improve our administration workflow. With the Call for Speakers coming up soon, I wanted to make sure we had a good way of picking only the best talks.
There is a lot of buzz around the internet about Vue.js 3.0's announcement about a new composition model. There are a lot of questions about it and I think much of it is 'they moved my cheese' more than 'they're breaking everything'.
I've had a great time this week attending two events and talking about things I love: .NET and Vue.
One of the first times I started working with Vue, I was concerned about it's long-term success. I was coming from Angular and their ecosystem is huge.
I've been writing demos for Vue, Angular, and React for my SignalR micro-courses over on my Wilder Minds site. For Angular and React, I started out with the the SPA templates, but I found them confusing and hard to do a minimal example.
If you're using Vuex for state management in your Vue.js applications, there is a good chance that you need to use async operations (e.g. API calls). I have been doing this a while, but falling back to using Promises in most cases.
I have to admit, my first experiences with React several years ago were meet with a lot of cynicism. The idea of mixing JavaScript and Markup made me clutch my pearls to the core.
As many of my readers already know, I've become enamoured with Vue.js. Because of this, I've been using it more and more on projects.
If you're building larger scale Vue objects and you're not using Vuex to centralize your state, please stop and go learn Vuex. Really. For those of you still here, sometimes it's helpful to be able to monitor state changes to perform other tasks. For example, to send messages or communicate with servers that aren't about state (e.g. SignalR is a good example). That's where Vuex plugins come in. A Vuex plugin is a simple function that is called once during the setup of a Vuex store. Typically you'd just create the function/arrow function taking an instance of the store:
I'm back writing again. I've missed it. You'll see more and more articles in different publications from me in the near future.
I had the opportunity to speak at the Atlanta Vue Meetup recently. This was a great group of people who had mostly had experience with Vue.js.
I had a great time presenting to the Atlanta .NET Users' Group last night. I talked about where I think Vue.js.
The Vue team has been working hard. Much like Angular, the Vue team has a command-line interface (CLI) to help develop projects with Vue.
After spending most of my time creating online courses, I realized I missed the gratification that I get from face-to-face training. I've decided to do 3-4 workshops a year.
If you're not in the south part of the Netherlands, you might have missed my most recent appearance last night. Great hosts, guests and sponsors make the night and easy and fun talk.
Finally heading home from about a month of conferences! I can't wait to get back to my own bed, but in the mean time I've had a great time sharing talks with a lot of European developers!
Just got home from Music City Code conference had a great time catching up with attendees and other speakers. If you haven't made it to this great Nashville event before, plan for next year. It's well worth it.
In case you haven't been following on Twitter, you might not know that I've been working on a Vue course for a couple of months now. This particular course is now available as an Early Access model I'm trying out.
Orlando during Spring Break probably wasn't the best idea, but luckily I got to go to the Orlando Code camp instead of fighting people at Disney.
I've been digging into Vue.js a lot lately. I'm working on a new course on it that will be released on May 1st.
As many of you know, I've been making courses for Pluralsight for a long time now. I think my first course was released in 2011.