vue+element项目创建步骤

一、创建vue项目步骤

要创建一个Vue + Element UI的项目,你可以按照以下步骤进行操作:
1.确保你已经安装了Node.js和npm(Node.js的包管理器)。你可以在命令行中运行以下命令来检查它们是否已经安装:

	node -vnpm -v

2.使用Vue CLI来创建一个新的Vue项目。在命令行中运行以下命令:

	npm install -g @vue/clivue create my-project

这将安装Vue CLI并创建一个名为my-project的新项目。在创建项目时,你可以选择手动选择特性或使用默认配置。
3. 进入到项目目录中:

   cd my-project

4.安装Element PLUS。在命令行中运行以下命令:

   npm install element-plus

5.在项目中使用Element PLUS。在你的Vue应用的入口文件(通常是src/main.js)中,添加以下代码:

import { createApp } from 'vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'const app = createApp(App)
app.use(ElementPlus)
app.mount('#app')

这将引入Element PLUS库,并将其作为Vue应用的插件使用。
6. 运行项目。在命令行中运行以下命令来启动开发服务器:

   npm run serve

这将启动开发服务器,并在浏览器中打开你的Vue应用。
现在,你已经成功创建了一个Vue + Element PLUS的项目。你可以根据需要在项目中使用Element UI的组件和样式。
也可以手动打开此网址。
在这里插入图片描述

二、项目结构说明

在Vue 中,通常使用Vue CLI来创建和管理项目,它会自动生成一套默认的目录结构。下面是一个典型的Vue 3项目的目录结构说明:

my-project/|- public/|  |- index.html||- src/|  |- assets/|  |- components/|  |- views/|  |- App.vue|  |- main.js||- package.json|- vue.config.js|- README.md
  • public/:这个目录包含了公共的静态资源,如index.html文件和其他不需要经过构建处理的文件。

  • src/:这个目录是项目的主要源代码目录。

  • assets/:这个目录用于存放项目的静态资源,如图片、样式文件等。

  • components/:这个目录用于存放项目的可复用组件。

  • views/:这个目录用于存放项目的页面组件。

  • App.vue:这是项目的根组件,包含了整个应用的布局和路由视图的渲染。

  • main.js:这是项目的入口文件,用于初始化Vue应用并挂载根组件。

  • package.json:这个文件是项目的配置文件,包含了项目的依赖和脚本等信息。

  • vue.config.js:这个文件是Vue CLI的配置文件,用于自定义构建配置和开发服务器等选项。

  • README.md:这个文件是项目的说明文档,通常包含了项目的介绍、安装和使用方法等信息。
    这只是一个简单的目录结构示例,实际的项目可能会根据需求和团队的偏好进行调整和扩展。

三、安装路由

在Vue 3中,你可以使用Vue Router来进行路由管理。要在路由配置中添加新页面的路由,你可以按照以下步骤进行操作:
1.在你的Vue项目中,确保已经安装了Vue Router。如果没有安装,可以使用以下命令进行安装:

   npm install vue-router

判断是否安装成功可以看一下package.json是否显示vue-router的版本号
在这里插入图片描述

2.在项目的src文件中,创建一个新的文件夹router,里面放置index.js,用于配置路由。src/router/index.js

3.在此文件中,导入Vue和Vue Router,并创建一个新的路由实例。示例代码如下:

   import { createRouter, createWebHistory } from 'vue-router'import Indexfrom '../views/Index/IndexPage.vue'const routes = [{path: '/',name: 'Index',component: Index}]const router = createRouter({history: createWebHistory(),routes})export default router

在上面的示例中,我们将路由实例作为Vue应用的插件使用。
现在,你已经成功在路由配置中添加了新页面的路由。你可以根据需要继续添加其他页面的路由配置。
4.在Vue 3应用程序的入口文件(通常是main.js)中使用了上述路由配置。示例代码如下:

import {createApp
} from 'vue'
import App from './App.vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import router from './router'const app = createApp(App)
app.use(ElementPlus)
app.use(router) 
app.mount('#app')

我们将路由配置通过 use 方法注入到Vue应用程序中。

报错处理:

error Component name “XXX” should always be multi-word vue/multi-word-component-
这些错误信息是由Vue的ESLint插件生成的,用于检查和提醒开发者在Vue组件中的一些最佳实践和规范。如果出现这种错误,要么选择规范自己的代码,要么选择关闭验证。其他的处理情况可以进行百度。
可以在package.json文件里面添加rule规则:

"rules": {"vue/multi-word-component-names": "off"
}

在这里插入图片描述

四、创建首页并显示内容

在这里插入图片描述

indexPage.vue文件内容:

