2024 年了,如何 0 基础开始学习 Vue ?

最近 5 个月,我都在忙着构建我的第一开源项目 HexoPress,这个项目是使用 Electron + Vue 3 + TypeScript 等技术实现的,一方面,我真的很需要一款合自己心意的博客编辑器,另一方面,我也是真心想学习 Electron 和 Vue 3 的技术,当然还有 TypeScript。

现在,项目终于有了雏形,所以,这里我给出 0 基础学习 Vue 的第一个建议,找一个真实的项目做,在实现项目的过程中学习,这可能是学习某种技术的最佳方法。

一、建立脚手架

中学,我们就学习过认识事物的一般规律,那就是从感性到理性。所以,第一步,推荐大家做一个行动的巨人,思想的矮子,不管三七二十一,先搭建一个 Hello World 再说。

现今学习前端技术,都离不开 Node.js,所以,第一步永远都是安装 Node 环境,这里我要再次重申,推荐使用 Mac 操作系统,因为做这些前端开发的事情,真的很简单。如果,你没有 Mac 系统,那么我推荐是在 Windows 上使用 Linux 虚拟机,在 Linux 上使用 Node 也是非常令人愉悦的。安装 Node 环境,推荐使用 Homebrew。

brew install node

安装好 Node 之后,我们可以打开 Vue 的官网,然后根据“快速开始”的指引,开始我们的实践之旅:

npm create vue@latest

npm 是 Node 的官方自带的包管理器,除此之外的选择,还有 yarn 也是安装 Node 自带的,pnpm 据说是 npm 的高性能版本,双倍的性能。都是可以选择的。不过我个人实际体验下来觉得,npm 是速度最慢、浪费存储空间,但是兼容性最好的一款包管理器。新手怕麻烦,还是可以考虑选择 npm 的。

执行上面的命令后,你会在命令行环境经历一个交互式向导:

Need to install the following packages:
create-vue@3.9.2
Ok to proceed? (y) y

Vue.js - The Progressive JavaScript Framework

✔ Project name: … my-first-vue-project
✔ Add TypeScript? … No / ✔Yes
✔ Add JSX Support? … ✔No / Yes
✔ Add Vue Router for Single Page Application development? … No / ✔Yes
✔ Add Pinia for state management? … No / ✔Yes
✔ Add Vitest for Unit Testing? … No / ✔Yes
✔ Add an End-to-End Testing Solution? › ✔No
✔ Add ESLint for code quality? … No / ✔Yes
✔ Add Prettier for code formatting? … No / ✔Yes

Scaffolding project in /Users/charles/Projects/my-first-vue-project...

Done. Now run:

  cd my-first-vue-project
  npm install
  npm run format
  npm run dev

对于没有学习过前端的同学来说,这个交互式向导的一些问题,真的很难抉择,第一看不懂,就算稍微听说过一点,也不知道怎么选择。上面,就是我的一些选择。这里我稍微解释一些:

  • TypeScript:一种面向对象的编程语言,本质上还是 Javsscript,但是增加了类型系统,需要通过编译器编译成 js 后才能运行。非常适合大型项目使用,能尽早发现很多的错误。但是我看群里小伙伴还是骂街的多余赞赏的。主要还是因为会增加学习的负担,不过我个人还是很推荐的。
  • JSX,一种 js 的扩展语法,最早是 React 引入的,Vue 也支持这种语法,现在可以先不引入。
  • Vue Router,是一个 Web 项目比较重要的组成部分,也即页面路由,因为我们用 Vue 创建的都是 SPA,也就是单页应用,也就是整个 App 只有一个网页,都是通过 js 来动态切换一屏一屏的界面,这个是必须的。
  • Pinia,是 Vue 官方推荐的新一代的状态管理库,另一个常用的是 Vuex,因为 Pinia 可以很好支持组合式 API,所以我更推荐一并学习。
  • Vitest,是测试套件,其也支持 Jest 或者 Chai 等库提供的 API,测试历来是中国程序员不太重视的部分,我是很推荐学习的,不过如果没有精力,可以不要选这个。
  • 测试解决方案,我自己也不懂,我觉得可以不选。
  • ESLint,本质上其实是语法检查工具,一般都是要选的。
  • Prettier,是代码格式化工具,还提供了 js,ts 代码以外的格式化支持,只有很少的选项,提供高效的代码格式化。建议选上。

执行完命令:

cd my-first-vue-project
npm install
npm run format
npm run dev

你会看到这样一个页面:

Vue脚手架项目

二、学习《深度指南》

