【大前端】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工程化项目的完整过程,希望对看到的同学有用哦,本篇到此结束,感谢观看。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

-bash: /java: cannot execute binary file

在linux安装jdk报错 -bash: /java: cannot execute binary file 原因是jdk安装包和linux的不一致 程序员的面试宝典&#xff0c;一个免费的刷题平台

业务幂等性技术架构体系之消息幂等深入剖析

在系统中当使用消息队列时&#xff0c;无论做哪种技术选型&#xff0c;有很多问题是无论如何也不能忽视的&#xff0c;如&#xff1a;消息必达、消息幂等等。本文以典型的RabbitMQ为例&#xff0c;讲解如何保证消息幂等的可实施解决方案&#xff0c;其他MQ选型均可参考。 一、…

RustDesk ID更新脚本

RustDesk ID更新脚本 此PowerShell脚本自动更新RustDesk ID和密码&#xff0c;并将信息安全地存储在Bitwarden中。 特点 使用以下选项更新RustDesk ID&#xff1a; 使用系统主机名生成一个随机的9位数输入自定义值 为RustDesk生成新的随机密码将RustDesk ID和密码安全地存储…

QT开发技术 【基于TinyXml2的对类进行序列化和反序列化】一

一、对TinyXml2 进行封装 使用宏 实现序列化和反序列化 思路&#xff1a; 利用宏增加一个类函数&#xff0c;使用序列化器调用函数进行序列化 封装宏示例 #define XML_SERIALIZER_BEGIN(ClassName) \ public: \virtual void ToXml(XMLElement* parentElem, bool bSerialize …

金仓Kingbase客户端KStudio报OOM:Java heap space socketTimeout

找到Kingbase\ES\V8\KESRealPro\V008R006C006B0021\ClientTools\guitools\KStudio\KStudio.ini 修改JVM参数&#xff1a; 默认值&#xff1a; -Xms512m -Xmx1024m 改为&#xff1a; -Xms1024m -Xmx2048m -XX:MaxPermSize512m SQL查询报错&#xff1a;An I/O error occurred …

Redis--21--大Key问题解决方案

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言Redis--20--大Key问题解析 一、如何发现Redis大Key1. 使用Redis命令行工具**MEMORY USAGE****RANDOMKEY****DEBUG OBJECT****SCAN命令****redis-cli 工具&#…

【进程与线程】进程的状态

在操作系统中&#xff0c;进程是执行中的程序实例。进程在其生命周期中会经历不同的状态&#xff0c;操作系统根据进程的执行情况和资源调度&#xff0c;将进程划分为多个状态。 这些状态帮助操作系统更加高效地管理 CPU 和系统资源。 进程的状态&#xff1a;就绪态&#xff0…

K8S开启/关闭审计日志

K8S默认禁用审计 开启/关闭 k8s 审计日志 默认 Kubernetes 集群不会输出审计日志信息。通过以下配置&#xff0c;可以开启 Kubernetes 的审计日志功能。 准备审计日志的 Policy 文件配置 API 服务器&#xff0c;开启审计日志重启并验证 准备审计日志 Policy 文件 apiVersio…

nginx: [emerg] bind() to 0.0.0.0:80 failed 端口被占用

nginx: [emerg] bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a way forbidden by its access permissions) 查看被占用的端口 被系统占用了 HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/HTTP 然后再进入nginx文件夹目录下…

vue2 web 多标签输入框 elinput是否当前焦点

又来分享一点点工作积累及解决方案 产品中需要用户输入一些文字后按下回车键生成标签来显示在页面上&#xff0c;经过尝试与改造完成如下&#xff1a; <template><div class"tags-view" click"beginInput"><el-tag :key"index" …

vLLM私有化部署大语言模型LLM

目录 一、vLLM介绍 二、安装vLLM 1、安装环境 2、安装步骤 三、运行vLLM 1、运行方式 2、切换模型下载源 3、运行本地已下载模型 四、通过http访问vLLM 一、vLLM介绍 vLLM&#xff08;官方网址&#xff1a;https://www.vllm.ai&#xff09;是一种用于大规模语言模型&#x…

STM32的集成开发环境STM32CubeIDE安装

STM32CubeIDE - STM32的集成开发环境 - 意法半导体STMicroelectronics

硬件学习笔记--31 IEC62053-21相关内容介绍

IEC 62053-21是一项由国际电工委员会&#xff08;International Electrotechnical Commission&#xff0c;简称IEC&#xff09;发布的国际标准&#xff0c;全称为《交流电能测量设备&#xff08;a.c.&#xff09;-特殊要求-第21部分&#xff1a;静止式有功能量计量表&#xff0…

C++类与对象(一)—学习记录

序言&#xff1a;要想开发一款成功的应用程序&#xff0c;其开发者必须充分了解并实现用户的需求。作为一个设计良好的类&#xff0c;既要有直观且易于使用的接口&#xff0c;也必须具备高效的实现过程。 一、类与对象基本概念 面向对象程序设计的主要特点为抽象、封装、继承与…

七大排序算法

文章目录 排序的概念及引用1.插入排序2.希尔排序(缩小增量排序)3.选择排序4.堆排序5.冒泡排序6.快速排序7.归并排序8.代码排序部分的测试9.代码加效果大致测试时间&#xff08;仅供参考&#xff09; 排序的概念及引用 排序:将数据按照特定的规律排成递增或递减的操作 稳定性:…

Windows 蓝牙驱动开发-蓝牙设备栈

蓝牙设备栈 蓝牙驱动程序堆栈包含 Microsoft 为蓝牙协议提供支持的核心部分。 有了这个堆栈&#xff0c;已启用蓝牙的设备可以彼此定位并建立连接。 在此类连接中&#xff0c;设备可以通过各种应用程序交换数据并彼此交互。 下图显示了蓝牙驱动程序堆栈中的模块&#xff0c;以…

C# 获取PDF文档中的字体信息(字体名、大小、颜色、样式等

在设计和出版行业中&#xff0c;字体的选择和使用对最终作品的质量有着重要影响。然而&#xff0c;有时我们可能会遇到包含未知字体的PDF文件&#xff0c;这使得我们无法准确地复制或修改文档。获取PDF中的字体信息可以解决这个问题&#xff0c;让我们能够更好地处理这些文件。…

第十三章:数据库技术

文章目录&#xff1a; 一&#xff1a;基础 1.概念 2.特点 3.常见数据库品牌 4.数据库应⽤系统 4.1 C/S 4.2 B/S 5.数据模型的分类 6.名词解析 7.关系运算 二&#xff1a;Access 1.基础 2.操作 2.1 建立表 2.2 维护表 2.3 创建查询 2.4 创建窗体 2.5 创建报表…

目标检测新视野 | YOLO、SSD与Faster R-CNN三大目标检测模型深度对比分析

目录 引言 YOLO系列 网络结构 多尺度检测 损失函数 关键特性 SSD 锚框设计 损失函数 关键特性 Faster R-CNN 区域建议网络&#xff08;RPN&#xff09; 两阶段检测器 损失函数 差异分析 共同特点 基于深度学习 目标框预测 损失函数优化 支持多类别检测 应…

浏览器输入http形式网址后自动跳转https解决方法

一、问题描述 使用浏览器 网上冲浪 时会遇到一个情况&#xff1a; 在浏览器中输入“http域名”后会自动变成“https 域名”的形式&#xff0c;此时“https 域名”的网站可能已停止对外提供服务了&#xff0c;这时会出现如下不友好的网页提示&#xff1a; 二、处理方法&#x…