我的前端学习经历

news2024/11/19 1:47:55

我最近在开发一个NFT相关的Saas,部分截图如下:

556f3e1c14ae3747f4ebda7d93fbda1f.jpegbda01ef050387cd093bc9d6580c7e2f1.jpeg8e548aa02cf7ba1ab63832f690b36442.jpeg

这是我一段时间前,朋友圈发的图,现在Saas在页面上有点变化,但懒得再截图了。客观而言,布局还可以,这一套的技术栈是:React + TailwindCss,没有用UI框架。

因为这个Saas的实践,加上之前一段时间对Vue3的学习,我感觉对前端有点基础的手感了,虽然难以达到专业前端人员的水平,但对于多数Web的开发,应该够用了,而很多后端同学大概率跟我一样,不是为了成为前端,而是为了“能用”,从而构建出自己的应用,所以本文就是在“能用”这个级别的前端学习经验分享。

选择Vue还是React

我去年,使用了Vue2作为【抖直播】应用的前端框架,今年年中,购买了Vue3源码分析的书籍以及极客时间上Vue的专栏,大体的过了一遍Vue,然后现在使用React开发Saas系统,所以,我有一定的资格从初学者的角度来讨论选择Vue还是React的问题。

直接说结论:我目前偏向于React,后面开发新的Saas时,应该也会用React。

学习前端框架的最佳姿势

我其实严重纠结过使用Vue还是React,我在前年的时候,就纠结,我当时问了我司的前端,发现人家用layui,我当时的状态还发了帖:

5c81141a65fb7a8a197ddbfe8d249e30.png

现在回头看,我一开始选择了React,但被它的官方文档毒害了,官方文档有一个从零到一的demo,你跟着做是可以做出来的,但你去github上随便找一个比较新的React项目,发现几乎不会用demo中的知识点,都在用React Hook。

如果单纯看官方文档中Hook的介绍,也会因为缺乏实际项目中各种实操的例子,而陷入知道却不知道怎么灵活使用的陷阱中。

这点我展开讲讲,我的很多学员,都会反馈,学了课程中这个知识,但是不知道怎么灵活运用,这是正常现象,你看,我也遇到了,我也是学了,不会用,我现在总说,是例子没有见够,脑海中的连接因为看的实际例子太少,所以难以灵活运用,就像学习加法一样,只看1+1=2,2+2=4这两个例子,是悟不出x+x=2x这个规律的,还需要更多例子才行。

这里画个重点,学习前端框架,最优方法是上Youtube找当下时间点最新的项目教程,看看人家用这个框架创建项目的过程中,用了这个框架的什么技术点,然后再去查文档。这其实就是积累例子的过程,只有看别人怎么使用的例子足够了、模仿的次数足够了,自然就知道怎么写了。

嗯,编程是个手艺,手艺看的是熟练度,而熟练度的提升则来自各种案例的积累与实践。

我是怎么学Vue的

我当时骚操作后,便放弃了React走入Vue的怀抱,使用了Vue2开发过了几个项目,感觉也比较熟悉了,但2022年,大环境都在走Vue3,而Vue3在用法上与Vue2差异较大,所以又要花时间学习一下。

这种大变化对我而言仿佛是个新框架一样,我感觉不深入掌握这些前端框架的原理不行啊,因为每个语法糖的使用都很黑盒,跟以前用Jquery的感觉完全不同,Jquery就很直观,但遗憾的是写复杂页面的时,Jquery非常麻烦。

为了了解原理,我买了《Vue3设计与实现》一书来看,主要是讨论Vue3框架源码的,挑拣着感兴趣的部分阅读,对进一步理解现代前端框架还是有很大帮助的,基于此书,我理解了蛮多问题,虽然这些原理性的理解,对具体的项目开发暂时没啥实际的帮助。

嗯,又是那种,Vue3原来如此,然后真正开发某个网站的时候,很多控件不知道怎么写的状态,一怒之下,我就想了解那些UI框架的控件原理,比如Element Plus中的各种控件是怎么实现的?然后我发现极客时间上有相关的课,讲解Element Plus这类UI框架中控件实现原理的,我就买来学习了。

