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

vue3项目 文件组成

从头捋顺一遍vue3项目文件目录

  • 前置知识
    • JS模块化
    • 什么是依赖?
    • 安装依赖
    • webpack能做什么?
    • vue基本使用
  • 不借助vue-cli,从0开始搭建vue项目。
    • index.html、main.js、App.vue
    • 引入npm
    • 引入webpack
    • 引入babel
    • 引入vue-loader
    • webpack配置
    • webpack配置

前置知识

JS模块化

在js刚刚出现的时候,是为了实现一些简单的功能,但随着浏览器的不断发展,js越来越被重视起来,可以实现较为复杂的功能。这个时候开发者为了维护方便,会把不同功能的模块抽离出来写入单独的js文件,但是当项目更为复杂的时候,html可能会引入很多个js文件,而这个时候就会出现命名冲突,污染作用域等一系列问题,这个时候模块化的概念及实现方法应运而生。

什么是依赖?

简单来说,就是我们的项目需要用到的其他的代码库或者模块,比如jQuery,React,Bootstrap等等。这些依赖可以帮助我们实现一些常用的功能,或者提供一些优秀的设计和交互。

但是,如果我们要手动下载和管理这些依赖,那么就会非常麻烦和耗时。所以,我们需要使用一些专门的工具来帮助我们自动化地安装和更新依赖,这就是我们要介绍的内容。目前,前端开发中最常用的两个依赖管理工具是npm和yarn。

安装依赖

https://www.w3cschool.cn/article/74549379.html

npm是Node.js的默认包管理器,它已经随着Node.js一起安装在了我们的电脑上。要使用npm来安装依赖,我们只需要在项目根目录下创建一个package.json文件,或者使用npm init -y命令来自动生成一个。然后,在package.json文件中的dependencies或者devDependencies字段中添加我们需要的依赖名称和版本号。

添加好了依赖之后,我们就可以在项目根目录下运行npm install命令来安装所有的依赖。这个命令会根据package.json文件中的信息,在项目中创建一个node_modules文件夹,并且把所有的依赖下载到这个文件夹中。同时,它还会生成一个package-lock.json文件,用来记录每个依赖的确切版本号和来源。这样可以保证我们在不同的环境中安装相同的依赖。

注意, package.json 里两个重要的属性相关:dependencies 以及 devDependencies。dependencies和devDependencies的区别是,前者是我们项目运行时需要的依赖,后者是我们项目开发时需要的依赖。一般来说,我们把一些打包,编译,测试等工具放在devDependencies中,把一些UI库,框架等放在dependencies中。

webpack能做什么?

把很多文件打包整合到一起, 缩小项目体积, 提高加载速度

(功能:如less/sass -> css,ES6/7/8 -> ES5 处理js兼容,支持js模块化,处理css兼容性,html/css/js -> 压缩合并)

vue基本使用

如果要使用vue,就要先安装。

以vue2为例,可以直接用script标签引入、CDN、NPM。

官网 https://v2.cn.vuejs.org/v2/guide/installation.html#%E7%9B%B4%E6%8E%A5%E7%94%A8-lt-script-gt-%E5%BC%95%E5%85%A5

以vue3为例,可以 ① npm create vue@latest ② CDN

https://cn.vuejs.org/guide/quick-start.html

至此,我们可以在html中使用vue做一些小demo。但是无法完成大型项目。 所以引入了SFC单页面组件、vue-cli、vite来构造大型项目。

不借助vue-cli,从0开始搭建vue项目。

参考视频 https://www.bilibili.com/video/BV1dt4y1K7BF/?spm_id_from=333.788&vd_source=ceab44fb5c1365a19cb488ab650bab03

使用vue-cli直接生成的项目文件很多,我们这里不借助vue-cli,从0开始搭建vue项目。

index.html、main.js、App.vue