<template><!-- 页面内容 --><div>你好</div>
</template><script>export default {name: 'Index',// 组件逻辑代码}
</script><style>/* 样式规则 */
</style>

router/index.js文件:

import {createRouter,createWebHistory
} from 'vue-router'
import Index from '../views/Index/IndexPage.vue'const routes = [{path: '/',name: 'Index',component: Index
}]const router = createRouter({history: createWebHistory(),routes
})export default router

App.vue文件:

<template><div id="app"><router-view></router-view></div>
</template><script>
export default {name: 'App',components: {}
}
</script><style>
#app {font-family: Avenir, Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;
}
</style>

(一)如果运行没有效果,(以下和上面项目目录文件等不关联,这里只是举例)可能有以下几个原因:

1.检查路由配置:确保你的路由配置正确,并且将根路径 /index 组件关联起来。在路由配置文件中,确保你有类似以下的代码:

   import { createRouter, createWebHistory } from 'vue-router';import Index from '@/views/Index.vue';const routes = [{path: '/',name: 'Index',component: Index},// 其他路由配置...];const router = createRouter({history: createWebHistory(),routes});export default router;

2.检查入口文件:在入口文件(通常是 main.js)中,确保你正确地使用了路由配置。示例代码如下:

   import { createApp } from 'vue';import router from './router';import App from './App.vue';createApp(App).use(router).mount('#app');

确保你使用了正确的路由配置文件,并将其通过 use 方法注入到Vue应用程序中。
3. 检查组件名称:确保你的 index 组件的名称与路由配置中的组件名称一致。在 Index.vue 文件中,确保你有类似以下的代码:

   <template><!-- 页面内容 --></template><script>export default {name: 'Index',// 组件逻辑代码}</script><style>/* 样式规则 */</style>

确保 name 属性的值与路由配置中的组件名称一致。
4.路由出口:在你的根组件(通常是App.vue)中,确保你有一个路由出口()来渲染对应的页面。

   <template><div id="app"><!-- 其他内容... --><router-view></router-view></div></template>

五、跳转页面

路由链接:如果你在其他页面或组件中需要导航到views/Index/IndexPage页面,确保你使用了正确的路由链接。
【此处是根据你的命名写法来,代码不可生硬照搬】

  <router-link to="/index">Go to Index Page</router-link>

在这里插入图片描述
写法还有其他形式

<router-link :to="{ path: 'home' }">Home</router-link>
<!-- 命名的路由 -->
<router-link :to="{ name: 'user', params: { userId: 123 }}">User</router-link>
<!-- 带查询参数,下面的结果为 /about?userName=qqq-->
<router-link :to="{ path: 'about', query: { userName: 'qqq' }}">about</router-link>

六、使用组件

1.创建公共组件,例如导航栏。在components文件夹里面创建一个NavBar.vue文件。

<template><div class="navBar"><!-- 单个 --><!-- <ul class="navList"><li :class="{ active: '/' === $route.path }" @click="goTo('/')">首页</li><li :class="{ active: '/About' === $route.path }" @click="goTo('/About')">关于</li><li :class="{ active: '/IndexDetail' === $route.path }" @click="goTo('/IndexDetail')">详情</li></ul> --><!-- 循环的 --><ul class="navList"><li v-for="item in navItems" :key="item.path" :class="{ active: item.path === $route.path }"@click="goTo(item)">{{ item.label }}</li></ul><!-- UI框架自适应的 --><el-menu :default-active="activeIndex" class="el-menu-demo" mode="horizontal"><el-menu-item :index="item.id" v-for="item in navItems" :key="item.path"@click="goTo(item)">{{ item.label }}</el-menu-item></el-menu></div>
</template><script>export default {name: 'NavBar',data() {return {navItems: [{id: '1',path: '/',label: '首页'},{id: '2',path: '/About',label: '关于'},{id: '3',path: '/IndexDetail',label: '详情'}],activeIndex: '1'}},mounted() {this.activeIndex = localStorage.getItem('activeIndex');},methods: {goTo(item) {this.$router.replace(item.path);localStorage.setItem('activeIndex', item.id);},}}
</script><style scoped>.navList {display: flex;list-style: none;}.navList li {width: 100px;line-height: 50px;height: 50px;border: 1px solid red;text-align: center;}.active {color: #3a82f3;position: relative;}.active::after {content: "";position: absolute;left: 0;bottom: 0;width: 100%;height: 4px;background-color: #3a82f3;}
</style>

2.在其他页面使用该组件。其他页面也是同样的操作,引入、注册、使用。

<template><!-- 页面内容 --><div><NavBar></NavBar>这是首页</div>
</template>
<script>import NavBar from '../../components/NavBar.vue' export default {name: 'Index',components:{NavBar}}
</script><style>
</style>

七、状态管理store

状态管理:

https://cn.vuejs.org/guide/scaling-up/state-management.html

在Vue 3中,store文件夹通常用于存放Vuex相关的代码和文件。Vuex是Vue的官方状态管理库,用于管理应用程序的状态。
在store文件夹中,一般会包含以下文件或目录:
1. index.js:这是Vuex的主要入口文件。在这个文件中,你可以创建Vuex的store实例,并导出它供应用程序使用。
2. state.js:这个文件用于定义应用程序的状态。你可以在这里定义和初始化应用程序的各种状态变量。
3. mutations.js:这个文件包含了Vuex的mutations。Mutations是用于修改状态的函数,它们接收state作为参数,并对其进行修改。
4. actions.js:这个文件包含了Vuex的actions。Actions是用于处理异步操作和提交mutations的函数。它们可以包含异步逻辑,并在需要时触发mutations。
5. getters.js:这个文件包含了Vuex的getters。Getters是用于从状态中派生出新的数据的函数。它们可以对状态进行计算或过滤,并返回派生的数据。
除了上述文件,你还可以根据需要在store文件夹中创建其他文件或目录,以组织和管理你的Vuex代码。
需要注意的是,这只是一种常见的组织方式,你可以根据你的项目需求和个人偏好进行调整和扩展。

ref:

https://cn.vuejs.org/api/reactivity-core.html#ref
ref是Vue 3中的一个函数,它是Vue Composition API的一部分。ref函数用于创建一个响应式的数据引用。
在Vue 3中,响应式是通过ref函数来实现的。当你使用ref函数创建一个变量时,它会返回一个包装了原始值的响应式引用。这意味着当引用的值发生变化时,Vue会自动追踪这个变化,并在需要时更新相关的视图。
以下是一个使用ref函数的示例:

import { ref } from 'vue';const count = ref(0);
console.log(count.value); // 输出: 0
count.value++; // 修改值
console.log(count.value); // 输出: 1

在上面的示例中,我们使用ref函数创建了一个名为count的变量,并将其初始值设置为0。通过访问count.value,我们可以获取到该变量的值。当我们修改count.value时,Vue会自动更新相关的视图。
需要注意的是,由于ref函数返回的是一个包装了原始值的引用,所以在访问或修改变量的值时,需要使用.value来进行操作。

reactive()

reactive()是Vue 3中的一个函数,它是Vue Composition API的一部分。reactive()函数用于创建一个响应式的对象。
在Vue 3中,响应式是通过reactive()函数来实现的。当你使用reactive()函数创建一个对象时,它会返回一个包装了原始对象的响应式代理。这意味着当代理对象的属性发生变化时,Vue会自动追踪这些变化,并在需要时更新相关的视图。

import { reactive } from 'vue';const state = reactive({
count: 0,
message: 'Hello'
});console.log(state.count); // 输出: 0
console.log(state.message); // 输出: 'Hello'state.count++; // 修改值
console.log(state.count); // 输出: 1

在上面的示例中,我们使用reactive()函数创建了一个名为state的响应式对象。state对象包含了count和message两个属性。通过访问state.count和state.message,我们可以获取到这些属性的值。当我们修改state.count时,Vue会自动更新相关的视图。
需要注意的是,由于reactive()函数返回的是一个包装了原始对象的代理对象,所以在访问或修改对象的属性时,不需要使用额外的.value来进行操作。

八、vue3.0代理配置以及接口封装

【1】vue3.0代理配置以及接口封装:
https://blog.csdn.net/x_Yanger/article/details/106079274

【2】vue中 关于proxy的理解:
https://blog.csdn.net/ks8380/article/details/110678815?spm=1001.2014.3001.5506

devServer 中的 proxy 选项用于配置代理,将以 /api 开头的请求转发到 http://e.dxy.net。
ws 设置为 true 表示开启 WebSocket 支持。
secure 设置为 false 表示不验证 SSL 证书。
changeOrigin 设置为 true 表示修改请求头中的 Host 字段。

【3】要在 Vue 3 中安装和使用 Axios,可以按照以下步骤进行操作:
1.打开终端,并进入你的 Vue 3 项目的根目录。
2.运行以下命令来安装 Axios 依赖:

   npm install axios

或者如果你使用的是 Yarn 包管理器,可以运行以下命令:

   yarn add axios

3.安装完成后,你可以在你的 Vue 3 项目中的任何组件中使用 Axios。在需要使用 Axios 的组件中,可以通过以下方式引入 Axios:

 import axios from 'axios';

4.现在,你可以使用 Axios 来发送 HTTP 请求。例如,你可以在组件的方法中使用 Axios 发送 GET 请求:

   axios.get('/api/data').then(response => {// 处理响应数据}).catch(error => {// 处理错误});

上面第一条链接是有关于接口封装的,前提就是得先安装axios,安装完之后可以去浏览使用。

九、运行自动弹出浏览器

在 Vue 3 中,你可以通过配置 devServer 的 open 属性来实现在运行应用程序后自动弹出浏览器。
在你的 vue.config.js 文件中,可以添加以下配置:

module.exports = {// 其他配置项...devServer: {open: true}
};

设置 open 为 true,这将告诉开发服务器在启动时自动打开浏览器。

十、vue3单页面

用到什么就需要引入什么。

<template><div><NavBar></NavBar><!-- 轮播图 --><el-carousel :interval="5000" arrow="always"><el-carousel-item v-for="(item, index) in bannerList" :key="index"><img :src="app.$utils.image(item.image)" class="bannerImg" /></el-carousel-item></el-carousel></div>
</template>
<script setup>
import app from '@/app/index'
import { onMounted } from 'vue';
import {ref
} from "vue";
import NavBar from '../../components/NavBar.vue'
onMounted(() => {getInfo()
})
const bannerList = ref([])function getInfo() {app.$api.addArticle({type: 'index'}).then(res => {console.log(res);bannerList.value = res.data});
}
</script><style scoped>
.bannerImg {width: 100%;height: 100%;object-fit: contain;
}
</style>

加上setup之后写法不再是之前的写法,不需要写export进行暴露

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

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

相关文章

《开发实战》18 | 数据存储:NoSQL与RDBMS如何取长补短、相辅相成?

取长补短之 Redis vs MySQL 做一个简单测试&#xff0c;分别填充 10 万条数据到 Redis 和 MySQL 中。MySQL 中的 name字段做了索引&#xff0c;相当于 Redis 的 Key&#xff0c;data 字段为 100 字节的数据&#xff0c;相当于 Redis 的Value。在我的电脑上&#xff0c;使用 wr…

基于SpringBoot的企业客户管理系统的设计与实现【附PPT|万字文档(LW)和搭建文档】

主要功能 后台登录&#xff1a; 可注册员工&#xff1a;工号、密码、姓名、身份证、手机、邮箱 员工&#xff1a; ①首页、个人中心、修改密码、个人信息 ②客户信息管理、项目信息管理、项目收益管理等 后台登录&#xff1a; 管理员&#xff1a; ①首页、个人中心、修改密码、…

kubernetes问题(一)-异常事件

1 pod状态处于Evicted 0/1 现象&#xff1a; 1&#xff09;kubectl get events发现“failed to garbage collect required amount of images”。 2&#xff09;同时磁盘空间不足的节点有大量pod处于Evicted 0/1状态&#xff0c;但并未进行重新调度。 原因描述&#xff1a; …

一文了解什么SEO

搜索引擎优化 (SEO) 是一门让页面在 Google 等搜索引擎中排名更高的艺术和科学。 一、搜索引擎优化的好处 搜索引擎优化是在线营销的关键部分&#xff0c;因为搜索是用户浏览网络的主要方式之一。 搜索结果以有序列表的形式呈现&#xff0c;网站在该列表中的排名越高&#x…

ubuntu 软件包管理之一

在 Ubuntu 操作系统中,软件包管理扮演着至关重要的角色,为用户提供了安装、更新和卸载各类应用程序、工具和库的关键工具。本文将引导您探索从软件包基础知识的了解,到制作自己的软件包,再到维护和共享软件包的全过程。无论您是普通用户还是开发者,了解如何处理软件包都是…

小样本规模船型优化策略的选择研究

天洑软件基于自研智能优化软件AIPOD在船舶行业的应用发表论文《小样本规模船型优化策略的选择研究》刊录于核心期刊《中国造船》。全文如下&#xff1a; 小样本规模船型优化策略的选择研究 陈骏喆&#xff0c;姜 栋&#xff0c;张 儒&#xff0c;张 明 &#xff08;南京天洑…

聊聊druid的borrow行为

序 本文主要研究一下druid的borrow行为 getConnection com/alibaba/druid/pool/DruidDataSource.java public DruidPooledConnection getConnection() throws SQLException {return getConnection(maxWait);}public DruidPooledConnection getConnection(long maxWaitMillis…

UniAccess Agent卸载

异常场景&#xff1a; UniAccess Agent导致系统中的好多设置打不开 例如:ipv4的协议,注册表,host等等 需要进行删除,亲测有效,及多家答案平凑的 借鉴了这位大神及他里面引用的大神的内容 https://blog.csdn.net/weixin_44476410/article/details/121605455 问题描述 这个进…

Redis 字符串操作实战(全)

目录 SET 存入键值对 SETNX SETEX SETBIT SETRANGE MSET 批量存入键值对 MSETNX PSETEX BITCOUNT 计算值中1的数量 BITOP 与或非异或操作 DECR 减1 DECRBY APPEND 追加 INCR 自增 INCRBY INCRBYFLOAT GET 取值 GETBIT GETRANGE GETSET 取旧值赋新值 MGET …

权限提升Linux篇

提权工具 https://github.com/liamg/traitor https://github.com/AlessandroZ/BeRoot https://github.com/rebootuser/LinEnum https://github.com/mzet-/linux-exploit-suggester https://github.com/sleventyeleven/linuxprivchecker https://github.com/jondonas/linux…

Git学习笔记4

GitHub是目前最火的开源项目代码托管平台。它是基于web的Git仓库&#xff0c;提供公有仓库和私有仓库&#xff0c;但私有仓库是需要付费的。 到Github上找类似的项目软件。 GitLab可以创建免费的私有仓库。 GitLab是利用 Ruby开发的一个开源的版本管理系统&#xff0c;实现一个…

如何使用Docker安装最新版本的Redis并设置远程访问(含免费可视化工具)

文章目录 安装Docker安装Redisredis.conf文件远程访问Redis免费可视化工具相关链接Docker是一种开源的应用容器引擎,使用Docker可以让我们快速部署应用环境,本文介绍如何使用Docker安装最新版本的Redis。 安装Docker 首先需要安装Docker,具体的安装方法可以参考Docker官方文…

使用 rtty 进行远程 Linux 维护和调试

rtty 是一个用于在终端上进行远程连接和数据传输的工具。它提供了一种简单的方式来与远程设备进行通信&#xff0c;使得在不同主机之间传输数据变得更加方便。 安装 rtty 是一个可执行程序&#xff0c;可以在 Linux、macOS 和 Windows 等平台上使用。 Linux/macOS 在终端中执…

开发者必备!如何将闲置iPad Pro打造为编程工具,使用VS Code编写代码

文章目录 前言1. 本地环境配置2. 内网穿透2.1 安装cpolar内网穿透(支持一键自动安装脚本)2.2 创建HTTP隧道 3. 测试远程访问4. 配置固定二级子域名4.1 保留二级子域名4.2 配置二级子域名 5. 测试使用固定二级子域名远程访问6. ipad pro通过软件远程vscode6.1 创建TCP隧道 7. ip…

Java-day17(反射)

Reflection(反射) 动态语言的关键 允许程序在执行期借助于Reflection API取得任何类的内部信息&#xff0c;并能直接操作任意对象的内部属性及方法提供的功能: 在运行时判断任意一个对象所属类 在运行时构造任意一个类的对象 在运行时判断任意一个类所具有的成员变量和方法 在…

怒刷LeetCode的第15天(Java版)

目录 第一题 题目来源 题目内容 解决方法 方法一&#xff1a;哈希表双向链表 方法二&#xff1a;TreeMap 方法三&#xff1a;双哈希表 第二题 题目来源 题目内容 解决方法 方法一&#xff1a;二分查找 方法二&#xff1a;线性搜索 方法三&#xff1a;Arrays类的b…

基于SpringBoot的在线文档管理系统

目录 前言 一、技术栈 二、系统功能介绍 管理员功能模块 员工功能模块 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势…

90行代码写一个视频播放器

上一篇文章视频播放器的技术组成写了视频播放器的整体结构 下面我们就来上伪代码&#xff1a; #include <iostream> #include <thread> #include <list> #include <string> using namespace std;//下文代码都需要考虑并发&#xff0c;并发代码没写是…

ArcGIS 10.3软件安装包下载及安装教程!

【软件名称】&#xff1a;ArcGIS 10.3 【安装环境】&#xff1a;Windows 【下载链接 】&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1K5ab7IHMYa23HpmuPkFa1A 提取码&#xff1a;oxbb 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦 软件解压码点击原文…

java面试题-jvm基础知识

1 JVM组成 1.1 JVM由那些部分组成&#xff0c;运行流程是什么&#xff1f; 难易程度&#xff1a;☆☆☆ 出现频率&#xff1a;☆☆☆☆ JVM是什么 Java Virtual Machine Java程序的运行环境&#xff08;java二进制字节码的运行环境&#xff09; 好处&#xff1a; 一次编写&a…