当前位置: 首页 > news >正文

【大前端】Vue3 工程化项目使用详解

目录

一、前言

二、前置准备

2.1 环境准备

2.1.1 create-vue功能

2.1.2 nodejs环境

2.1.3 配置nodejs的环境变量

2.1.4 更换安装包的源

三、工程化项目创建与启动过程

3.1 创建工程化项目

3.2 项目初始化

3.3 项目启动

3.4 核心文件说明

四、VUE两种不同的API风格

4.1 选项式API风格

4.2 组合式API风格

4.2.1 自定义Vue文件

4.2.2 在App.vue文件中引入

五、写在文末


一、前言

在实际开发中,为了快速满足业务的需求,开发者往往不想投入过多的时间在搭建工程、配置环境上面,于是很多编程语言都逐渐推出合适的工程化项目的脚手架,开发者只需要按照要求输入一些命令即可,对于VUE来说也是如此,本文将通过实际案例详细分享一下VUE3中工程化项目的使用。

二、前置准备

2.1 环境准备

脚手架工具:create-vue,是vue官方提供的最新的脚手架工具,可用于快速生成一个工程化的Vue项目

2.1.1 create-vue功能

create-vue提供了如下功能:

  • 统一的目录结构;

  • 本地调试;

  • 热部署;

  • 单元测试;

  • 集成打包;

2.1.2 nodejs环境

本地安装nodejs,这个比较简单就不再赘述了,安装完成后,通过下面的窗口命令检查一下

注意:vue3要求的最低nodejs的版本是18.16

2.1.3 配置nodejs的环境变量

使用下面的命令设置一下nodejs环境变量,方便后续执行相关的npm命令

npm config set prefix ""D:\dev-tools\node\place

2.1.4 更换安装包的源

设置使用下面的命令

npm config set registry http://registry.npm.taobao.org/

检查是否设置成功

npm config get registry

三、工程化项目创建与启动过程

3.1 创建工程化项目

创建一个工程化VUE项目,执行下面的命令

npm init vue@latest

执行上面的命令之后,将会安装并执行 create-vue ,它是Vue官方的项目脚手架工具,第一次创建项目,先都使用默认的选项即可;

关于创建项目过程中的各个参数项做如下说明:

  • Project name:------》项目名称,默认值:vue-project,可输入想要的项目名称,此处我写的是:vueproject1。

  • Add TypeScript? ------》是否加入TypeScript组件?默认值:No。

  • Add JSX Support? ------》是否加入JSX支持?默认值:No。

  • Add Vue Router for Single Page Application development? ------》是否为单页应用程序开发添加Vue Router路由管理组件?默认值:No。

  • Add Pinia for state management? ------》是否添加Pinia组件来进行状态管理?默认值:No。

  • Add Vitest for Unit testing? ------》是否添加Vitest来进行单元测试?默认值:No。

  • Add an End-to-End Testing Solution?------》是否添加端到端测试?默认值No。

  • Add ESLint for code quality? ------》是否添加ESLint来进行代码质量检查?默认值:No。

执行完成之后,可以看到在当前目录下就产生了一个项目

目录结构如下

3.2 项目初始化

在上一步项目创建出来之后,窗口最后给出了下面的提示,即后续接下来的操作

我们按照提示的命令,依次进行命令执行即可

1)执行npm install

  • 类比maven,即从仓库拉取项目运行依赖的相关组件包

2)使用vscode打开项目

在当前的窗口下,执行 code .命令,将会在vscode中打开项目

对于上面的工程目录,接下来简单说明一下各个目录的作用:

  • jsconfig.json

    • 存放Vue项目的配置信息,比如端口号等;

  • package.json

    • 项目配置文件,包括项目名称,版本号,依赖包,版本等;

  • index.html

    • 默认首页;

  • public

    • 公共资源目录

  • node_modules

    • 下载的第三方包存放目录;

  • src

    • 源代码存放目录

      • assets:静态资源目录,比如图片、字体;

      • components:组件目录,存放通用的组件;

      • App.vue , 根组件;

      • main.js,入口文件;

3.3 项目启动

执行下面的命令启动项目

npm run dev

正常启动的效果如下,默认分配了一个访问端口

浏览器访问上图中的地址: http://localhost:5173/ ,看到下面的主页展示效果

3.4 核心文件说明

如下是默认的工程启动之后页面展示依赖的几个核心文件

  • index.html,展示主页信息;

  • main.js,入口文件,被index.html所引用;

  • App.vue,根组件;

    • .vue文件是Vue项目中的组件文件,在Vue项目中也称为单文件组件,Vue的单文件组件会将一个组件的逻辑(JS),模板(HTML)和样式(CSS)封装在同一个文件里(.vue)

四、VUE两种不同的API风格

4.1 选项式API风格