体验过流畅的脚手架向导后,你肯定建立了很强的信心,因为让人觉得这个体系很可靠。下一步,就是建立一些比较基础的认知了,如果没有的话,会是非常麻烦的事情。官方的文档真的相当出色,基本是我比较下来最优的学习资料。

《深度指南》无疑是所有材料里最最优秀的,如果觉得难以上手的话,可以先看看《互动教程》都在中文版官网的顶部导航可以找到。深度指南里,我觉得这些章节是一定要反复阅读几遍的。

–开始–
简介
快速上手
–基础–
创建一个应用
模板语法
响应式基础
计算属性
类与样式绑定
条件渲染
列表渲染
事件处理
表单输入绑定
生命周期
侦听器
模板引用
–组件基础–
深入组件
注册
Props
事件
组件 v-model
透传 Attributes
插槽
依赖注入
异步组件
–逻辑复用–
组合式函数
自定义指令
插件

没有这些基础概念的铺垫,后面是会寸步难行的。

三、使用 Element Plus

如果你已经完成了上面两步,恭喜你,取得了很大的进步,但是,如果就此罢手,你多数会半途而废,因为只学到上面那些,是掌握了 Vue 相关的理论和思想,怎么应用,却还有很大的距离。你发现,你空会写组件但是无法做出靠谱的界面,也没法做出像样的产品。你需要一个 UI 框架。

支持 Vue 3 的框架非常多,有阿里的 Ant Design,有字节的 Arc,还有华为的 Tiny 等等,但是我还是最推荐 Element Plus,这套饿了么公司推出的 UI 框架,因为感觉这个框架有最好的群众基础,网上的资料也是最多的。其他的框架虽然漂亮,感觉对新手友好度一般。

Element Plus 官网

通过 Element Plus 官网的指引,你应该可以在自己的项目里引入类库了。这时候,你恐怕还是会突然觉得茫然无措。我的建议是,找一个网页,认认真真去实现它,不要实现任何 js 的功能,就是单纯把界面给做出来,和你选定的网页界面,做得一模一样。在这个过程中,你会体会到 Container,Tabs,Button,Link,Form 等等组件的用法,在 Element Plus 的官网文档上,都有对应的范例代码,拷贝到自己的文件里就可以了。

四、Vue Router

到这里,你肯定已经渐入佳境了,但是你会发觉,竟然又突然不知道怎么办了,虽然体验了一下 Element Plus,但是怎么才能做出产品呢?你不得不学习 Vue Router,这是一个把多个屏幕界面组织在一起的必备类库,不得不好好学习,还是通过库的官网,阅读基本的文档,逐步把上一步实现的若干界面组织成一个“多屏”的 SPA 应用。

<script lang="ts" setup>
import { storeToRefs } from 'pinia'
import { useAppStore } from './stores/app'
import { watch } from 'vue'

const appStore = useAppStore()
const { localeLang } = storeToRefs(appStore)
watch(localeLang, val => {
  console.log('localeLang changed:', val)
})
</script>
<template>
  <el-config-provider :locale="localeLang">
    <router-view />
  </el-config-provider>
</template>

上面 14 行,就是 Vue Router,在 App.vue 里,只放一个组件,这个 <router-view> 组件,会被 Router 根据配置,替换成各种其他的原型界面。<el-config-provider> 则是一个 Element Plus 的组件,主要给全局提供一些关键的参数,比如多语言设置等。

五、后面怎么办

其实,到了这一步,还是会再次卡住,不知道怎么继续往下学了。因为这个时候,虽然,你已经做出了一个有着 N 屏界面的原型产品,但是却没有功能,你不得不去学习一些网络库的使用,然后去调用后端的服务,比如,Axios 这个无法避开的网络库。然后你又发现,你根本没有一个现成的后端服务共你去调用,你做的原型完全是废的。是的,挫败的事情就是这么多。

你这时候有几个选择,学习 Vite 的相关知识,然后选一款 Mock 框架,通过 Vite 启动开发服务器和 Mock 服务,自己给自己做出假的 API 供自己调用,把前台的原型界面组织起来。第二个是,找到像“玩Android”这样的互联网开放API,供你调用,来尝试组装产品。

六、坚持投入✊

只有坚持不懈,克服一个一个难关,你才能咬着牙真的学会这个框架的运用。说白了,这个框架不是一个孤立的东西,也需要一大堆外围的知识拱卫,才能真正发挥出作用。

如果说有什么捷径的话,我觉得分析别人已经存在的项目结构和代码,可能是一种学习的捷径。比如有很多用 Vue 3 + TypeScript + Vue Router + Pinia + Element Plus 构建的开源后台管理网站,比如我自己学习过的 vue-element-plus-admin,和 Geeker Admin 都是类似的,又比如本文一开头我自己的作品 HexoPress,通过查看这些项目的代码和文件组织形式,以及组件封装方式,你才能渐渐建立一种感觉,到底怎么去用这个框架,并坚定不移将学到的各种知识,运用到自己的真实项目里,才能真正做到学会框架!

总结

授人以鱼的给一些代码片段,我觉得并不能促进大家去学会什么,只有每个人自己内生的动力才能逼着自己学会一些新东西,本文试图给出一些路线图和指引内容,帮助每个环节阶段迷茫的同学,继续往前走。大家觉得有帮助,希望给我点个免费的赞!我以后也会分享更多。谢谢!

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

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

相关文章

App Inventor 2 Activity启动器技巧:如何查看并启动其他App

App包名和类名的查看 由 App Inventor 2 创建的应用要弄清包名和类名&#xff0c;可通过下载其应用程序的源代码&#xff0c;然后使用文件资源管理器或解压缩程序解压 .aia源文件&#xff08;文件的扩展名修改成.zip 或.rar&#xff0c;然后解压&#xff09;&#xff0c;在解压…

Redis面试题及核心知识点讲解

redis是单线程还是多线程&#xff1f; redis是单线程的&#xff0c;主要是指网络I/O线程。Redis的持久化&#xff0c;集群同步等操作&#xff0c;则由另外的线程来执行。 2 . redis是单线程&#xff0c;为什么处理这么快&#xff1f; Redis的大部分操作都是在内存中完成。单线…

电脑进水无法开机怎么办 电脑进水开不了机的解决方法

意外总是会不定时打破你的计划&#xff0c;电脑这类电器最怕遇到的除了火还有水&#xff0c;设备进水会导致数据丢失&#xff0c;那么我们遇到电脑进水怎么办&#xff1f;进水之后不正确处理也会引起很多不必要的麻烦. 解决办法 第一步&#xff1a;关机 如果您的电脑是在开…

山西电力市场日前价格预测【2024-02-22】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2024-02-22&#xff09;山西电力市场全天平均日前电价为441.87元/MWh。其中&#xff0c;最高日前电价为680.73元/MWh&#xff0c;预计出现在18:45。最低日前电价为352.02元/MWh&#xff0c;预计…

【git 使用】git 中head、工作树、和索引分别是什么,有什么关系和区别

HEAD 定义&#xff1a;HEAD 是指向当前所在分支&#xff08;或者是某个特定的提交&#xff09;的指针&#xff0c;它表示当前工作目录正在处于哪个提交或分支上。作用&#xff1a;HEAD 指示了当前工作目录的状态&#xff0c;可以通过 HEAD 来确定当前处于哪个分支上&#xff0…

正交匹配追踪算法(Orthogonal Matching Pursuit)实现过程及Python模拟

正交匹配追踪&#xff08;Orthogonal Matching Pursuit&#xff0c;OMP&#xff09;是一种用于寻找稀疏信号的贪婪算法&#xff0c;用于求解压缩感知问题中的稀疏近似问题。在压缩感知的背景下&#xff0c;通常我们有一个欠定的线性系统Ax y&#xff0c;其中A是一个已知的测量…

IDEA实现ssh远程连接本地Linux服务器

文章目录 1. 检查Linux SSH服务2. 本地连接测试3. Linux 安装Cpolar4. 创建远程连接公网地址5. 公网远程连接测试6. 固定连接公网地址7. 固定地址连接测试 本文主要介绍如何在IDEA中设置远程连接服务器开发环境&#xff0c;并结合Cpolar内网穿透工具实现无公网远程连接&#xf…

IAR推出新版IAR Embedded Workbench for Arm功能安全版,该版本配备经过认证的静态代码分析功能

瑞典乌普萨拉&#xff0c;2024年2月20日 – 全球领先的嵌入式系统开发软件解决方案供应商IAR宣布&#xff1a;推出其旗舰产品IAR Embedded Workbench for Arm功能安全版的最新版本9.50.3。此次发布进一步加强了IAR支持开发人员创建安全、可靠和符合标准的嵌入式应用程序的承诺&…

回归分析中的异方差性

在简单线性回归或多元线性回归中&#xff0c;我们对误差项做了一些基本假设。 简单线性回归&#xff1a; 多元线性回归&#xff1a; 假设条件&#xff1a; 1.误差均值为零 2.误差具有恒定方差 3.误差不相关 4.误差呈正态分布 第2个假设称为同方差性&#xff0c;因此&…

