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

5 前端系统开发:Vue2、Vue3框架(中):Vue前端工程化组件式开发

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 五、前端工程化(使用Vue创建一个完整的企业级前端项目)
    • 1 Vue脚手架(Vue-cli)环境准备
      • (1)安装NodeJS
    • 2 Vue项目简介(创建)
      • (1)Vue项目创建
        • 通过命令行创建(这个创建的比较简洁,有些自定义功能还是采用ui比较好)
        • 通过图形界面创建
      • (2)Vue项目目录介绍
    • 3 Vue项目开发流程
      • (1)Vue项目结构代码解释


前言


五、前端工程化(使用Vue创建一个完整的企业级前端项目)

  • 当前最为主流的开发模式:前后端分离
    在这里插入图片描述
    在这里插入图片描述
  • 前端工程化: 是指在企业级的前端项目开发中,把前端开发所需的工具、技术、流程、经验等进行规范化、标准化。
    • 模块化:JS、CSS
    • 组件化:UI结构、样式、行为
    • 规范化:目录结构、编码、接口
    • 自动化:构建、部署、测试

1 Vue脚手架(Vue-cli)环境准备

  • 介绍: Vue-cli 是Vue官方提供的一个脚手架,用于快速生成一个 Vue的项目模板。
  • Vue-cli提供了如下功能:
    • 统一的目录结构
    • 本地调试
    • 热部署
    • 单元测试
    • 集成打包上线
  • 依赖环境: NodeJS

(1)安装NodeJS

Node.jsR是一个开源、跨平台的JavaScript运行时环境。其实就和java运行要安装jdk一样。

  • step1:下载nodejs:https://nodejs.org/zh-cn
    我们下载一个长期稳定版本就可以了
    正常安装就是了,注意下面这个不用勾选
    在这里插入图片描述
  • step2:验证是否安装成功 node -v
    可以看到版本号就成功了
    在这里插入图片描述
  • step3:配置npm的全局安装路径
    用管理员权限运行cmd,执行下面命令:后面的路径就是你前面安装的nodejs选择的安装目录
    npm config set prefix “D:\frontDevelopment\nodeJs”
    使用 npm config get prefix验证有没有设置成功
    在这里插入图片描述
  • step4: 切换npm的镜像(加快资源的下载)
    同样使用管理员权限执行下面命令
    npm config set registry https://mirrors.huaweicloud.com/repository/npm/
    这里镜像源有可能过期了,就去网上找最新的
  • step5: 安装Vue-cli
    使用管理员身份运行命令行,在命令行中,执行如下指令:
    npm install -g @vue/cli
    在这里插入图片描述
  • step6:验证Vue-cli是否安装成功
    vue --version
    出现版本号就成功了
    在这里插入图片描述
  • step7: 安装Vue的路由功能(先装上,后面会用上)
    npm install vue-router

2 Vue项目简介(创建)

(1)Vue项目创建

  • 创建Vue项目
    选择你要将项目创建的所在目录打开cmd, 有两种创建方案
    • 命令行:vue create 项目名
      注意项目名不能有大写字母
    • 图形化界面:vue ui
通过命令行创建(这个创建的比较简洁,有些自定义功能还是采用ui比较好)
  • step1: 在你想要创建vue项目的目录使用管理员权限打开命令行界面,执行命令
    vue create demo_vue_project
  • step2: 根据需求自行选择vue2或vue3
    在这里插入图片描述
    出现以下界面,项目创建成功:
    在这里插入图片描述

创建成功后就可以在工作目录看到创建的项目文件夹了

  • step3: 使用Vscode打开刚创建的项目
    在这里插入图片描述
  • step4: 启动vue项目,默认是8080端口
    • 命令行:在创建的项目的这级目录下cmd执行下面命令
      npm run serve
      在这里插入图片描述

直接Vscode里面启动服务
NPM脚本侧边栏没有解决方案:NPM侧边栏没有解决方案
npm:解决 “无法加载文件,因为在此系统上禁止运行脚本“ 问题
在这里插入图片描述
在这里插入图片描述
服务启动成功,我们使用URL来访问
在这里插入图片描述

  • step5: 端口切换
    直接修改 vue.config.js这个配置文件即可
    在这里插入图片描述
    在这里插入图片描述
通过图形界面创建
  • step1: 在你想要创建vue项目的目录使用管理员权限打开命令行界面,执行命令
    vue ui
    打开图形化界面
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
创建完成(下面界面可以直接关闭了)
在这里插入图片描述
在这里插入图片描述
直接通过VScode打开,下面的过程就和上面使用命令行创建一样了

(2)Vue项目目录介绍

  • 基于Vue脚手架创建出来的工程,有标准的目录结构,如下:
    在这里插入图片描述