在我们刚开始学习VUE的时候,下面这样的写法是不是很熟悉,这就是传统的选项式API的风格

  • 选项式API,可以用包含多个选项的对象来描述组件的逻辑,比如:data,methods,mounted等

<script>export default {name: "old",data() {return {msg: "Welcome to Your Vue.js App"}},methods: {点我增加: function () {alert(this.msg);}},mounted() {console.log("vue mounted");}}</script><template><button @click="incr">点我增加</button>
</template>

但是这种写法也有一个明显的缺点就是风格比较死板,不够灵活,所以就出现了下面这种组合式的风格

4.2 组合式API风格

比如像下面这样的代码,就属于组合式API风格的写法,关于代码中几个核心的模块分别做说明:

  • setup,作为一个关键标识,告诉VUE需要做一些处理,让开发者可以更加简洁的使用组合式API;

  • ref(),接收一个内部值,返回一个响应的ref对象,此对象只有一个指向内部值的属性value;

  • onMounted(),在组合式API中的钩子方法,注册一个回调函数,在组件挂载完成后执行;

<script setup>import { onMounted,ref } from 'vue'const count = ref(0)function incr() {count.value++}onMounted(() => {console.log('mounted')})</script><template><button @click="incr">点我增加</button>
</template>

下面通过一个简单的案例体验下组合式API风格的写法。

4.2.1 自定义Vue文件

在src目录下创建一个Api.vue文件,参照组合式API风格的写法,代码如下:

<script setup>//声明响应式数据import { ref,onMounted } from 'vue';const conut = ref(0);function incr() {conut.value++};onMounted(() => {console.log('组件挂载完毕')})
</script><!-- 编写html元素 -->
<template><button @click="incr">count : {{conut}}</button>
</template>

4.2.2 在App.vue文件中引入

主要包括两个地方的引入,第一在script标签中引入

然后在template标签中的合适位置用Api标签导入

最后运行工程,在界面上可以看到自定义的这个Api.vue组件就生效了

五、写在文末

本文详细介绍了VUE3工程化项目的完整过程,希望对看到的同学有用哦,本篇到此结束,感谢观看。

相关文章:

【大前端】Vue3 工程化项目使用详解

目录 一、前言 二、前置准备 2.1 环境准备 2.1.1 create-vue功能 2.1.2 nodejs环境 2.1.3 配置nodejs的环境变量 2.1.4 更换安装包的源 三、工程化项目创建与启动过程 3.1 创建工程化项目 3.2 项目初始化 3.3 项目启动 3.4 核心文件说明 四、VUE两种不同的API风格 …...

基于文件系统分布式锁原理

分布式锁&#xff1a;在一个公共的存储服务上打上一个标记&#xff0c;如Redis的setnx命令&#xff0c;是先到先得方式获得锁&#xff0c;ZooKeeper有点像下面的demo,比较大小的方式判决谁获得锁。 package com.ldj.mybatisflex.demo;import java.util.*; import java.util.co…...

简历整理YH

一&#xff0c;订单中心 1&#xff0c;调拨单 融通(Rocketmq)-订单中心&#xff1a;ECC_BMS123(已出单)&#xff0c;125(分配),127(发货),129(收货) 通过RocketMq接入多场景订单数据 2&#xff0c;销售单 sap&#xff08;FTP&#xff09;-订单中心&#xff0c;下发1002,1003,…...

Kotlin 协程基础三 —— 结构化并发(二)

Kotlin 协程基础系列&#xff1a; Kotlin 协程基础一 —— 总体知识概述 Kotlin 协程基础二 —— 结构化并发&#xff08;一&#xff09; Kotlin 协程基础三 —— 结构化并发&#xff08;二&#xff09; Kotlin 协程基础四 —— CoroutineScope 与 CoroutineContext Kotlin 协程…...

微信小程序实现长按录音,点击播放等功能,CSS实现语音录制动画效果

有一个需求需要在微信小程序上实现一个长按时进行语音录制&#xff0c;录制时间最大为60秒&#xff0c;录制完成后&#xff0c;可点击播放&#xff0c;播放时再次点击停止播放&#xff0c;可以反复录制&#xff0c;新录制的语音把之前的语音覆盖掉&#xff0c;也可以主动长按删…...

校园跑腿小程序---轮播图,导航栏开发

hello hello~ &#xff0c;这里是 code袁~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的在校大学生…...

详细全面讲解C++中重载、隐藏、覆盖的区别

文章目录 总结1、重载示例代码特点1. 模板函数和非模板函数重载2. 重载示例与调用规则示例代码调用规则解释3. 特殊情况与注意事项二义性问题 函数特化与重载的交互 2. 函数隐藏&#xff08;Function Hiding&#xff09;概念示例代码特点 3. 函数覆盖&#xff08;重写&#xff…...

