本文旨在入门,很多描述可能并不严谨,旨在用大白话的方式给入门者理解明白前后端概念,因此不严谨的地方请多多海涵。以及本文可能会出现一些初学者不明白但在此场景下又比较必要的名词,如果是难以理解的本文都会进行解释,但如果只简单在网上搜一下,看看定义就能理解明白的,本文不会详细阐述,大家可以用 google 或者 ai 来了解下
相对于枯燥无味的课程项目,可能让你去手搓一个 CPU、操作系统,设计一个你自己平时用不到的东西。或者是做一些绞尽脑汁都想不出来的算法题。学习【开发】可以让你做出一个能即时用到,落地在生活场景的一个网站 / APP,可以设计为任何用途,也直接给你的朋友同学们展示,更是可以在你的日常生活中使用(比如搭个私有云)。而如果按照学校的科班路径走,直到大三大四可能才真正接触到开发,但是开发的能力却与接触时间与经历紧紧挂钩,且大三暑假也是个兵家必争之关键时间点。进入企业进行开发,那更是需要不少的信息差与学习,当然,企业相关的内容在本目录下的其他博客中详写,并不是本文的重点,
那么,想要初步了解开发,可以从最常见、也是目前岗位最多的开发岗【Web 前后端】开始看起。
就前端而言,他会有几个关键的功能,其中一个就是在一个你能访问到的网页上,控制你所看到的内容的排版,包括文字/某个东西颜色、文字/某个东西是否水平居中垂直居中、看到的一些特效等等,而这主要是 HTML + CSS 负责的内容。
至于你所看到的内容,其实来自于后端,你可以理解为前后端系统就是一个餐厅系统(并非食堂),你下单(进入网站并浏览其页面)过后,服务员会去厨房窗口/后门(API 接口)找厨师(后端),厨师接到指令之后,会使用食材(数据库中的数据)开始做菜,对菜进行处理(比如,把不需要返回给前端的部分数据给去掉)。做完菜之后返回给服务员,然后服务员再给你上菜。这就是前端使用 JS 与后端交互的过程。入门 Web 前端的经典三件套就是 HTML + CSS + JS。而后续你可以学习 Vue 等成熟的 js 框架,能更便捷/舒服地开发前端。
而所谓后端,就是刚才例子中所提到的厨师,他会把数据返回给前端,而这些数据通常需要经过处理。后端经典的几个操作就是 CRUD(增删改查),刚才例子其实只是对"查"这一行为进行了描述。而我们换成另外一个实际常用的系统作为例子:用户系统(这个在很多网站都有,只要需要登入注册,他就会有一个用户系统),当一个人注册之后,他填写的数据(比如他的昵称、手机号、密码等等)就会通过 API 接口传给后端,后端就会往数据库里面新增一下这条数据,新增成功后就是注册成功了。而删除的话,比如说有的系统会有一个"用户注销"的功能,注销后无法再用原本账户登入系统,那么这个用户数据有可能就是通过删除的 API 接口,被后端删除了。改的话,比如说用户需要修改他的密码,那么就是请求对应的修改资料的 API,然后后端对数据库里的数据进行修改。查的话就比如说我们每次打开个人主页的时候都会显示自己的 ID、昵称还有一些个人信息,那么我们每一次打开,都是对后端的一次查询(因为 JWT 令牌会带有你的 ID,根据这个 ID 去数据库查找你的其他信息。不过 JWT 令牌是比较深入的内容,大家可以之后再理解),从而获得自己的信息。
推荐初步入门学习的项目:黑马程序员在 B 站的一些教学(有一套完整的系列),比如 SpringBoot 教学,然后再去学黑马点评项目。或者你可以自己在 Github 上搜"黑马点评"找到源码直接配合 ai 学习(效率更高,哪里不懂直接问大模型就好了)。而教学系列中用到的技术栈也是企业会真实用到的(SpringBoot 是中小厂用的特别多的框架,而大厂也有阿里巴巴等企业在用)。很多同学认为需要先把 java 给深入学习了,或者需要先学习数据结构、计算机网络、计算机系统基础等等的完整课程才能学习后端,实则并非如此,只要有任何一门语言的底子在,转换语言是一件成本非常小的事情,时间耗用可能只在 1-2 天,因为实际开发一个项目需要用到的语言特性也不多,只是一些语法上会略有差异。而数据结构等科班课程更是不需要细学,在做项目的时候可能会碰到一些这些课程相关的比较皮毛的概念,也只是需要几分钟就可以掌握。因为开发一个不是很大规模的项目,其实也不需要这些科班课程的完整的知识体系,甚至说像是很多人认为紧相关的数据结构,在后端是完全用不上的。后端通常用数据库做数据持久化,用到本地内存且需要用复杂数据结构储存的情况是少数,对于数据库的储存的话,数据库有自己的数据结构,比如说 Redis 的 Sorted Set,这些你也只需要了解他们的一些特性即可,其实也不需要真的非常科班地去把整个知识体系掌握了。