@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
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago