【Vue学习笔记3】使用Vite开启一个Vue3工程项目

news2024/11/18 0:42:39

1. 什么是Vite?

Vite是一个web开发构建工具。Vite 的竞品是 Webpack,而且按照现在的趋势看,使用率超过 Webpack 也是早晚的事。

Vite 主要提升的是开发的体验,Webpack启动调试环境需要 3 分钟都很常见,Vite大大缩短了这个时间。

Vite开发环境不需要对所有资源打包,Vite将于构建的依赖缓存到node_modules/.vite目录下,它会根据几个源来决定是否需要重新运行预构建,包括 packages.json中的dependencies列表、包管理器的lockfile、可能在vite.config.js相关字段中配置过的。只要三者之一发生改变,才会重新预构建。否则,不进行构建,从而提高了速度。

2. 环境准备

2.1 安装 Node.js

过程是傻瓜式的,直接去Node.js 官网,选择 LTS 版本,也就是稳定版,进行下载和安装即可。

2.2 VS Code

VS Code 里进行 Vue 项目的开发。下载安装: https://code.visualstudio.com/

VS Code 的官方扩展插件 Volar,给 Vue 3 提供了全面的开发支持。访问 Volar 的地址,直接点击 Install,就会启动 VS Code 并且安装。

2.3 VueTools调试工具

Chrome 访问 Vue 3 调试插件的地址(需要梯子) ,可以帮助我们在浏览器里高效的调试页面。

3. Vite创建Vue项目

在命令行窗口里,执行npm create vite@latest,就可以初始化一个VUE项目。

在Project name这一行,输入项目名字,例如:learn-vue3。
在Select a framework这一行,选择Vue。
在Select a variant这一行,选择JavaScript。

 % npm create vite@latest
Need to install the following packages:
  create-vite@4.3.1
Ok to proceed? (y) y
✔ Project name: … learn-vue3
✔ Select a framework: › Vue
✔ Select a variant: › JavaScript

Scaffolding project in /Users/chunming.liu/Downloads/learn-vue3...

Done. Now run:

  cd learn-vue3
  npm install
  npm run dev

进入到项目learn-vue3目录下,看下项目的骨架。

% cd learn-vue3
(base) chunming.liu@localhost learn-vue3 % tree
.
├── README.md
├── index.html                   入口文件
├── package.json                 依赖包管理文件,只会锁定大版本,某些依赖包小版本更新后,可能造成依赖结构的改动
├── public                       资源文件
│   └── vite.svg
├── src                          源码文件夹
│   ├── App.vue                  单文件组件      
│   ├── assets                   静态资源
│   │   └── vue.svg
│   ├── components               通用业务组件
│   │   └── HelloWorld.vue
│   ├── main.js                  入口文件
│   └── style.css
└── vite.config.js               vite配置文件

在learn-vue3目录下,执行npm install 命令,来进行依赖的安装。依赖安装完成后,会在目录下生成一个node_modules目录以及package-lock.json文件。

node_modules目录是安装的依赖包所在的目录,不要放到git仓库管理。

package-lock.json文件是依赖包管理文件,作用是锁定依赖结构,每次执行 npm install 后生成的 node_modules 目录结构一定是完全相同的,一定要提交到git仓库。

% tree -L 2
.
├── README.md
├── index.html
├── node_modules
│   ├── @babel
│   ├── @esbuild
│   ├── @vitejs
│   ├── @vue
│   ├── csstype
│   ├── esbuild
│   ├── estree-walker
│   ├── fsevents
│   ├── magic-string
│   ├── nanoid
│   ├── picocolors
│   ├── postcss
│   ├── rollup
│   ├── source-map
│   ├── source-map-js
│   ├── sourcemap-codec
│   ├── vite
│   └── vue
├── package-lock.json
├── package.json
├── public
│   └── vite.svg
├── src
│   ├── App.vue
│   ├── assets
│   ├── components
│   ├── main.js
│   └── style.css
└── vite.config.js