只学习不应用是没有痛苦的,这容易让人迷恋学习,而逃避行动。当时的我就在这个状态,这个不懂,就去系统的学习它,那个不懂也一样,这个过程,对我而言是有点享受的,但回头看,要落地的项目,其实一直卡在那里,要解决的某个具体问题,可能不需要要么多背景知识。

我当时,不仅学习,还喜欢将学习的东西,写成文章,这个行为要辩证的看,没有任务在身,纯粹的求知行为,我认为学后写文章加固理解是好的,但有任务在身,比如要开发某个Saas,此时你却总写文章,现在回头去看,其实是种变向的逃避行为。6c78338d6376f9bdf68f1eb55cac8508.jpeg

学习React

对Vue3一顿学习后,为啥后面用React来做前端开发了呢?

其实在学习Vue3后,我就开发颜值加加去了,而颜值加加的前端由其他同学来弄,我并没有操心(一个项目,如果多人合作的话,真的舒服很多),后来,我又需要开发一个海外项目。

此时,我就纠结了,因为颜值加加的开发,花了3个月的业余时间,我Vue3的具体用法,有点忘记了...而小排哥建议我搞React,因为海外很多Saas都是React开发的。

我自己调研了一下,确实如此,Youtube上,海外同行分享较多的视频也是React和Next.js(一个基于React的框架)。

换你,这时难受不?

如果我选择Vue3来开发问题应该也不大,但这就跟小排哥的技术栈不一致了,后面就不好沟通交流了。此外,React在海外Saas上,确实是主流,而且我打算开发Web3的Saas,在Web3领域,React就更多人用了,海外多数web dapp的文章,都是用React/Next.js来开发的。

因此,我决定学React,我复盘了过去学Vue的经验,感觉不能再这样搞了(正如前文说的),这次,我直接基于项目去学习如何使用React或Next.js。

我在Youtube上找到了这个视频:https://youtu.be/XxXyfkrP298,直接实战带你做4个React项目,这几个项目中,当然有一些我不了解的东西,但我这次选择了单点突破,不懂什么就单纯去看文档。

其实,也不能说学习Vue的过程没有帮助,对Vue原理的理解让我对React用法上的掌握非常快,我就快进的看了那个视频中的第一个项目,我就感觉我掌握了React中最关键的20%了。

目前我用React开发下来,用得最多的就是下面这些:

  • 几个Hook函数:

    • useStatus:用于记录状态,我主要用于与页面展示的逻辑配合,实现各种页面的动态效果,比如弹窗、下拉框之类的

    • useRef:获得元素的内容,我主要用于获得input中的值,与form配合着使用

    • useContext:创建上下文,我主要用于跨组件的数据共享,即不需要组件基于参数一层层的传递数据了

  • 样式:

    • Tailwind:记下几个最常用的后,再加上VsCode中TailWind插件可以给出动态提示,用Tailwind写CSS是真滴爽,而且风格变化多端,脱离了UI框架的束缚,可能是太多人用UI框架了,总感觉设计上显得比较呆板,与海外Saas那些优美的落地页有较大差距。

    • Flowbite:一个基于Tailwind的UI框架,我主要是抄它的控件,我没有直接用他封装好的flowbite-react,主要是样式与当前Saas不一致,封装后的没有暴露样式定制的参数,我主要用来参考思路,比如某个控件,看看他怎么实现的(得益于Vue那段时间的学习,这里看简单的控件,已没啥难度)

    • flex、grid布局:掌握flex,可以解决80%的页面布局问题,推荐一个演示网站https://xluos.github.io/demo/flexbox/,你可以选择不同的flex属性,看到具体的布局效果

f7a6a272ee99f149d7e01320708546b1.png
  • 前后端交互:

    • 我主要用Postman来完成前后端交互,这个一个非常好的技巧,首先我选用的后端框架是可以直接生成API文档的,即我开发好了API,就可以基于文档获得curl的请求形式,我将其复制下来,然后导入postman,便可以利用postman生成相应的JavaScript代码,可以直接用于前端项目,非常方便,如下图:

6976dbe0c2c44141aee426b19edd7233.png

没了,就这些...我的Saas主要就用了这些。