一文读懂单片机的串口

目录 串口通信的基本概念 串口通信的关键参数 单片机串口的硬件连接 单片机串口的工作原理 数据发送过程 数据接收过程 单片机串口的编程实现 以51单片机为例 硬件连接 初始化串口 发送数据 接收数据 串口中断服务函数 代码示例 单片机串口的应用实例 单片机与…...

HTML5 网站模板

HTML5 网站模板 参考 HTML5 Website Templates...

mybatis分页插件:PageHelper、mybatis-plus-jsqlparser(解决SQL_SERVER2005连接分页查询OFFSET问题)

文章目录 引言I PageHelper坐标II mybatis-plus-jsqlparser坐标Spring Boot 添加分页插件自定义 Mapper 方法中使用分页注意事项解决SQL_SERVER2005连接分页查询OFFSET问题知识扩展MyBatis-Plus 框架结构mybatis-plus-jsqlparser的 Page 类引言 PageHelper import com.github.p…...

uniapp中rpx和upx的区别

在 UniApp 中&#xff0c;rpx 和 upx 是两种不同的单位&#xff0c;它们的主要区别在于适用的场景和计算方式。 ### rpx&#xff08;Responsive Pixel&#xff09; - **适用场景**&#xff1a;rpx 是一种响应式单位&#xff0c;主要用于小程序和移动端的布局。 - **计算方式**…...

什么是卷积网络中的平移不变性?平移shft在数据增强中的意义

今天来介绍一下数据增强中的平移shft操作和卷积网络中的平移不变性。 1、什么是平移 Shift 平移是指在数据增强&#xff08;data augmentation&#xff09;过程中&#xff0c;通过对输入图像或目标进行位置偏移&#xff08;平移&#xff09;&#xff0c;让目标在图像中呈现出…...

java.net.SocketException: Connection reset 异常原因分析和解决方法

导致此异常的原因&#xff0c;总结下来有三种情况&#xff1a; 一、服务器端偶尔出现了异常&#xff0c;导致连接关闭 解决方法&#xff1a; 采用出错重试机制 二、 服务器端和客户端使用的连接方式不一致 解决方法&#xff1a; 服务器端和客户端使用相同的连接方式&#xff…...

Maven 仓库的分类

Maven 是一个广泛使用的项目构建和依赖管理工具&#xff0c;在 Java 开发生态中占据重要地位。作为 Maven 的核心概念之一&#xff0c;仓库&#xff08;Repository&#xff09;扮演着至关重要的角色&#xff0c;用于存储项目的依赖、插件以及构建所需的各种资源。 了解 Maven 仓…...

隧道网络:为数据传输开辟安全通道

什么是隧道网络&#xff1f; 想象一下&#xff0c;你正在一个陌生的城市旅行&#xff0c;并且想要访问家里的电脑。但是&#xff0c;直接连接是不可能的&#xff0c;因为家庭网络通常受到防火墙或路由器的保护&#xff0c;不允许外部直接访问。这时候&#xff0c;隧道网络&…...

CentOS 7 下 Nginx 的详细安装与配置

1、安装方式 1.1、通过编译方式安装 下载Nginx1.16.1的安装包 https://nginx.org/download/nginx-1.16.1.tar.gz 下载后上传至/home目录下。 1.2、通过yum方式安装 这种方式安装更简单。 2、通过编译源码包安装Nginx 2.1、安装必要依赖 sudo yum -y install gcc gcc-c sudo…...

JAVA 使用apache poi实现EXCEL文件的输出;apache poi实现标题行的第一个字符为红色;EXCEL设置某几个字符为别的颜色

设置输出文件的列宽&#xff0c;防止文件过于丑陋 Sheet sheet workbook.createSheet(FileConstants.ERROR_FILE_SHEET_NAME); sheet.setColumnWidth(0, 40 * 256); sheet.setColumnWidth(1, 20 * 256); sheet.setColumnWidth(2, 20 * 256); sheet.setColumnWidth(3, 20 * 25…...

通过vba实现在PPT中添加计时器功能

目录 一、前言 二、具体实现步骤 1、准备 2、开启宏、打开开发工具 3、添加计时器显示控件 3.1、开启母版 3.2、插入计时器控件 4、vba代码实现 4.1、添加模块 4.2、添加代码 4.3、保存为pptm 5、效果展示 一、前言 要求/目标:在PPT中每一页上面增加一个计时器功能…...

检验统计量与p值笔记

一、背景 以雨量数据为例&#xff0c;当获得一个站点一年的日雨量数据后&#xff0c;我们需要估计该站点的雨量的概率分布情况&#xff0c;因此我们利用有参估计的方式如极大似然法估计得到了假定该随机变量服从某一分布的参数&#xff0c;从而得到该站点的概率密度函数&#x…...