然后执行 npm run dev 命令来启动项目,看到如下信息就算是启动成功了。

  VITE v4.3.4  ready in 324 ms

  ➜  Local:   http://localhost:5173/
  ➜  Network: use --host to expose
  ➜  press h to show help

打开http://localhost:5173/页面,可以看到下面的页面,表示我们的项目创建成功了。
在这里插入图片描述

4. 安装路由和数据依赖

Vuex 负责管理数据,vue-router 负责管理路由。learn-vue3目录中使用下面这段代码安装 Vuex 和 vue-router。

% npm install vue-router@next vuex@next

5. 大型工程规范

便于管理,对 src 目录的组织结构进行规划。

(base) chunming.liu@localhost src % tree
.
├── App.vue
├── api                   # 请求接口
├── assets
│   └── vue.svg
├── components
│   └── HelloWorld.vue
├── main.js
├── pages                 # 页面模板
├── router                # 路由配置
├── store                 # 状态管理中心
├── style.css
└── utils                 # 工具库

7 directories, 5 files

6. 多页面

多页面系统,需要引入路由系统

6.1 配置路由

我们进入到 router 文件夹中,新建 index.js设置路由:

import { createRouter, createWebHashHistory } from "vue-router"; 
import Home from "../pages/home.vue"
import About from "../pages/about.vue"

const routes = [
    {
        path: "/",       //路由地址
        name: "Home",    //路由名
        meta: {
            title: '首页'
        },
        component: Home  //组件名
    },
    {
        path: "/redirect",        //路由地址
        redirect: "/"             //重定向
    },
    {
        path: "/about",
        name: "About",
        componen: About
    }
]

const router = createRouter({
    history: createWebHashHistory(),
    routes
}
)
//导出router对象实例
export default router
  1. 从vue-router中引入两个函数:createRouter 和 createWebHashHistory。
  2. createRouter创建路由实例,第一个参数history,这里使用createWebHashHistory,表示内部使用hash模式路由,也就url上会通过#区分。第二个参数是路由配置。
  3. routes是个数组,是系统的所有页面路径对应的组件。每项由path、name和component组成。path表示页面路径,name表示路由名称,component表示组件。重定向的路由通过redirect指定。
  4. 导出router对象实例,后面绑定到Vue实例上。

上面的代码里,我们引入两个组件 home和about,根据不同的访问地址/ 和/about 去渲染不同的组件,最后返回 router 。另外,当让访问空地址的时候“”,会重定向到/页面。

这里用到了Home组件和About组件,我们到pages目录下,新建这两个文件分别是home.vue和ahout.vue。

<template>
    <h1>这是首页</h1>
</template>

<template>
    <h1>这是关于页面</h1>
</template>

6.2 加载路由

要想使路由生效,需要在 main.js 中,使用use加载 router 的配置:

import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
import router from './router/index'

createApp(App)
    .use(router)
    .mount('#app')

去 App.vue 中,删掉 template 之前的代码,加入如下内容:

<template>
  <div>
    <router-link to="/">首页</router-link> |  
    <router-link to="/about">关于</router-link>| 
    <router-link to="/redirect">重定向</router-link>
  </div>
  <router-view></router-view>
</template>

router-link和router-view是vue-router 注册的全局组件,我们可以直接用。
router-link组件负责跳转,通过to参数来指定跳转目标。
router-view组件用来渲染路由匹配的组件。可以放在任何地方,从而实现负责的页面布局。

浏览器中打开http://localhost:5173/,就会看到下图的页面,点击“关于”和“首页”都会有页面切换的效果。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

应急加固初试(windows sever 2008)

前言 红中(hong_zh0) CSDN内容合伙人、2023年新星计划web安全方向导师、 华为MindSpore截至目前最年轻的优秀开发者、IK&N战队队长、 吉林师范大学网安大一的一名普通学生、搞网安论文拿了回大挑校二、 阿里云专家博主、华为网络安全云享专家、腾讯云自媒体分享计划博主 …