此外,还有个搜索技巧,当我遇到某个效果不会实现时,我会找Flowbite这类UI框架,一些复杂的控件,Flowbite写的比较好(我看不懂那种),我就Google这套关键词:【React tailwind xxx】,这里的xxx便是Flowbite框架对这个效果的描述,是一个专业词,你一搜,通常会有很多文章教你实现,此时,ctrl+c/v就好了。

React与Next.js

Next.js的内容也很多,因为Next.js基于React,所以,React生态里的东西,多数Next.js都可以直接用。

此外Next.js集成了路由系统这些东西,用起来比React方便。

如果在Next.js与React选择,我可能选择Next.js,因为会方便不少。那为啥我这个Saas用了React而没有用Next.js?

因为调研时,看到一些讨论说到Next.js社区还不够大,核心维护速度不够快,如果Next.js出现问题,比较难搞,所以我选择了React。

此外,我用了尤大(尤雨溪)的Vite来构建项目,主要是不想弄Webpack了(这个学起来也费力的一批),而Vite目前还不支持Next.js,所以我就用React了。

现在实践下来,遇到的各种前端问题,我也都在React生态中找到了解决方案,后面没有特殊需求,应该就一直用现在整理好的这套了。

结尾

以“能用”为标准,选择框架,避免使用最新的,因为我们不够专业,出问题,查不到解决方案,就很费时间。

尽量选择语法糖变化不大的,对于力求“够用”的我们来说,语法糖的大范围变化,通常表示我们又要学一次,就挺麻烦的。

如果你还纠结,要不直接选React吧。

我是二两,下篇文章见。

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

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

相关文章

​无线数据终端DTU的电路防护元器件推荐产品型号

​无线数据终端DTU是专门用于将串行数据转换为IP数据或将IP数据转换为串行数据通过无线通信网络传输的无线终端设备,因此对于它来说ESD静电放电及雷击浪涌的防护显得尤其重要。 DTU已广泛应用于电力、环保、LED信息发布、物流、水文、气象等行业,其硬件…

【人工智能原理自学】方差代价函数:知错

😊你好,我是小航,一个正在变秃、变强的文艺倾年。 🔔笔记来自B站UP主Ele实验室的《小白也能听懂的人工智能原理》。 🔔本文讲解一元一次函数感知器:如何描述直觉,一起卷起来叭! 目录…

[oeasy]python0037_字符画艺术_asciiview_自制小动物_imagick_asciiart

牛说(cowsay) 回忆上次内容 我们狂飙了一路 从用shell 直接执行 python程序到用shell 循环执行 python程序 循环体中 把 python的 输出结果 用管道 交给了 figlet 把 figlet的 输出结果 用管道 交给了 cowsay 把 cowsay的 输出结果 用管道 交给了 lolcat 最后 提权 直接运行 s…

课程设计 | 学生成绩管理系统

🎈 作者:Linux猿 🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊! &…

减小 Go 代码编译后的二进制体积

1 基线用例 减小编译后的二进制的体积,能够加快程序的发布和安装过程。接下来呢,我们分别从编译选项和第三方压缩工具两方面来介绍如何有效地减小 Go 语言编译后的体积。 我们采用同一个测试工程来测试不同方式的效果。 使用的测试工程如下&#xff0…

SQL全自动化检查神器

介绍 Yearning MYSQL 是一个SQL语句审核平台。提供查询审计,SQL审核等多种功能,支持Mysql,可以在一定程度上解决运维与开发之间的那一环,功能丰富,代码开源,安装部署容易! 功能介绍 SQL查询查询…

Prometheus配合 alertmanager 使用邮箱报警

部署Prometheus 和 Alertmanager略 安装包部署prometheusGrafananode_exporter_争取不加班!的博客-CSDN博客 prometheus监控报警部署Alertmanager_争取不加班!的博客-CSDN博客 编辑Alertmanager配置文件 vim alertmanager/alertmanager.yml global: res…

MySQL高可用之主备同步:MySQL是如何保证主备一致的

🏆今日学习目标: 🍀MySql是如何保证主备一致的 ✅创作者:林在闪闪发光 ⏰预计时间:30分钟 🎉个人主页:林在闪闪发光的个人主页 🍁林在闪闪发光的个人社区,欢迎你的加入:…

【Java编程进阶】封装继承多态详解

推荐学习专栏:Java 编程进阶之路【从入门到精通】 文章目录 1. 封装2. 继承2.1 继承的语法2.2 子类重写父类的方法2.3 子类隐藏父类的方法2.4 super 关键字2.5 final 关键字2.6 父类子类类型转换3. 多态4. 总结Java 是一门面向对象程序设计语言,其具有封装,继承和多态三大特…

面向对象的特征之三:多态性

文章目录一、理解多态性二、什么是多态性三、多态性的使用——虚拟方法调用四、多态性使用前提五、适用范围六、虚拟方法调用详细介绍多态性是编译期的还是运行期的?举例每日一考七、instanceof关键字的使用引入:关于多态性的讨论向下转型:in…

Linux-7 文本编辑vi/vim

Linux-7 文本编辑vi/vim vim介绍 什么是vim? vi和vim是Linux下的一个文本编辑工具。(可以李姐为Windows的记事本或word文档) 为什么要使用vim? 因为Linux系统一切皆为文件,而我们工作最多的就是修改某个服务的配置&a…

网络安全——投票系统缺陷(靶场实战)

我们需要利用漏洞来把投票信息刷到第一位 我们可以利用 HTTP_X_FORWARDED_FOR 来进行获取伪造 我们再次进行投票的时候,我们抓取数据包的格式 我们采用上述方法进行伪造 增加变量,我们采用多IP攻击 选中247点击send to Intruder 选中247和1点击 add&…

基于Xlinx的时序分析与约束(8)----关于时序路径、时钟悲观度和建立时间/保持时间的一些问题

写在前面 最近研究vivado里的时序分析路径时,发现了3个很有意思的问题。经过一番查找资料后,总算把问题搞明白了,在这里分享给大家。 1、为什么同一条时序路径在报表里的值不一样? 在如下文件建立的工程中: module te…

Window10下配置Maxim SDK

参考网址: 微信(中文):【嵌入式AI开发&Maxim篇一】美信Maxim78000Evaluation Kit AI部署流程初探 GitHub:MaximAI_Documentation/MAX78000_Feather at master MaximIntegratedAI/MaximAI_Documentation 下载地址…

【回答问题】ChatGPT上线了!如何安装python-ipopt?python-ipopt有哪些用法?

如何安装python-ipopt? 要安装 python-ipopt,你需要先安装 Ipopt 库。这个库是用 C 编写的,所以你还需要安装一些 C 编译器。 在 Linux 系统上,你可以使用下面的命令来安装 Ipopt 和相关的依赖项: 复制 sudo apt-g…

excel成本统计:如何进行区域筛选,多条件求和?

最近有位小伙伴被一个计算产品成本的问题难住了,要求是根据配件成本核算出成品的成本。这个问题看上去似乎有点复杂,感觉一下子想不出好的解决办法,实际上,却非常简单,而且仅用常见的求和函数,就能轻松解决…

Mybatis源码分析(四)Mapper文件的解析

目录一 Mapper的使用二 MapperElement的解析三 解析cache-ref节点四 解析Cache节点五 解析ParameterMap节点六 解析ResultMap节点七 解析Sql节点八 处理各个数据库操作语句官网:mybatis – MyBatis 3 | 简介 参考书籍:《通用源码阅读指导书:M…

【每日一题】【LeetCode】【第一天】三数之和

三数之和的解决之路 题干表述 测试案列(部分) 第一次思路 这种其实是最暴力的,也是我脑海里第一个想到的最简单的方法了。 思路就是三个循环,一个循环去一个数,然后当三个下标不同,且对应的三个数相加为…

FPGA设计CPU书籍

一直以来CPU内部是绝大多数IT工程师难以触及的领域。纵使学习过计算机架构相关课程,自己动手实现CPU也始终遥不可及,因为这涉及计算机系统的最底层——芯片设计。 而近年来FPGA芯片产品的发展与普及打破了这一阻碍,利用内部电路可重编程的FPG…

【C++进阶】IO流

🎇C学习历程:入门 博客主页:一起去看日落吗持续分享博主的C学习历程博主的能力有限,出现错误希望大家不吝赐教分享给大家一句我很喜欢的话: 也许你现在做的事情,暂时看不到成果,但不要忘记&…