【注】:由于Vue的版本或者一些其他问题,命令行创建的router和views目录可能没有,图形化界面我们勾选了router插件所以就有了,所以更加推荐图形化界面创建Vue项目。

3 Vue项目开发流程

(1)Vue项目结构代码解释

  • index.html : 默认的首页入口html文件
    该html文件默认导入的main.js文件
    在这里插入图片描述
  • 组件:在Vue中 .vue后缀的文件就是一个组件
    这种组件理解成一个div块,里面定义了这个块的html,css样式,还有javaScript。这样就完美的封装成一个组件可以重复应用了
    export default : 这是导出组件的语法,用这个修饰,在其他文件中就能使用 import导入这个 .vue组件对象(框架自动将这个.vue文件封装成一个组件实例化对象)
    在这里插入图片描述

上面这些都是固定的,暂时不理解没有什么。下面我们会通过学习Element组件库来展示具体怎么使用,通过具体的练习才好理解。

  • main.js文件解析
import Vue from 'vue'                       // 导入vue库
import App from './App.vue'                 // 导入App.vue组件
import router from './router'               // 导入router文件夹下的index.js文件Vue.config.productionTip = false             // 阻止显示生产模式的消息new Vue({router,                                    // 注册路由,固定写法render: h => h(App)                        // 渲染App.vue组件 , h是createElement函数,将App.vue组件对象转换为虚拟DOM对象挂载到html页面上 app元素上
}).$mount('#app') // 上面的代码等价于下面的代码/* new Vue({el: '#app',router: router,        // 注册路由,根据导入的router文件夹下的index.js文件生成了一个router对象,键和值相同,可以简写为routerrender: h => h(App)    // 渲染App.vue组件 , h是createElement函数,将App.vue组件对象转换为虚拟DOM对象挂载到html页面上 app元素上
}) */
  • .vue组件 语法
    • template : 里面写html
    • style: 里面写 css样式
    • script: 里面写之前Vue对象里面的数据模型、JS方法函数等等(具体案例演示)
    • 各个vue组件之间是独立的,也就是说,不同Vue组件里面的元素id和class这些就算名字相同,不会冲突,各个组件只能管自己的事情。

之前数据模型和方法是这种写法:
在这里插入图片描述
现在在Vue模版里面变成下面这样了:

<template><!-- 组件的模板部分 --><div class="my-component"><!-- 组件的内容 --><h1>{{ title }}</h1><button @click="handleClick">Click Me</button></div>
</template><script>
// 组件的逻辑部分
export default {name: 'MyComponent', // 组件名称(推荐使用大驼峰命名)props: {// 定义组件的 props(从父组件接收的数据)initialTitle: {type: String, // 类型校验default: 'Hello, Vue!' // 默认值}},data() {// 组件的内部状态return {title: this.initialTitle // 使用 props 初始化 data};},computed: {// 计算属性reversedTitle() {return this.title.split('').reverse().join('');}},watch: {// 监听器title(newTitle, oldTitle) {console.log(`Title changed from ${oldTitle} to ${newTitle}`);}},methods: {// 组件的方法handleClick() {this.title = 'Button Clicked!';}},// 生命周期钩子created() {console.log('Component created');},mounted() {console.log('Component mounted');}
};
</script><style scoped>
/* 组件的样式部分 */
/* 使用 scoped 属性将样式限制在当前组件内 */
.my-component {text-align: center;padding: 20px;font-family: Arial, sans-serif;
}h1 {color: #42b983;
}button {padding: 10px 20px;background-color: #42b983;color: white;border: none;border-radius: 5px;cursor: pointer;
}button:hover {background-color: #369c6e;
}
</style>

下面解释一下这个模版,主要理解一下那个父组件传递数据给子组件的机制,采用的是v-bind指令

相关文章:

5 前端系统开发:Vue2、Vue3框架(中):Vue前端工程化组件式开发

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言五、前端工程化&#xff08;使用Vue创建一个完整的企业级前端项目&#xff09;1 Vue脚手架&#xff08;Vue-cli&#xff09;环境准备&#xff08;1&#xff09;…...

【Leetcode刷题记录】1456. 定长子串中元音的最大数目---定长滑动窗口即解题思路总结

1456. 定长子串中元音的最大数目 给你字符串 s 和整数 k 。请返回字符串 s 中长度为 k 的单个子字符串中可能包含的最大元音字母数。 英文中的 元音字母 为&#xff08;a, e, i, o, u&#xff09;。 这道题的暴力求解的思路是通过遍历字符串 s 的每一个长度为 k 的子串&#xf…...

Rust中使用ORM框架diesel报错问题

