一、背景
本人是一名 Web 前端开发,技术栈是 Vue 和 React,不会 Node。之前学过,但是因为一些原因(比如没有使用场景,很多概念无法理解,学完就忘等)一直也没有掌握。
因为在 CMS 部门耳濡目染时间久了,感觉不学点后端有点说不过去,而且学起来之后发现也挺有兴趣的。但是对于一名前端开发(而且在学校的时候基本没学习)来说要学习的内容实在太多了,开始的困难在于理清各种技术都是干什么的以及它们之间的关系。现在刚刚有点眉目故记录一下,权当给需要的同学一些建议。
二、流程梳理
这里只简单的把后端的工作理解为:从数据库里取出数据并返回给前端。
那么需要掌握的技术有:
- 一门原生后端语言(比如 Python)用来写业务逻辑,处理接口的参数;
- 这门语言的框架(比如 Django)跟前端框架一样理解;
- 数据库(比如 MySQL);
- ORM,这个上面说的 Django 就有,也有单独的 ORM 框架,比如 SQLAlchemy
- 其他……
重点说一下 ORM 是干什么的:
SQL语句是可以直接操作数据库的,比如 SELECT 语句可以获取数据。但在实际应用中很少直接使用SQL语句来操作数据库,而是使用
ORM(对象关系映射,Object Relational Mapping)
。
就是
把数据库表中的每条记录映射成一个对象
,可以通过 ORM 提供的一些函数来操作这个对象, ORM 底层会把这些函数转换成 SQL 语句。
我选的语言是 Python,其他的语言也都是大同小异的。
三、学习路线
1. Python 语法
不同版本之间差异可能比较大,注意项目中使用的版本。
- 需要注意字典类型和对象的区别,以及和 JSON 区别;
-
Python 中
time
datetime
json
等内置模块的掌握; -
列表推导,字典推导 等
推导式
也是重点内容。
这个是基础,必须先掌握基本用法,不然后面进行比较困难。就像无论使用 Vue 还是 React 都要先掌握 Javascript。
2. Django 框架
也要注意版本。
Tornado 也是一个 Python 框架,具体看你们项目中使用的哪个。个人感觉 Django 比较简单,可以作为入门。
特别提示:Django 的文档内容特别多,不需要全部看完。可以看完
入门教程,视图层,模型层
之后就看项目代码,遇到不会的再查就可以了。
3. ORM
我的学习过程中这个是理解难点,前面已经解释过了。
4. 数据库
前面说 Python 是需要优先于其他知识掌握的,后面的几个可以并行学习。
强烈推荐一个 B 站的教程,非常清晰易懂:
【中字】SQL进阶教程 | 史上最易懂SQL教程!10小时零基础成长SQL大师!!
B 站也有这个老师的 Python 教程,我还没看。。。
5. Redis
Redis 也是一个数据库,也推荐一个 B 站的教程:
【狂神说Java】Redis最新超详细版教程通俗易懂
四、名词解释
以上是一些最基础的知识,是转后端必须掌握的。下面对一些迷惑过我的名词做一些解释,这些是随着学习加深也要掌握的:
1. asyncio
是 Python 提供的一个用来编写
并发
代码的库,使用
async/await
语法。
2. SQLAlchemy
Python 中最有名的 ORM 框架。
3. mysqldb
Python2 中用于连接 MySQL 服务器的一个库。
注意这个库和 ORM 的区别:
-
mysqldb
是用来
连接
数据库的,因为在操作数据库之前我们要先连接上数据库; -
ORM 并
不能连接
数据库,只是让我们用更简单的方式来
操作
数据库。
4. pymysql
Python3.x 中用于连接 MySQL 服务器的一个库。
5. aiomysql
用于从
asyncio
框架访问 MySQL 数据库的库。
5. Supervisor
supervisor
是 python 开发的通用进程管理程序,可以将普通的命令行进程变成后台 daemon,监控进程状态,当进程异常退出时可自动重启。
6. Lua 脚本
Lua是一种轻量小巧的脚本语言,用标准
CANSI C
编写并以源代码形式开放。其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制的功能。
7. uWSGI
-
WSGI
是一种通信协议 -
uwsgi
同 WSGI 一样是一种通信协议 -
uWSGI
是实现了
uwsgi
和
WSGI
两种协议的 Web服务器
uWSGI详解
Nginx+uWSGI部署Python Web应用
8. 虚拟环境
在工作中经常会遇到多个项目使用不同版本的环境,需要为每个项目单独配一套环境。虚拟环境可以解决这个问题。
9. 运维
这就多了:Nginx,Docker,Kubernets,Linux。
虽然大多数公司都有自己的运维,但是我们多多少少也是要了解一点。项目部署的时候也要配合运维写一些脚本文件,这个后面有机会再说。
五、总结
可以看到内容已经很多了,这还没完。上面列出来的是我们项目中使用到的(包括但不限于),但并不是每个项目都用了这么多。
❗️ 特别建议:
计算机的基础知识真的特别重要,比如:
- 汇编语言(学习操作系统时要用到)
- 操作系统
- 数据结构,算法
- 计算机组成
- 计算机网络
都是你上大学学的那些课程,真的很重要❗️
以上。