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

news2024/12/23 18:17:42

一、前言

  • 一直想自己做一个简单脚手架,方便自己做点简单的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>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/674689.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SCTF2023 Barter 复现

题目描述&#xff1a; chal_sage部分&#xff1a; from Crypto.Util.number import * from random import * from secrets import flagdef gen_random(seed, P, Q, r_list, times):s seedfor i in range(times):s int((s * P)[0])r int((s * Q)[0])r_list.append(r)return…

E. Round Dance(dfs分辨特殊联通块)

Problem - 1833E - Codeforces 有 n 个人来到一个节日并决定跳几个“圆舞”。每个圆舞至少有 2 个人&#xff0c;且每个人恰好有两个邻居。如果圆舞中只有 2 个人&#xff0c;则它们在两侧拥有相同的邻居。 你想要确定有多少个“圆舞”可以跳。但是每个参与者只记得一个邻居。…

【自注意力机制必学】BERT类预训练语言模型(含Python实例)

BERT类预训练语言模型 文章目录 BERT类预训练语言模型1. BERT简介1.1 BERT简介及特点1.2 传统方法和预训练方法1.3 BERT的性质 2. BERT结构2.1 输入层以及位置编码2.2 Transformer编码器层2.3 前馈神经网络层2.4 残差连接层2.5 输出层 3. BERT类模型简要笔记4. 代码工程实践 1.…

利用python绘制端午节的各种图案,例如粽子,赛龙舟等,以及一些端午节的感人小故事

这里写目录标题 1、关于端午节的有趣故事2、关于端午节的趣闻3、利用python绘制龙舟3.1. 代码如下3.2 图形展示 4、利用python绘制大公鸡5、利用python来进行端午节的诗词对弈总结 1、关于端午节的有趣故事 端午节是一个历史悠久的中国传统节日&#xff0c;有很多有趣的故事与…

内存不够用,那你的内存去哪了?

一、前言 近几年开发了一些大型的应用程序&#xff0c;在程序性能调优或者解决一些疑难杂症问题的过程中&#xff0c;遇到最多的还是与内存相关的一些问题。例如glibc内存分配器ptmalloc&#xff0c;google的内存分配器tcmalloc都存在“内存泄漏”&#xff0c;即内存不归还操作…

原来Flutter代码是这样运行在原生系统的!快来了解Flutter标准模板,感受原生系统中Flutter的魅力!

通过Android Studio创建的Flutter应用模板&#xff0c;了解Flutter项目结构&#xff0c;分析Flutter工程与原生Android和iOS工程有哪些联系&#xff0c;体验一个有着基本功能的Flutter应用是如何运转的&#xff0c;从而加深你对构建Flutter应用的关键概念和技术的理解。 Dart只…

深入理解深度学习——GPT(Generative Pre-Trained Transformer):GPT-2与Zero-shot Learning

分类目录&#xff1a;《深入理解深度学习》总目录 相关文章&#xff1a; GPT&#xff08;Generative Pre-Trained Transformer&#xff09;&#xff1a;基础知识 GPT&#xff08;Generative Pre-Trained Transformer&#xff09;&#xff1a;在不同任务中使用GPT GPT&#x…

软考:软件工程:软件维护与项目管理

软考&#xff1a;软件工程:软件维护与管理 提示&#xff1a;系列被面试官问的问题&#xff0c;我自己当时不会&#xff0c;所以下来自己复盘一下&#xff0c;认真学习和总结&#xff0c;以应对未来更多的可能性 关于互联网大厂的笔试面试&#xff0c;都是需要细心准备的 &…

如何挑选合格的在线教育解决方案?

现在市面上的知识付费系统繁多&#xff0c;你可以说百花齐放&#xff0c;也可以说良莠不齐&#xff0c;如果不具备一定的专业素养&#xff0c;根本就无法从中挑选出真正的好产品&#xff0c;劣币驱逐良币反而成为常态。 本文将从几个常见维度分析一个好产品应该具备的基本要素…

CSS基础总结

CSS基础总结 CSS基础总结基础认知基础选择器**选择器的作用**标签选择器类选择器id选择器**通配符选择器** 字体和文本样式字体样式字体大小&#xff1a;font-size字体粗细&#xff1a;font-weight字体样式&#xff1a;font-style字体类型&#xff1a;font-family字体类型&…

【MYSQL篇】mysql性能优化总结

前言 说到MYSQL性能调优&#xff0c;大部分时候想要实现的目标是让我们的查询更快。一个查询的动作又是由很多个环节组成的&#xff0c;每个环节都会消耗时间&#xff0c;我们要减少查询所消耗的时间&#xff0c;就要从每一个环节入手。 关于MYSQL的sql语句执行流程&#xff0…

ARM-驱动/总结一

Linux设备驱动 驱动&#xff1a;能够控制硬件实现特定功能的软件代码就是驱动 ARM裸机驱动和驱动区别&#xff1f; ARM裸机驱动是不基于操作系统的软件代码&#xff0c;通常这份代码都是有开发者独立编写完成的。 驱动是基于内核&#xff08;Linux&#xff09;架构的基础上的…

chatGPT 指南:秒变 Excel 大神

Excel 是一款功能强大的电子表格软件&#xff0c;而 ChatGPT 则是一种智能语言模型&#xff0c;可以为 Excel 用户提供帮助和指导。本文将探讨 Excel 与 ChatGPT 的关系&#xff0c;并从初级、中级和高级 Excel 用户三个层次&#xff0c;介绍如何利用 ChatGPT 来提升 Excel 技能…

leetcode416. 分割等和子集(动态规划-java)

分割等和子集 leetcode416. 分割等和子集题目描述 暴力递归代码演示 动态规划解题思路代码演示 动态规划专题 leetcode416. 分割等和子集 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/problems/partition-equal-subset-sum 题目…

高级数据结构——平衡二叉树(AVL树)

目录 1. 底层结构 2. AVL数的概念 3. AVL树节点的定义 4. 基本框架 5. AVL树的插入 6. AVL树的旋转 6.1 左单旋 6.2 右单旋 6.3 左右双旋 6.4 右左双旋 7. AVL树的验证 8. AVL树的查找 9. AVL树的删除 10. AVL树的性能 11. 总代码 11.1 AVLTree 11.2 Test.c…

mac本地创建ssh key连接github

起因 今天克隆自己github上面的笔记到新电脑上&#xff0c;用http连接进行克隆&#xff0c;然后要我输入账号密码&#xff0c;输入完报了个提示“remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.”…

JavaScript 手写代码 第一期

文章目录 1.为什么要手写代码&#xff1f;2.手写代码2.1 手写Object.create()方法2.1.1 基本使用2.1.2 使用实例2.1.3 手写实现 2.2 手写实现instanceof方法2.2.1 基本使用2.2.2 使用实例2.2.3 手写实现 2.3 手写实现new操作符2.3.1 基本使用2.3.2 使用实例2.3.3 手写实现 1.为…

分享一个下载按钮

先看效果&#xff1a; 再看代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>下载按钮</title><link href"https://fonts.googleapis.com/css2?familyHind&amp;d…

Redisson源码-单线程加解锁流程

Redisson源码-单线程加解锁流程 以下源码分析基于redisson-3.17.6版本&#xff0c;不同版本源码会有些许不同需注意。 <dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.17.6</version>&l…