1 起初环境没有问题&#xff1a;在Rust开发的时候起初使用的是mingw64平台加stable-x86_64-pc-windows-gnu编译链&#xff0c;当使用到diesel时会报错&#xff0c;如下&#xff1a; x86_64-w64-mingw32/bin/ld.exe: cannot find -lmysql具体信息很长这是主要信息是rust找不到链…...

Java 数据库连接池:HikariCP 与 Druid 的对比

Java 数据库连接池&#xff1a;HikariCP 与 Druid 的对比 数据库连接池&#xff1a;HikariCP 1. 卓越的性能表现 HikariCP 在数据库连接池领域以其卓越的性能脱颖而出。 其字节码经过精心优化&#xff0c;减少了不必要的开销&#xff0c;使得连接获取和释放的速度极快。 在…...

04树 + 堆 + 优先队列 + 图(D1_树(D7_B+树(B+)))

目录 一、基本介绍 二、重要概念 非叶节点 叶节点 三、阶数 四、基本操作 等值查询(query) 范围查询(rangeQuery) 更新(update) 插入(insert) 删除(remove) 五、知识小结 一、基本介绍 B树是一种树数据结构&#xff0c;通常用于数据库和操作系统的文件系统中。 B树…...

MATLAB实现单层竞争神经网络数据分类

一.单层竞争神经网络介绍 单层竞争神经网络&#xff08;Single-Layer Competitive Neural Network&#xff09;是一种基于竞争学习的神经网络模型&#xff0c;主要用于数据分类和模式识别。其核心思想是通过神经元之间的竞争机制&#xff0c;使得网络能够自动学习输入数据的特…...

AITables首发:基于AI全自动推理设计数据库,国内首创,跑5分钟相当于架构师设计一周!

AITables仅运行5分钟&#xff0c;整个系统的表都设计好了&#xff01; 随着AI大模型技术的开源普及和平民化&#xff0c;现如今任何一个人都有可能成为超级个体。但随着企业级业务的膨胀和业务挑战增多&#xff0c;我们势必要跟上AI发展的节奏&#xff0c;让AI帮我们设计软件。…...

Go语言中结构体字面量

结构体字面量&#xff08;Struct Literal&#xff09;是在 Go 语言中用于创建和初始化结构体实例的一种语法。它允许你在声明结构体变量的同时&#xff0c;直接为其字段赋值。结构体字面量提供了一种简洁、直观的方式来创建结构体对象。 结构体字面量有两种主要形式&#xff1…...

PaddleOCR 截图自动文字识别

春节假期在家无聊&#xff0c;撸了三个小工具&#xff1a;PC截图编辑/PC录屏(用于meeting录屏)/PC截屏文字识别。因为感觉这三个小工具是工作中常常需要用到的&#xff0c;github上也有很多开源的&#xff0c;不过总有点或多或少的小问题&#xff0c;不利于自己的使用。脚本的编…...

【Blazor学习笔记】.NET Blazor学习笔记

我是大标题 我学习Blazor的顺序是基于Blazor University&#xff0c;然后实际内容不完全基于它&#xff0c;因为它的例子还是基于.NET Core 3.1做的&#xff0c;距离现在很遥远了。 截至本文撰写的时间&#xff0c;2025年&#xff0c;最新的.NET是.NET9了都&#xff0c;可能1…...

UE求职Demo开发日志#21 背包-仓库-装备栏移动物品

1 创建一个枚举记录来源位置 UENUM(BlueprintType) enum class EMyItemLocation : uint8 {None0,Bag UMETA(DisplayName "Bag"),Armed UMETA(DisplayName "Armed"),WareHouse UMETA(DisplayName "WareHouse"), }; 2 创建一个BagPad和WarePa…...

力扣988. 从叶结点开始的最小字符串

Problem: 988. 从叶结点开始的最小字符串 文章目录 题目描述思路复杂度Code 题目描述 思路 遍历思想(利用二叉树的先序遍历) 在先序遍历的过程中&#xff0c;用一个变量path拼接记录下其组成的字符串&#xff0c;当遇到根节点时再将其反转并比较大小&#xff08;字典顺序大小&…...

《PYTHON语言程序设计》(2018版)1.7近似π。利用步幅来进行修改

利用循环的步幅来计算派 利用正常的办法, pi 4 *(1-(1/3)(1/5)-(1/7)(1/9)-(1/11)(1/13)-(1/15)) print(pi)利用这段代码得出结果 我们如何利用循环来进行呢 一、思路 首先我们来利用excel表格来计算一下结果 我做了一个设想,让相加的部分先进行相加,然后再进行减法呢?? 结…...

低通滤波算法的数学原理和C语言实现