SEO优化新手必须掌握的10个技巧和工具

随着互联网的不断发展&#xff0c;SEO&#xff08;搜索引擎优化&#xff09;已成为网站拓展和推广的重要手段之一。对于新手而言&#xff0c;学习SEO的基础知识和技巧是至关重要的。在本文中&#xff0c;我将分享SEO优化新手必须掌握的10个技巧和工具。 1.关键词研究 关键词是…

Spring Cloud学习笔记【分布式配置中心-Config】

文章目录 SpringCloud Config概述概述传统方式弊端主要功能与GitHub整合配置 Config服务端配置与测试服务端配置(即Gitee上的配置文件)Config Demo配置Spring Cloud Config访问规则 Config客户端配置与测试bootstrap.yml说明Config客户端 Demo配置 SpringCloud Config概述 概述…

学校信息化管理系统通常包含哪些功能?

学校管理信息化是现代教育发展的必然趋势&#xff0c;随着信息技术的飞速发展&#xff0c;学校管理也逐渐地实现了信息化。信息化的学校管理已经成为教育现代化建设的重要内容&#xff0c;也是提高学校教育教学质量和保障学生安全的重要手段。 作为一款低代码开发平台&#xf…

【Shell编程】| if 判断的五个关键点

个人主页&#xff1a;董哥聊技术 我是董哥&#xff0c;嵌入式领域新星创作者 创作理念&#xff1a;专注分享高质量嵌入式文章&#xff0c;让大家读有所得&#xff01; 文章目录 1、if语法格式1.1 if格式1.2 else if 和 else 2、算数比较3、文件判断4、字符串判断5、test指令测试…

Unity Audio -- (1)概览

准备工作 资源包&#xff1a; https://connect-prd-cdn.unity.com/20230208/8dab3a98-4fe1-4adf-99df-8f6c9e1058c9/creativecore-audio-2021.3LTS.zip 下载&#xff0c;解压后用Unity Hub导入本地工程&#xff0c;具体方法&#xff0c;参考&#xff1a; Project setup proce…

放弃40k月薪的程序员工作,选择公务员,我来分享一下看法

我有一个朋友&#xff0c;拒绝了我为他提供的4万薪水的工作&#xff0c;去了一个体制内的银行&#xff0c;做程序员&#xff0c;即使薪水减半。他之前在北京一家大公司做程序员&#xff0c;一个月30k。当我开始创业时&#xff0c;我拉他来和我一起干&#xff0c;但那时我们太小…

干货 | 思维转变之如何成为一个快速学习者!!!

Hello&#xff0c;大家好&#xff01; 这里是壹脑云科研圈&#xff0c;我是喵君姐姐&#xff5e; 在信息爆炸的今天&#xff0c;网络上有各种资源&#xff0c;其实有心想要学习&#xff0c;都可以学到。 但是&#xff0c;其实自我学习的过程还是比较艰难&#xff0c;那么是否…

人员管理KPI和OKR

文章目录 人员管理KPI和PI一、关键绩效指标概述&#xff08;一&#xff09;关键绩效指标的内涵&#xff08;二&#xff09;关键绩效指标的类型&#xff08;三&#xff09;基于关键绩效指标的绩效指标体系 二、关键绩效指标库三、指标权重与员工责任 OKR360 环评3P汇报法 人员管…

只使用位运算实现加减乘除

在线OJ: LeetCode 29. 两数相除 原题目的要求是不能使用乘法, 除法和取余运算符实现除法. 在本篇博客中把题目要求提高一点, 这里只使用位运算来实现, 顺便的也就把只使用位运算实现加减乘除实现了. 1 . 实现加法 首先我们需要知道两数之和可以是两个数位相加和不进位相加之…

c++ 入门概述

