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; ①首页、个人中心、修改密码、…

一文了解什么SEO

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

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

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

UniAccess Agent卸载

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

权限提升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;通过科技手段来提高自身的优势…

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…

代码随想录算法训练营day6| 哈希表理论基础、242.有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和

目录 一、哈希表理论 hash function ​编辑hash collision 常见哈希结构 1&#xff09;set 2&#xff09;map 二、&#xff08;leetcode 242&#xff09;有效的字母异位词 三、&#xff08;leetcode 349&#xff09;两个数组的交集 四、&#xff08;leetcode 202&…

JAVA学习-全网最详细

&#x1f308;write in front&#x1f308; &#x1f9f8;大家好&#xff0c;我是Aileen&#x1f9f8;.希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流. &#x1f194;本文由Aileen_0v0&#x1f9f8; 原创 CSDN首发&#x1f412; 如…

Linux学习第19天:Linux并发与竞争实例: 没有规矩不成方圆

Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 先说点题外话&#xff0c;上周参加行业年会&#xff0c;停更了一周。接下来的周五就要开启国庆中秋双节模式&#xff0c;所以有的时候&#xff0c;尤其是工作以后…

java面试题-设计模式基础

面试专题-设计模式 前言 在平时的开发中&#xff0c;涉及到设计模式的有两块内容&#xff0c;第一个是我们平时使用的框架&#xff08;比如spring、mybatis等&#xff09;&#xff0c;第二个是我们自己开发业务使用的设计模式。 面试官一般比较关心的是你在开发过程中&#…

游戏录屏软件推荐,教你录制高清游戏视频

“有没有好用的游戏录屏软件推荐呀&#xff0c;最近当上了游戏主播&#xff0c;平台要求每天都要发一个游戏视频&#xff0c;可是我的游戏录屏软件太拉胯了&#xff0c;录制出来的视频非常糊&#xff0c;导致平台审核不通过&#xff0c;所以想问问大家有没有游戏录屏软件推荐一…