QML | 信号和信号处理器特性

信号和信号处理器特性 很多时候,应用程序的用户界面组件需要相互通信。例如,一个按钮需要知道用户是否进行了单击:当用户单击后,它可能会更改颜色来指示它状态的改变,或者执行一些逻辑代码实现一定的功能。同Qt一样,QML包含了相似的信号和信号处理器机制。 信号是发出事件…

逻辑回归为什么使用交叉熵而不用均方差?

逻辑回归为什么使用交叉熵而不用均方差&#xff1f;或者说逻辑回归的损失函数为什么不用最小二乘&#xff1f; 下面主要从两个角度进行阐述&#xff1a; 从逻辑回归的角度出发&#xff0c;逻辑回归的预测值是一个概率&#xff0c;而交叉熵又表示真实概率分布与预测概率分布的…

(C++) 详解内存地址空间

详解内存空间 0. 概述 一个C/C 程序&#xff0c;编译之后&#xff0c;形成的程序&#xff0c;在执行期间&#xff0c;内存中不仅存在一块区域用于存放代码&#xff0c;还有一些其他的区域用于使用&#xff0c;本节会详解C/C内部所使用的内存地址空间&#xff0c;关于各内存的…

每日OJ题_二叉树dfs③_力扣814. 二叉树剪枝

目录 力扣814. 二叉树剪枝 解析代码 力扣814. 二叉树剪枝 814. 二叉树剪枝 难度 中等 给你二叉树的根结点 root &#xff0c;此外树的每个结点的值要么是 0 &#xff0c;要么是 1 。 返回移除了所有不包含 1 的子树的原二叉树。 节点 node 的子树为 node 本身加上所有 n…

深入探索Selenium自动化测试:基础、代码实战与最佳实践【第90篇—Selenium自动化测试】

文章目录 深入探索Selenium自动化测试&#xff1a;基础、代码实战与最佳实践什么是Selenium&#xff1f;安装Selenium基础用法启动浏览器查找元素操作元素 代码实战&#xff1a;模拟登录进阶用法等待元素出现处理弹窗执行JavaScript 高级应用&#xff1a;Selenium Grid启动Sele…

压缩感知常用的测量矩阵

测量矩阵的基本概念 在压缩感知&#xff08;Compressed Sensing&#xff0c;CS&#xff09;理论中&#xff0c;测量矩阵&#xff08;也称为采样矩阵&#xff09;是实现信号压缩采样的关键工具。它是一个通常为非方阵的矩阵&#xff0c;用于将信号从高维空间映射到低维空间&…

基于vue框架的环保知识普及平台设计与实现

项目&#xff1a;基于vue框架的环保知识普及平台设计与实现 目 录 摘要 I Abstract II 第1章 引言 1 1.1 研究的背景 1 1.2 目的和意义 1 1.3 设计思路 1 1.4 研究的主要内容 2 第2章 相关原理和技术 3 2.1 B/S 模式体系结构 3 2.2 Springboot技术 4 2.3 访问数据库…

“中国国安部紧急警告”!境外公司利用加密货币诱使人员非法采集空间数据!当心不慎成“帮凶”!

随着加密货币的普及&#xff0c;每天都有新的区块链项目出现&#xff0c;目前市场上已经有成千上万种不同的加密货币 一些项目可能因其名人光环、运作机制、出色的代币经济学、或是提供优良的服务而受到市场亲睐&#xff0c;但也有很多项目缺乏大众的关注&#xff0c;或是尚未有…

机器学习——强化学习作业

作业内容 成功降落在两个黄色旗子中间为成功&#xff0c;其他为失败 Policy Gradient方法 Actor-Critic方法 范例结果 baseline Policy Gradient实现

初阶数据结构之---顺序表和链表(C语言)

引言-线性表 线性表&#xff1a; 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构。线性表在逻辑上是线性结构&#xff0c;也就是说是连续的一条直线。但在物理上并不一定是连续的。线性表在物理上…

OSQP文档学习

OSQP官方文档 1 QSQP简介 OSQP求解形式为的凸二次规划&#xff1a; x ∈ R n x∈R^n x∈Rn&#xff1a;优化变量 P ∈ S n P∈S^n_ P∈Sn​&#xff1a;半正定矩阵 特征 &#xff08;1&#xff09;高效&#xff1a;使用了一种自定义的基于ADMM的一阶方法&#xff0c;只需…