目录 概述 1 原理介绍 1. 1 基本概念 1.2 一阶RC低通滤波器模型 2 C语言完整实现 2.1 滤波器结构体定义 2.2 初始化函数 2.3 滤波计算函数 3 应用示例 3.1 噪声信号滤波 3.2 输出效果对比 3.3 关键参数选择指南 4 性能优化技巧 4.1 定点数优化 4.2 抗溢出处理 …...

【BUUCTF杂项题】荷兰宽带数据泄露、九连环

一.荷兰宽带数据泄露 打开发现是一个.bin为后缀的二进制文件&#xff0c;因为提示宽带数据泄露&#xff0c;考虑是宽带路由器方向的隐写 补充&#xff1a;大多数现代路由器都可以让您备份一个文件路由器的配置文件&#xff0c;软件RouterPassView可以读取这个路由配置文件。 用…...

安全策略实验报告

1.实验拓扑图 2.实验需求 vlan2属于办公区&#xff0c;vlan3生产区 办公区pc在工作日时间可以正常访问OAserver&#xff0c;i其他时间不允许 办公区pc可以在任意时间访问Web server 生产区pc可以在任意时间访问OA server但不能访问web server 特例&#xff1a;生产区pc可以…...

Haproxy+keepalived高可用集群,haproxy宕机的解决方案

Haproxykeepalived高可用集群&#xff0c;允许keepalived宕机&#xff0c;允许后端真实服务器宕机&#xff0c;但是不允许haproxy宕机&#xff0c; 所以下面就是解决方案 keepalived配置高可用检测脚本 &#xff0c;master和backup都要添加 配置脚本 # vim /etc/keepalived…...

亚博microros小车-原生ubuntu支持系列:20 ROS Robot APP建图

依赖工程 新建工程laserscan_to_point_publisher src/laserscan_to_point_publisher/laserscan_to_point_publisher/目录下新建文件laserscan_to_point_publish.py #!/usr/bin/env python3import rclpy from rclpy.node import Node from geometry_msgs.msg import PoseStam…...

Dockerfile构建容器镜像

Dockerfile 是一种文本格式的配置文件&#xff0c;用于自动化构建 Docker 镜像。它包含了一系列指令&#xff08;命令&#xff09;&#xff0c;每个指令定义了容器镜像构建过程中的一步操作。通过Dockerfile&#xff0c;我们可以指定基础镜像、安装依赖、配置环境变量、复制文件…...

python 在包含类似字符\x16、\x12、\x某某的数组中将以\x开头的字符找出来的方法

话不多说直接看例子&#xff1a; import re# 原始列表 data [\x16, \x17, s, \x16, hello, \x1A]# 正则表达式匹配以 \x 开头的字符串 pattern r^\\x# 找出以 \x 开头的字符 result [item for item in data if isinstance(item, str) and re.match(pattern, repr(item)[1:-…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

【JVM面试篇】高频八股汇总——类加载和类加载器

目录 1. 讲一下类加载过程&#xff1f; 2. Java创建对象的过程&#xff1f; 3. 对象的生命周期&#xff1f; 4. 类加载器有哪些&#xff1f; 5. 双亲委派模型的作用&#xff08;好处&#xff09;&#xff1f; 6. 讲一下类的加载和双亲委派原则&#xff1f; 7. 双亲委派模…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)

前言&#xff1a; 双亲委派机制对于面试这块来说非常重要&#xff0c;在实际开发中也是经常遇见需要打破双亲委派的需求&#xff0c;今天我们一起来探索一下什么是双亲委派机制&#xff0c;在此之前我们先介绍一下类的加载器。 目录 ​编辑 前言&#xff1a; 类加载器 1. …...

苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会

在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...

Kafka主题运维全指南:从基础配置到故障处理

#作者&#xff1a;张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1&#xff1a;主题删除失败。常见错误2&#xff1a;__consumer_offsets占用太多的磁盘。 主题日常管理 …...

【WebSocket】SpringBoot项目中使用WebSocket

1. 导入坐标 如果springboot父工程没有加入websocket的起步依赖&#xff0c;添加它的坐标的时候需要带上版本号。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dep…...

LangChain 中的文档加载器(Loader)与文本切分器(Splitter)详解《二》

&#x1f9e0; LangChain 中 TextSplitter 的使用详解&#xff1a;从基础到进阶&#xff08;附代码&#xff09; 一、前言 在处理大规模文本数据时&#xff0c;特别是在构建知识库或进行大模型训练与推理时&#xff0c;文本切分&#xff08;Text Splitting&#xff09; 是一个…...

书籍“之“字形打印矩阵(8)0609

题目 给定一个矩阵matrix&#xff0c;按照"之"字形的方式打印这个矩阵&#xff0c;例如&#xff1a; 1 2 3 4 5 6 7 8 9 10 11 12 ”之“字形打印的结果为&#xff1a;1&#xff0c;…...