@arrkid/vue-wrapper-framework v1.1.3
Vue Wrapper Framework
A flexible and modular Vue.js framework for building micro-frontend applications with TypeScript support. This framework enables you to create scalable applications by dynamically importing independent features as needed.
Features
- šÆ Dynamic micro-frontend loading
- š Type-safe with full TypeScript support
- šØ Customizable theming
- š¦ Pre-built modular components
- š ļø CLI tools for project management
- š Easy-to-use plugin system
- š± Responsive design ready
Installation
# Create a new project
npx @arrkid/vue-wrapper-framework create my-app
# Navigate to project directory
cd my-app
# Start development server
npm run devAvailable Features
Currently, the framework includes two pre-built features:
Feature A: Counter
A simple counter component demonstrating state management and event handling.
npx vue-wrapper import featureAFeature B: Todo List
A fully functional todo list with add, remove, and toggle capabilities.
npx vue-wrapper import featureBBasic Usage
<template>
<FrameworkWrapper :config="config">
<template #header>
<nav>
<!-- Your navigation -->
</nav>
</template>
<router-view></router-view>
<template #footer>
<footer>
<!-- Your footer -->
</footer>
</template>
</FrameworkWrapper>
</template>
<script setup lang="ts">
import { FrameworkWrapper } from '@arrkid/vue-wrapper-framework';
const config = {
features: ['featureA', 'featureB'],
theme: {
primary: '#42b883',
secondary: '#35495e'
}
};
</script>Configuration
The framework accepts a configuration object with the following options:
interface WrapperConfig {
// List of features to load
features?: string[];
// Theme configuration
theme?: {
primary: string;
secondary: string;
};
}Creating Custom Features
- Create a new feature module:
import type { FeatureModule } from '@arrkid/vue-wrapper-framework';
const myFeature: FeatureModule = {
name: 'myFeature',
component: MyComponent,
routes: [
{
path: '/my-feature',
component: MyComponent
}
],
async setup() {
// Initialization logic
}
};
export default myFeature;- Register your feature in the wrapper configuration:
const config = {
features: ['myFeature'],
// ... other config options
};CLI Commands
# Create a new project
npx vue-wrapper create my-app
# Import features
npx vue-wrapper import featureA featureB
# Add a new feature (scaffolding)
npx vue-wrapper generate feature my-featureProject Structure
my-app/
āāā src/
ā āāā components/
ā ā āāā FrameworkWrapper.vue
ā āāā features/
ā ā āāā featureA/
ā ā āāā featureB/
ā āāā core/
ā ā āāā createApp.ts
ā ā āāā featureLoader.ts
ā ā āāā store.ts
ā āāā types/
ā āāā index.ts
āāā package.json
āāā vite.config.tsDevelopment
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run build
# Run tests
npm testBest Practices
Feature Independence: Each feature should be self-contained with its own components, styles, and logic.
Type Safety: Always use TypeScript interfaces and types for component props and state.
Error Handling: Implement error boundaries and loading states for feature imports.
Performance: Use lazy loading for features that aren't immediately needed.
Contributing
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Support
For support, please: 1. Check the documentation 2. Open an issue 3. Submit a feature request 4. Contribute to the project
Acknowledgments
- Vue.js team for the amazing framework
- All contributors who have helped shape this project
- The Vue community for inspiration and support
Author
- GitHub: @eliemugenzi
- npm: @eliemugenzi
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago