一文快速上手-create-vue脚手架
文章目录
- 初识 create-vue
- create-vue新建项目
- Vue.js 3 项目目录结构
- 项目的运行和打包
- vite.config.js文件解析
- 其他:webpack和Vite的区别
初识 create-vue
create-vue类似于Vue CLI脚手架,可以快速创建vuejs 3项目,create-vue基于Vite。Vite支持Vue CLI中的大多数配置,并且Vite以极速启动服务、快如闪电的热重载,提供了更好的开发体验。
与Vue CLI 不同的是,create-vue脚手架会根据你选择的功能创建一个预配置的项目,然后将其余部分委托给Vite。
注意:create-vue脚手架要求Node.js版本大于16。
create-vue新建项目
create-vue脚手架创建vue3版本项目,有两种常见的方式。
1.全局安装create-vue脚手架
npm i create-vue@latest -g
使用create-vue命令创建Vue.js 3 项目。
创建项目命令:
create-vue createapp-vue3demo
其中createapp-vue3demo是项目名称。
2.局部安装create-vue脚手架
npm init vue@latest
这里执行npm init vue@latest的意思:
- 临时安装
create-vue@latest脚手架(注意:不是全局安装) - 安装完成后立即执行create-vue命令来创建项目
在VScode终端执行npm init vue@latest命令,创建一个如02-createapp-demo项目,如下所示(示例代码都选择了否,实际项目中根据需要选择相应的功能):
请输入项目名称: ... createapp_demo
√ 是否使用 TypeScript 语法? ... 否 / 是
√ 是否启用 JSX 支持? ... 否 / 是
√ 是否引入 Vue Router 进行单页面应用开发? ... 否 / 是
√ 是否引入 Pinia 用于状态管理? ... 否 / 是
√ 是否引入 Vitest 用于单元测试? ... 否 / 是
√ 是否要引入一款端到端(End to End)测试工具? » 不需要
√ 是否引入 ESLint 用于代码质量检测? ... 否 / 是
Vue.js 3 项目目录结构
createapp_demo/ # 项目的名称(命名规范:建议统一小写,多个单词使用下划线分割)
|-- public/ # 静态资源目录
| |-- favicon.ico # 网站图标
|-- src/ # 源代码目录
| |-- assets/ # 存放静态资源,如图片、字体等
| |-- components/ # 可复用的 Vue 组件目录
| |-- views/ # 页面目录,存放路由对应的组件
| |-- App.vue # 根组件
| |-- main.js # 项目的入口文件
| |-- main.ts # TypeScript 版本的入口文件(如果选择了 TypeScript)
|-- tsconfig.json # TypeScript 配置文件(如果选择了 TypeScript)
|-- .gitignore # Git 忽略的文件和目录
|-- index.html # 项目的入口 HTML 文件
|-- package.json # 项目的元数据和依赖信息
|-- package-lock.json # npm 依赖锁定文件
|-- vite.config.js # Vite 配置文件
|-- README.md # 项目说明文件
项目的运行和打包
"dev": "vite",
"build": "vite build",
"preview": "vite preview"
说明:
- dev:启动项目的本地运行脚本
- build:打包项目的脚本
- preview:预览编译后的项目的脚本
vite.config.js文件解析
与Vue CLI相同,create-vue脚手架也提供了一些常用的配置,方便我们进行扩展和自定义。这些配置包括outDir、assetsDir、alias、base和server等。
vite.config.js默认的配置代码如下:
import { fileURLToPath, URL } from 'node:url'import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'// https://vitejs.dev/config/
export default defineConfig({plugins: [vue(),],resolve: {alias: {'@': fileURLToPath(new URL('./src', import.meta.url))}}
})
- 1.outDir:指定打包输出的目录名称,默认是dist(与vue.config.js中的outputDir功能相同)。
export default defineConfig({......build: {outDir: 'build'}
})
- 2.assetsDir:用于指定静态资源存放的目录,默认是assets(与vue.config.js中的assetsDir功能相同)。
项目代码编译后,index.html引入资源默认情况如下:
<script type="module" crossorigin src="/assets/index-BEb411hP.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-BaMTLMsk.css">
配置:
export default defineConfig({......build: {outDir: 'build',assetsDir: 'static' // 指定静态资源存放目录(相对于build.outDir),默认是assets}
})
上面配置调整后,index.html引入资源情况如下:
<script type="module" crossorigin src="/static/index-lKLvkvL0.js"></script>
<link rel="stylesheet" crossorigin href="/static/index-BaMTLMsk.css">
- 3.base:用于指定开发或者生产的公共基础路径,即指定引用资源的前缀(与vue.config.js中的publicPath功能相同),代码如下:
export default defineConfig({base: './'
})
base属性支持:
- 绝对URL路径,如`/my-app/`
- 完整URL,如`http://it.com/`;
- 用于开发或者生产环境的空字符串或'./'
- 4.alias:用于为导包的路径设置别名(与vue.config.js中的alias功能相同),示例代码如下:
export default defineConfig({.......resolve: {alias: {'@': fileURLToPath(new URL('./src', import.meta.url)),'components': fileURLToPath(new URL('./src/components', import.meta.url))}},......
})
引入HelloWorld组件就有如下三种方式:
import HelloWorld from './components/HelloWorld.vue'
import HelloWorld from '@/components/HelloWorld.vue'
import HelloWorld from 'components/HelloWorld.vue'
- 5.server:用于开发环境设置服务器选项
示例:
import { defineConfig } from "vite";// https://vitejs.dev/config/
export default defineConfig({server: {host: "localhost",port: 8081,open: true,proxy: {},},
});
其他:webpack和Vite的区别
Vue CLI是基于webpack实现的,而create-vue是基于vite实现的。
主要区别:
- 在打包应用程序时,webpack会生成一个依赖关系图。该依赖关系图中含有应用程序所需要的所有模块,然后遍历图结构,编译一个个模块,当某个模块有变化时,相关依赖模块需要全部编译一次。项目越复杂、模块越多,打包速度就越慢。
- Vite利用ES Module 可以自动发起请求的特性,在打包应用程序时,Vite不需要分析模块的依赖,也不需要编译。当浏览器请求某个模块时,再按需对模块内容进行编译,这种按需动态编译的方式大幅度减少了编译时间。因此,Vite的启动速度非常快,比JavaScript编写的打包器预构建依赖的速度快10倍到100倍,项目越复杂、模块越多。
- Vite 天然支持打包TypeScript、JSX、CSS等文件;而webpack需要安装对应的Loader进行处理。
- webpack支持开发和生产环境打包;Vite在打包生产环境时需要使用Rollup,Vite的主要优势体现在开发阶段。
- webpack无论是自身优势还是生态都非常强大,使用者非常多;而Vite的整个社区生态正在快速完善。
说明:
ES Module是 JavaScript 的官方模块化标准,它允许开发者通过import和export语句来组织和分享代码。特别地,ES Module支持动态导入,即使用import()函数来异步地加载一个模块。这种动态导入的特性为 Vite 提供了按需编译的基础。
注意事项:
- 虽然 Vite 的按需编译策略在开发过程中非常有效,但在生产环境中,通常仍然需要静态地分析和打包代码,以确保最佳的加载性能和兼容性。因此,Vite 提供了构建命令,用于在生产环境中生成优化过的代码 bundle。
- 在企业生产环境中,建议优先选择 Vue CLI脚手架,因为 webpack 经过多年发展,已经非常稳定,社区生态也非常成熟。
相关文章:
一文快速上手-create-vue脚手架
文章目录 初识 create-vuecreate-vue新建项目Vue.js 3 项目目录结构项目的运行和打包vite.config.js文件解析其他:webpack和Vite的区别 初识 create-vue create-vue类似于Vue CLI脚手架,可以快速创建vuejs 3项目,create-vue基于Vite。Vite支…...
笔记整理—内核!启动!—kernel部分(7)rcs文件和登录部分与密码解析
该文件的位置在/etc/init.d/rcs,前文说过这个是一个配置文件,最开始的地方首先就是PATH相关的用export导出相关的PATH做环境变量,将可执行路径导为PATH执行时就不用写全路径了,该位置的PATH路径导出了/bin、/sbin、/usr/bin、/usr…...
朴素贝叶斯 (Naive Bayes)
朴素贝叶斯 (Naive Bayes) 通俗易懂算法 朴素贝叶斯(Naive Bayes)是一种基于概率统计的分类算法。它的核心思想是通过特征的条件独立性假设来简化计算复杂度,将复杂的联合概率分布分解为特征的独立概率分布之积。 基本思想 朴素贝叶斯基于…...
高德2.0 多边形覆盖物无法选中编辑
多边形覆盖物无法选中编辑。先检查一下数据的类型得是<number[]>,里面是字符串的虽然显示没问题,但是不能选中编辑。 (在项目中排查了加载时机,事件监听…等等种种原因,就是没发现问题。突然想到可能是数据就有问题…...
时序最佳入门代码|基于pytorch的LSTM天气预测及数据分析
前言 在本篇文章,我们基于pytorch框架,构造了LSTM模型进行天气预测,并对数据进行了可视化分析,非常值得入门学习。该数据集提供了2013年1月1日至2017年4月24日在印度德里市的数据。其中包含的4个参数是平均温度(meant…...
85-MySQL怎么判断要不要加索引
在MySQL中,决定是否为表中的列添加索引通常基于查询性能的考量。以下是一些常见的情况和策略: 查询频繁且对性能有影响的列:如果某个列经常用于查询条件,且没有创建索引,查询性能可能会下降。 在WHERE、JOIN和ORDER B…...
车载软件架构 --- SOA设计与应用(中)
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…...
MATLAB求解微分方程和微分方程组的详细分析
目录 引言 微分方程的定义 MATLAB求解常微分方程 参数分析: MATLAB求解偏微分方程 刚性和非刚性问题 总结 引言 微分方程在物理、工程、经济和生物等多个领域有着广泛的应用。它们用于描述系统中变量与其导数之间的关系,通过这些方程可以解释和预…...
Sybase「退役」在即,某公共卫生机构如何实现 SAP Sybase 到 PostgreSQL 的持续、无缝数据迁移?
使用 TapData,化繁为简,摆脱手动搭建、维护数据管道的诸多烦扰,轻量替代 OGG, Kettle 等同步工具,以及基于 Kafka 的 ETL 解决方案,「CDC 流处理 数据集成」组合拳,加速仓内数据流转,帮助企业…...
如何通过Chrome浏览器轻松获取视频网站的TS文件
在当今这个信息爆炸的时代,视频内容成为了我们获取知识和娱乐的重要方式。然而,许多视频网站出于版权保护等原因,往往限制用户直接下载视频。今天,我将教你如何利用Chrome浏览器轻松下载视频网站的TS文件,甚至批量下载…...
Linux下进程间的通信--共享内存
共享内存概述: 共享内存是进程间通信的一种方式,它允许两个或多个进程共享一个给定的存储区。共享内存是最快的一种IPC形式,因为它允许进程直接对内存进行读写操作,而不需要数据在进程之间复制。 共享内存是进程间通信ÿ…...
Big Data 流处理框架 Flink
Big Data 流处理框架 Flink 什么是 FlinkFlink 的主要特性典型应用场景 Amazon Elastic MapReduce (EMR) VS Flink架构和运行时环境实时处理能力开发和编程模型操作和管理应用场景总结 Flink 支持的数据源Flink 如何消费 AWS SQS 数据源自定义 Source FunctionFlink Connector …...
校园水电费管理微信小程序的设计与实现+ssm(lw+演示+源码+运行)
校园水电费管理小程序 摘 要 随着社会的发展,社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。 本文以实际运用为开发背景,运用软件工程原理和开发方法,它主要是采用java语言技术和mysql数据库来…...
HashMap线程不安全|Hashtable|ConcurrentHashMap
文章目录 常见集合线程安全性HashMap为什么线程不安全?怎么保证HashMap线程安全 HashtableConcurrentHashMap 引入细粒度锁代码中分析总结 小结 常见集合线程安全性 ArrayList、LinkedList、TreeSet、HashSet、HashMap、TreeMap等都是线程不安全的。 HashTable是线…...
01 会计概述
会计的定义:会计是以货币为计量单位,反映和监督一个单位经济活动的一种经济管理活动。会计的作用:就是提供决策信息、促使企业加强经营管理、考核管理层经济责任履行情况。会计人员职业道德:坚持诚信,守法奉公…...
开放式激光振镜运动控制器在Ubuntu+Qt下的文本标刻
开放式激光振镜运动控制器在UbuntuQt下的文本标刻 上节课程我们讲述了如何通过UbuntuQt进行振镜校正(详情点击→开放式激光振镜运动控制器在UbuntuQt下的激光振镜校正),本节文本标刻是在振镜校正的前提下实现的。 在正式学习之前࿰…...
推荐3款AIai论文大纲一键生成文献,精选整理!
在当前的学术写作环境中,AI论文大纲生成工具已经成为许多学者和学生的重要助手。这些工具不仅能够快速生成高质量的论文大纲,还能提供内容填充、文献引用和查重修改等全方位的服务。以下是三款值得推荐的AI论文大纲一键生成文献工具:千笔-AIP…...
数据库之索引<保姆级文章>
目录: 一. 什么是索引 二. 索引应该选择哪种数据结构 三. MySQL中的页 四. 索引分类及使用 一. 什么是索引: 1. MySQL的索引是⼀种数据结构,它可以帮助数据库高效地查询、更新数据表中的数据。 索引通过 ⼀定的规则排列数据表中的记录&#x…...
多维时序 | Matlab基于BO-LSSVM贝叶斯优化最小二乘支持向量机数据多变量时间序列预测
多维时序 | Matlab基于BO-LSSVM贝叶斯优化最小二乘支持向量机数据多变量时间序列预测 目录 多维时序 | Matlab基于BO-LSSVM贝叶斯优化最小二乘支持向量机数据多变量时间序列预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab基于BO-LSSVM贝叶斯优化最小二乘支…...
Netty笔记03-组件Channel
文章目录 Channel概述Channel 的概念Channel 的主要功能Channel 的生命周期Channel 的状态Channel 的类型channel 的主要方法 ChannelFutureCloseFuture💡 netty异步提升的是什么要点总结 Channel概述 Channel 的概念 在 Netty 中,Channel 是一个非常重…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...
【SpringBoot自动化部署】
SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一,能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时,需要添加Git仓库地址和凭证,设置构建触发器(如GitHub…...
【无标题】湖北理元理律师事务所:债务优化中的生活保障与法律平衡之道
文/法律实务观察组 在债务重组领域,专业机构的核心价值不仅在于减轻债务数字,更在于帮助债务人在履行义务的同时维持基本生活尊严。湖北理元理律师事务所的服务实践表明,合法债务优化需同步实现三重平衡: 法律刚性(债…...
从零开始了解数据采集(二十八)——制造业数字孪生
近年来,我国的工业领域正经历一场前所未有的数字化变革,从“双碳目标”到工业互联网平台的推广,国家政策和市场需求共同推动了制造业的升级。在这场变革中,数字孪生技术成为备受关注的关键工具,它不仅让企业“看见”设…...
