A vue3 scalable (and absolutly overkill) application fetching data from catfact.ninja rest API
this application serves as a demonstration on how to configure and use vuejs in frontend as part of a large fullstack application
it features:
- element-plus + icons: componenent library for vue3 + icons
- vueuse + integrations: composable wrappers for vue3 (and axios integration)
- axios: used to request the API
- pinia: state management (not needed yet)
- sass: css but better (mainly used to forward variables in this demo)
- vue (of course)
- vue-router: used to fake navigation in the single page application
- typeScript: strong typing
- vitest: unit testing
- elslint and prettier for code style and syntax
What you can see in this application yet:
- Correct way to fetch async data and display it
- well organized files and folders
- every non specific libraries you need for a scalable vue3 app
VSCode + Volar (and disable Vetur) + TypeScript Vue Plugin (Volar).
If you don't use anything yet to make your file explorer more readable i would suggest using Material Icon Theme
TypeScript cannot handle type information for .vue
imports by default, so we replace the tsc
CLI with vue-tsc
for type checking. In editors, we need TypeScript Vue Plugin (Volar) to make the TypeScript language service aware of .vue
types.
If the standalone TypeScript plugin doesn't feel fast enough to you, Volar has also implemented a Take Over Mode that is more performant. You can enable it by the following steps:
- Disable the built-in TypeScript Extension
- Run
Extensions: Show Built-in Extensions
from VSCode's command palette - Find
TypeScript and JavaScript Language Features
, right click and selectDisable (Workspace)
- Run
- Reload the VSCode window by running
Developer: Reload Window
from the command palette.
See Vite Configuration Reference.
npm install
npm run dev
npm run build
Run Unit Tests with Vitest
npm run test:unit
Lint with ESLint
npm run lint