c 入门概述 1. c 关键字2. c 命名空间3. c 输入与输出4. c 缺省参数5. c 函数重载6. c 引用6.1 引用概念6.2 引用特性6.3 常引用6.4 引用与指针区别 7. c 内联函数8. c auto 关键字9. 范围 for 循环 1. c 关键字 c 98中&#xff0c;规定的关键字总共有63个&#xff1a; 2. c…

排序算法 - 插入排序

文章目录 插入排序介绍插入排序实现插入排序的时间复杂度和稳定性插入排序时间复杂度插入排序稳定性 代码实现核心&总结 每日一道算法&#xff0c;提高脑力。第三天&#xff0c;插入排序。 插入排序介绍 插入排序(Insertion Sort)的基本思想是: 把n个待排序的元素看成为一…

全网最火,Web自动化测试驱动模型详全,一语点通超实用...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 自动化测试模型&a…

我记不住的那些Git的操作

背景&#xff1a;其实接触Git也很长时间了&#xff0c;自打上学那会就用Git作为版本控制工具&#xff0c;感触颇深。写这篇文章也是记录一下自己的理解留作日后词典进行查询&#xff0c;另外也是想把这些内容分享给大家。本篇将以问题为导向来阐述相关的知识&#xff0c;面对的…

mid360激光雷达跑Point-LIO算法

在商场里面上下楼穿梭,使用mid360激光雷达,完成建图 以下是建图的运行过程及参数配置 mid360激光雷达驱动 安装(ubuntu20.4 ) /ws_livox/src/livox_ros_driver2$source /opt/ros/noetic/setup.sh /ws_livox/src/livox_ros_driver2$./build.sh ROS1配置修改MID360_confi…

《花雕学AI》06:ChatGPT,一种新型的对话生成模型的机遇、挑战与评估

最近ChatGPT持续大火&#xff0c;大家们是不是在网上看到各种和ChatGPT有趣聊天的截图&#xff0c;奈何自己实力不够&#xff0c;被网络拒之门外&#xff0c;只能眼馋别人的东西。看别人在体验&#xff0c;看别人玩&#xff0c;肯定不如自己玩一把舒服的啊。 上一期&#xff0…

( “图“ 之 二分图 ) 785. 判断二分图 ——【Leetcode每日一题】

❓785. 判断二分图 难度&#xff1a;中等 存在一个 无向图 &#xff0c;图中有 n 个节点。其中每个节点都有一个介于 0 到 n - 1 之间的唯一编号。给你一个二维数组 graph &#xff0c;其中 graph[u] 是一个节点数组&#xff0c;由节点 u 的邻接节点组成。形式上&#xff0c;…

ios 在windows chrome 联调

必要条件 1、iOS设备、数据线 2、Node.js 环境 3、Chrome 浏览器 4、电脑登录iTunes 5、手机 Safari 浏览器环境准备 1、安装Node环境参考Node安装的教程&#xff0c;确保终端输入node时可正常使用 2、安装 scoope 以及相关配置为了安装后续需要用的工具 remotedebug-ios-web…

c# 数据保存为PDF(三) (PdfSharp篇)

PdfSharp 使用&#xff0c;创建PDF文档 前言关于 PdfSharp下载 PdfSharp使用PdfSharp常用命名空间和类1 创建一个简单的PDF文档2 创建一个带页脚的PDF文档2.1 创建临时数据表2.2 创建页脚2.3 完整代码 小结附录&#xff1a; 往期文章&#xff1a; 1、 c# 数据保存为PDF&#x…

java并发编程之美第四章读书笔记

第四章java并发包中原子操作类原理剖析 JUC包提供了一系列的原子类操作,这些类都是使用非阻塞算法CAS实现的,相比使用锁实现原子操作在性能上有很大提高 本章只讲解最简单的AtomicLong类的实现原理以及JDK8中新增的LongAdder和LongAccumulator类的原理 原子变量的操作类 At…