创建应用,应用需要根组件App.vue,应用挂载在HTML(#app)上。

官方文档 https://cn.vuejs.org/guide/essentials/application.html

//第一步:创建应用
// 每个 Vue 应用都是通过 createApp 函数创建一个新的 应用实例
import { createApp } from 'vue'const app = createApp({/* 根组件选项 */
})//第二步:每个应用都需要一个“根组件”
// 我们传入 createApp 的对象实际上是一个组件,每个应用都需要一个“根组件”,其他组件将作为其子组件。
import { createApp } from 'vue'
// 从一个单文件组件中导入根组件
import App from './App.vue'const app = createApp(App)//第三步:挂载应用
<div id="app"></div>
app.mount('#app')

最终:

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'const app = createApp(App)app.use(store)
app.use(router)app.mount('#app')// 也可以简写为 createApp(App).use(store).use(router).mount('#app')

引入npm

XXX.vue 不能直接交给浏览器运行,所以得先进行处理和加工。要在浏览器中使用.vue文件,需要将其编译为可在浏览器中运行的JavaScript代码。有两个渠道:① webpack ② vue-cli (官方帮忙搭建的 webpack )

除此之外,项目可能需要用到别的框架、依赖,就引入了npm包管理器进行统一管理。

接上文。

  • 下载node之后,就会自动带有npm。在文件夹中npm init -y,会生成package.json文件。

  • npm i vue安装vue。package.json文件的dependencies中就会多了vue信息,意思就是添加了vue依赖。

  • package-lock.json 锁定依赖的版本号

  • 所有的依赖都会放在node_modules中

引入webpack

项目源文件越来越多,引入webpack打包。

  • 安装依赖 webpack、webpack-cli、webpack-dev-server

    npm i -D xxx安装依赖。-D的意思是这些以来不放在生产环境上,只是开发时使用。

  • 创建文件webpack.config.js。webpack在此文件进行配置。

引入babel

因为并不是每个浏览器都能支持ES6的语法,因此我们需要Babel来把代码从高版本转成低版本。

  • 安装babel依赖(配合core preset-env使用)

    npm i -D babel-loader @babel/core @babel/preset-env

引入vue-loader

浏览器无法识别vue单文件,用vue-loader以来进行识别。

CSS部分需要vue-template-compiler 和css-loader依赖

需要把源文件的HTML 和 JS合并->需要html-webpacl-plugin

  • npm i -D vue-loader vue-template-compiler css-loader vue-style-loader html-webpacl-plugin

webpack配置

  • webpack.config.js

JS合并->需要html-webpacl-plugin

  • npm i -D vue-loader vue-template-compiler css-loader vue-style-loader html-webpacl-plugin

webpack配置

  • webpack.config.js

入口文件等

相关文章:

vue3项目 文件组成

从头捋顺一遍vue3项目文件目录 前置知识JS模块化什么是依赖&#xff1f;安装依赖webpack能做什么&#xff1f;vue基本使用 不借助vue-cli&#xff0c;从0开始搭建vue项目。index.html、main.js、App.vue引入npm引入webpack引入babel引入vue-loaderwebpack配置webpack配置 前置知…...

C语言关键字 typedef 的功能是什么?

一、问题 语⾔有 32 个关键字&#xff0c;其中 int 的功能是声明整型变量&#xff0c;struct 的功能是声明结构体变量&#xff0c;那么 typedef 的功能是什么呢&#xff1f; 二、解答 1. typedef 的功能 在 C 语⾔中除了可以使⽤标准类型名&#xff08;如 int、 char、float …...

【YoloDeployCsharp】基于.NET Framework的YOLO深度学习模型部署测试平台-源码下载与项目配置

基于.NET Framework 4.8 开发的深度学习模型部署测试平台,提供了YOLO框架的主流系列模型,包括YOLOv8~v9,以及其系列下的Det、Seg、Pose、Obb、Cls等应用场景,同时支持图像与视频检测。模型部署引擎使用的是OpenVINO™、TensorRT、ONNX runtime以及OpenCV DNN,支持CPU、IGP…...

如何在 Ubuntu 12.04 VPS 上使用 MongoDB 创建分片集群

简介 MongoDB 是一个 NoSQL 文档数据库系统&#xff0c;可以在水平方向上很好地扩展&#xff0c;并通过键值系统实现数据存储。作为 Web 应用程序和网站的热门选择&#xff0c;MongoDB 易于实现并可以通过编程方式访问。 MongoDB 通过一种称为“分片”的技术实现扩展。分片是将…...

阿里云VOD视频点播流程(1)

一、开通阿里云VOD 视频点播&#xff08;ApsaraVideo VoD&#xff0c;简称VOD&#xff09;是集视频采集、编辑、上传、媒体资源管理、自动化转码处理、视频审核分析、分发加速于一体的一站式音视频点播解决方案。登录阿里云&#xff0c;在产品找到视频点播VOD &#xff0c;点击…...

Python爬虫获取豆瓣电影Top100

大家好&#xff0c;我是秋意零。 今天分析一篇&#xff0c;Python爬虫获取豆瓣电影Top100。 在此之前&#xff0c;我没有学习过爬虫&#xff0c;只有一丢丢的Python基础。下面效果的实现源码几乎没经过我&#xff0c;而是AI百老师。我主要负责了对应的调试以及根据我想要的功…...

动态规划专训8——背包问题

动态规划题目中&#xff0c;常出现背包的相关问题&#xff0c;这里单独挑出来训练 A.01背包 1.01背包模板题 【模板】01背包_牛客题霸_牛客网 (nowcoder.com) 你有一个背包&#xff0c;最多能容纳的体积是V。 现在有n个物品&#xff0c;第i个物品的体积为&#x1d463;&am…...

软件杯 深度学习花卉识别 - python 机器视觉 opencv

文章目录 0 前言1 项目背景2 花卉识别的基本原理3 算法实现3.1 预处理3.2 特征提取和选择3.3 分类器设计和决策3.4 卷积神经网络基本原理 4 算法实现4.1 花卉图像数据4.2 模块组成 5 项目执行结果6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &a…...

学习笔记:【QC】Android Q - IMS 模块

一、IMS init 流程图 高清的流程图参考&#xff1a;【高清图&#xff0c;保存后可以放大看】 二、IMS turnon 流程图 高清的流程图参考&#xff1a;【高清图&#xff0c;保存后可以放大看】 三、分析说明 1、nv702870 不创建ims apn pdp 2、nv702811 nv702811的时候才创建…...

NodeMCU ESP8266 操作 SSD1306 OLED显示屏详解(图文并茂)

文章目录 1 模块介绍2 接线介绍3 安装SSD1306驱动库4 源码分析4.1 硬件兼容性4.2 可能存在的问题总结1 模块介绍 我们将在本教程中使用的OLED显示屏是SSD1306型号:单色0.96英寸显示屏,像素为12864,如下图所示。 OLED显示屏不需要背光,这在黑暗环境中会产生非常好的对比度。…...

不抽象:Increase API 设计原则

原文&#xff1a;Increase - 2024.04.26 &#xff08;注&#xff1a;Increase 是一家提供金融技术服务的公司。&#xff09; API 资源是 API 的实体或对象。决定如何为这些实体命名和建模可以说是设计 API 最难也是最重要的部分。您所公开的资源组织了用户对您的产品如何工作…...

mybatis调用数据库存储过程

mybatis调用数据库存储过程及常见属性详解 调用mapper String visitCode mapper.getVisitCode(objectMap);Dao层&#xff0c;xml文件代码编写 <select id"getVisitCode" parameterType"map" resultType"string" statementType"CALLAB…...

【git】发生冲突后回滚提交

gerrit 冲突&#xff0c; 无法合并到主干 那么先回滚 参考这里的 reset 操作&#xff1a; 回滚 到上一个提交 $ git reset --soft HEAD~1 # 數字表示移動到 HEAD後面第幾個刚提交的会撤回&#xff0c; stash 刚刚提交的 然后去pull 最新的 修改冲突&#xff1a; 最后再…...

ISO14229 -1 UDS诊断服务记录-001:0x34\0x36\0x37\0x31\0x19\0x14服务报文格式介绍

目录 1、34服务-请求下载 1.1、诊断请求格式 1.2、正响应格式 1.3、负响应格式 1.4、工程应用分析 2、36服务-传输数据 2.1、请求报文格式 2.2、正响应格式 2.3、负响应NRC 3、37服务-退出传输 3.1、报文格式 3.2、正响应格式 3.3、负响应NRC 4、31服务-例程控制 …...

使用 MediaMTX 和 FFmpeg 推拉 RTSP 流媒体

实时流传输协议 RTSP&#xff08;Real-Time Streaming Protocol&#xff09;是 TCP/IP 协议体系中的一个应用层协议&#xff0c;由哥伦比亚大学、网景和 RealNetworks 公司提交的 IETF RFC 标准。该协议定义了一对多应用程序如何有效地通过 IP 网络传送多媒体数据。RTSP 在体系…...

Mac 电脑安装 Raptor 流程图软件的方法

0. 安装逻辑 &#xff08;1&#xff09;运行 raptor&#xff0c;本质上需要 mac 能够运行 windows 程序&#xff0c;因此需要安装 .NET Runtime 7.0&#xff0c;这是微软程序运行必须的文件。 &#xff08;2&#xff09;运行 raptor 还需要安装依赖文件 mono-libgdiplus。 &am…...

W801学习笔记二十:宋词学习应用

前三章完成了唐诗的应用&#xff0c;本章将实现宋词的学习应用。 宋词与唐诗的区别不大&#xff0c;马上开始。 1、我们需要参考前面唐诗的方式&#xff0c;把宋词文本下载下来&#xff0c;并进行格式整理。 W801学习笔记十七&#xff1a;古诗学习应用——上 2、在菜单中添加…...

EPAI手绘建模APP转换模型和坐标系

(11) 模型转换 图 273 转换工具栏 ① 实体转成曲面&#xff0c;先选择需要转成曲面的实体模型&#xff0c;再点击该按钮。将选择的实体模型转成多个曲面。 ② 曲线转成NURBS样条曲线&#xff0c;先选择需要转成NURBS样条曲线的边模型&#xff0c;修改转换参数&#xff0c;将选…...

STM32快速入门(串口传输之USART)

STM32快速入门&#xff08;串口传输之USART&#xff09; 前言 USART串口传输能实现信息在设备之间的点对点传输&#xff0c;支持单工、半双工、全全双工&#xff0c;一般是有三个引脚&#xff1a;TX、RX、SW_RX&#xff08;共地&#xff09;。不需要一根线来同步时钟。最大优…...

什么是网络安全和网络隐私?

什么是网络安全?这个是我最感兴趣的话题,网络安全说白了就是在网络上的安全,跟现实中一样,现实中为了家里的安全,我们会给家门上锁,会装监控,农村的话可能还会养一条狗,只有我们让别人进我们家,别人才能进来,对于计算机来说也是一样的,我们会设置账户的密码,会设置防火墙,会安…...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...