vue3+vite+js+router+vueX+组件一键导入(源码)

一、前言

  • 一直想自己做一个简单脚手架,方便自己做点简单的demo
  • 网上开源也找不到,大多数都是太重了,或者又太轻了
  • 今天把这个几个都揉在一起,方便后面做点小玩意

二、项目包

vite-project.zip - 蓝奏云文件大小:8.8 M|https://wwwf.lanzout.com/ik7CN0zrhlwd


三、脚手架搭建

3.1、安装 Node.js >=12.0.0(环境配置)

自行百度

3.2、创建vite项目

1、项目创建

npm create vite@latest

 

2、接下来按照这几个提示进行

3、创建完成——运行项目

 

 

 

3.3、集成vue-router

1、安装官方插件

 npm install vue-router@4.0.15

2、创建文件(用来存放router设置)--要修改对应的路径!

//引入配置文件 
import { createRouter, createWebHistory } from 'vue-router'

//配置router与组件之间的对应关系
const router = createRouter({
	
    history: createWebHistory(), // 必须得有history不然启动不了!!!
    routes: [
        {
            path:'/',
            component: () => import('../views/index/index.vue') // 对应的路径自行修改
        },
        {
            path:'/login',
            component: () => import('../views/login/login.vue') // 对应的路径自行修改
        },
		{
            path:'/user',
            component: () => import('../views/user/user.vue')  // 对应的路径自行修改
        },
    ]
})

//导出路由对象  使用路由的地方引入即可  一般在入口main.js中使用
export default router;

3、创建对应的页面

<template>
  <div>index</div>
</template>

4、main.js引入

import { createApp } from 'vue';
import App from './App.vue';
import router from './router';

const app = createApp(App);
app.use(router);

5、App.vue改写

<template>
  <router-view></router-view>
</template>

<style></style>

路由集成完成啦!!!

推荐视频:(但是这个是TS的哟!

小满vue3-Router4教程_哔哩哔哩_bilibili小满vue3-Router4教程共计14条视频,包括:小满Router(第一章-安装)、小满Router(第一章-路由模式)、小满Router(第二章-命名路由-编程式导航)等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV1oL411P7JX

 3.4、集成vueX

1、安装插件

npm install vuex@next
npm install vuex-persistedstate

2、创建文件夹 

import createPersistedState from 'vuex-persistedstate';
import { createStore } from 'vuex';

const store = createStore({
    state() {
        return {
            counter: 5,
            user: null
        };
    },
    mutations: {
        increment(state) {
            state.counter++;
        },
        setUser(state, user) {
            state.user = user;
        }
    },
    actions: {
        async fetchUser({ commit }) {
            const response = await fetch('https://api.pan.com/user');
            const user = await response.json();
            commit('setUser', user);
        }
    },
    getters: {
        doubleCounter(state) {
            return state.counter * 2;
        }
    },
    // 持久化存储将保存整个Vuex Store的状态
    plugins: [createPersistedState()]
});

export default store

3、main.js使用

app.use(router).use(store)

4、vue页面——实现持久化存储

<template>
	<div>
		<p>Counter: {{ $store.state.counter }}</p>
		<p>User: {{ $store.state.user }}</p>
		<p>Double Counter: {{ $store.getters.doubleCounter }}</p>
		<button @click="$store.commit('increment')">Increment</button>
		<button @click="$store.dispatch('fetchUser')">Fetch User</button>

	</div>
</template>

<script>
export default {

}
</script>

<style></style>

 3.4、自定义组件(一键全局注册)

1、创建组件

 

2、main.js一键全局注册

// 导入 component 目录下的所有组件
const componentFiles = import.meta.globEager('./components/*.vue');
Object.entries(componentFiles).forEach(([path, component]) => {
    const componentName = path.match(/\.\/components\/(.*)\.vue$/)[1];
    app.component(componentName, component.default);
});

附:单个全局注册方法

// 普通导入组件
// import MyButton from './components/my_btn.vue';
// app.component('my_btn', MyButton);

对于组件库——有全部引入和按需引入——具体看组件库的说明文档!

路由传参


<template>
	<div>
		<!-- home -->
		<div>Home</div>

		<!-- 路由跳转 -->
		<my_btn @click="toPage('/user')">Go to User</my_btn>
		<my_btn @click="toPage('/login')">Go to login</my_btn>

		<my_btn type="primary" text="开始"></my_btn>
		<my_btn type="warning" text="警告"></my_btn>
		<my_btn type="success" text="开始"></my_btn>
		<my_btn type="error" text="开始"></my_btn>
	</div>
	
</template>
  
<script>
// import { useRouter } from 'vue-router';
import { ref, provide } from 'vue';

export default {
	data() {
		obj: {
			nested: { count: 0 };
			arr: ['foo', 'bar']
		}


		return {
			count: 0
		}
	},

	methods: {


		// 跳转到指定页面
		toPage(routePath) {
			const student = { name: 'Max', age: 10 };

			this.$router.push({

				path: routePath,
				// query这个本身就是一个对象
				query: {
					// 在这里添加参数
					parameterName: '在这里添加参数',
					student: JSON.stringify(student)
				},
			});
		},
	},
};
</script>

<style></style>

评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

peter123123123123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值