【集成学习】Bagging、Boosting、Stacking算法详解

文章目录 1. 相关算法详解&#xff1a;2. 算法详细解释&#xff1a;2.1 Bagging&#xff1a;2.2 Boosting&#xff1a;2.3 Stacking&#xff1a;2.4 K-fold Multi-level Stacking&#xff1a; 集成学习&#xff08;Ensemble Learning&#xff09;是一种通过结合多个模型的预测结…...

ParaView时间戳设置全攻略:从基础标注到自定义格式(5.8.0实测)

ParaView时间戳设置全攻略&#xff1a;从基础标注到自定义格式&#xff08;5.8.0实测&#xff09; 在科学可视化领域&#xff0c;时间戳不仅是数据演变的见证者&#xff0c;更是研究成果呈现的专业语言。ParaView作为开源可视化工具链的标杆&#xff0c;其时间标注功能在学术论…...

CANN-昇腾NPU-RAG推理-检索增强生成怎么部署

RAG&#xff08;Retrieval-Augmented Generation&#xff09;是 LLM 知识库的组合&#xff1a;先检索相关文档&#xff0c;再让 LLM 基于文档回答。昇腾NPU 上部署 RAG 需要两个组件&#xff1a;Embedding 模型&#xff08;做向量检索&#xff09;和 LLM&#xff08;做生成&am…...

别再只测accuracy!DeepSeek集成测试必须监控的5个隐性指标(P99首token延迟、context bleed率、tool-call schema漂移)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;DeepSeek集成测试的核心范式演进 DeepSeek大模型的工程化落地对集成测试提出了全新挑战&#xff1a;传统基于接口响应码与字段校验的测试范式已难以覆盖语义一致性、推理链鲁棒性、上下文敏感度等高阶质…...

中兴光猫终极管理指南:解锁工厂模式与Telnet权限的实战教程

中兴光猫终极管理指南&#xff1a;解锁工厂模式与Telnet权限的实战教程 【免费下载链接】zteOnu A tool that can open ZTE onu device factory mode 项目地址: https://gitcode.com/gh_mirrors/zt/zteOnu 掌握中兴光猫的设备管理和权限获取能力是网络管理员和技术爱好者…...

告别SVN恐惧症:美术策划也能轻松上手的Unity PlasticSCM极简入门(附团队项目拉取实战)

告别SVN恐惧症&#xff1a;美术策划也能轻松上手的Unity PlasticSCM极简入门&#xff08;附团队项目拉取实战&#xff09; 在游戏开发团队中&#xff0c;版本控制系统是协作的基石&#xff0c;但传统工具如SVN往往让非技术成员望而生畏。当美术资源频繁更新、策划案不断迭代时&…...

ShrinkBox后门攻击:如何让自动驾驶模型“看错”距离,威胁ML-ADAS安全

1. 项目概述在自动驾驶和高级驾驶辅助系统&#xff08;ADAS&#xff09;领域&#xff0c;基于机器学习的目标检测模型&#xff0c;如YOLO系列&#xff0c;已成为感知环境、实现碰撞预警的核心组件。这些模型通过实时识别和定位道路上的车辆、行人等目标&#xff0c;为后续的距离…...

如何在浏览器中一键解密所有加密音乐文件:Unlock-Music完全指南

如何在浏览器中一键解密所有加密音乐文件&#xff1a;Unlock-Music完全指南 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库&#xff1a; 1. https://github.com/unlock-music/unlock-music &#xff1b;2. https://git.unlock-music.dev/um/web 项目地…...

从零构建FOC轮腿机器人:开源平衡机器人完整指南

从零构建FOC轮腿机器人&#xff1a;开源平衡机器人完整指南 【免费下载链接】foc-wheel-legged-robot Open source materials for a novel structured legged robot, including mechanical design, electronic design, algorithm simulation, and software development. | 一个…...

别再手动维护接口文档了!用Spring Boot 3和Swagger 3实现代码与文档的自动同步

Spring Boot 3与Swagger 3&#xff1a;构建零维护成本的API文档工作流 每次接口变更都要手动更新文档&#xff1f;团队成员总是抱怨文档与实际接口不一致&#xff1f;在敏捷开发时代&#xff0c;传统文档维护方式已成为拖累工程效率的典型痛点。本文将揭示如何通过Spring Boot …...

PrivacyGuard实战:基于实证差分隐私的机器学习模型隐私审计框架

1. 项目概述与核心价值在过去的几年里&#xff0c;我亲眼见证了机器学习模型从实验室走向银行、医疗、社交网络等各个敏感领域的全过程。模型性能的每一次飞跃都令人兴奋&#xff0c;但随之而来的隐私泄露事件也一次次为我们敲响警钟。一个在医疗数据上训练出的诊断模型&#x…...