UNPKG

@kovalson/prevue

Version:

A Vue 3 package based on Pinia that helps to manage resource models.

78 lines (60 loc) 2.17 kB
# Prevue Prevue (pronounced as "preview") is a Vue 3 package based on Pinia that helps to manage BREAD/CRUD data exchange with external servers. The Prevue idea roots from Pinia-ORM package and tries to take the most of its strengths while simplifying usage. See the [full documentation](https://prevue.kovalson.dev). ## Quick example Take a quick look at Prevue in action. First define a resource model: ```typescript import { defineController, Model } from '@kovalson/prevue'; // Define resource model with defaults class User extends Model { protected $convertCase = true; readonly id: string = ''; readonly firstName: string | null = null; readonly lastName: string | null = null; readonly email: string = ''; readonly active: boolean = false; } // Define a controller const useUserController = defineController(User); // Export required objects export { User, useUserController, }; ``` Then use it wherever you like: ```vue <template> <div> <template v-if="repository.isNotEmpty()"> <UserCard v-for="user of repository.all()" :key="user.id" :user="user" /> </template> <UsersNotFound v-else /> </div> </template> <script lang="ts" setup> import UserCard from '~/components/user/UserCard.vue'; import UsersNotFound from '~/components/user/UsersNotFound.vue'; import { useUserController } from '~/models/User'; const { fetchAll, repository } = useUserController(); fetchAll(); </script> ``` Note several things in the example above: - The `fetchAll()` method will automatically make an API request and await the response. - The response is automatically converted into an array of `User` objects. - The objects are automatically saved in the `repository` that instantiates Pinia store by default (though it can be a local repository as well). - The `$convertCase` property will cause the incoming response object keys to be automatically converted to `camelCase` so that every model stays consistent throughout the app. This was a basic usage example. See the [full documentation](https://prevue.kovalson.dev) to learn more on how Prevue can make your coding easier.