Lately, I needed to write some non-trivial component, and here are my experiences.
Don't be afraid of writing vue.js single file components
Vue.js documentation states:
This sentence is true, however vue-cli is super nice, and manages to hide most of the complexity.
vue-cli is a very nice project
I was astonished by the quality of vue-cli.
Giving such structure to the template is great, as when new vue version comes out, you can just upgrade it, alongside whole required tooling  (well I hope it will end this way)
vuex is almost always a good thing
vuex is a tool that lets you streamline state management.
vuex documentation says:
Although Vuex helps us deal with shared state management, it also comes with the cost of more concepts and boilerplate. It's a trade-off between short term and long term productivity.
If you've never built a large-scale SPA and jump right into Vuex, it may feel verbose and daunting. That's perfectly normal - if your app is simple, you will most likely be fine without Vuex.
In my experience, I have never regretted using vuex, while I regret not using it in a couple of projects. I might be skewed, as I tend to try not to use a component framework for simple interactions ;), so when I use it, it means that components will be complex.
You (most probably) don't need any kind of requests library
When I started doing web development the best (and only!) way for doing asynchronous requests in a webpage was XMLHttpRequest which was so ugly nobody used it without some wrapper to make it sane.
All request libraries I found on npm were, hmm, heavyish (in terms of kb's added), but mostly we don't need them now. There is beautiful, modern, built-in, working on ~90% of browsers document.fetch so if you don't care for IE, opera mini and Blackberry Browser  (according to caniuse.com) just use it. And if you need to support them there are polyfills available.
Explanation of terms used in this post
- A "state management" library for vue. That is a library that makes state management easier.
- In frontend development, polyfill is a code that implements a feature on a browser that doesn't implement it natively.
This might not be obvious why such an approach is a good thing, my experience is that often scaffolding code from template projects doesn't age well (or rather: rots quite fast).
While I'm 100% comfortable maintaining template code from e.g. cookiecutter-django project, maintaining webpack config files is a little out of my comfort zone.
|||Obviously throwing away 15% if potential costumers might not be a best idea, on the other hand, all desktop browsers released in the last two years support fetch.|