邂逅前端开发
邂逅前端开发
软件的认识
常见的软件

软件的定义
- 专业的软件定义:一系列按照特定顺序组织的计算机数据和指令,是电脑的非有型部分。
- 软件开发是什么呢?就是告诉计算机一系列的指令,这些指令也称之为程序。
- 开发软件的这部分人就称之为 软件开发工程师,也称之为程序员。

完善的软件系统

前端开发工程师
前端开发工程师
开发系统中各个环节的不同部分都属于软件开发:
- 这些开发者我们称之为软件开发工程师;
- 开发者、程序员、码农、IT 民工等等;
按照职能的不同也可以划分两类:
- 后端(Back-end)开发,称之为后端开发工程师;
- 前端(Front-end)开发,称之为前端开发工程师;
前端开发工程师:
- 主要负责的:Web(网站、后台管理系统、手机 H5)、小程序端;
- 也可以做:移动端(Uniapp、React Native)、桌面端(Electron)、服务器开发(Node.js);
前端行业发展
为什么要聊这个话题呢?
- 时代的一粒灰,落在个人头上,就是一座山;
- 如何行业已经停滞,甚至是倒退,没有需求,那么你如何努力也改变不了现状;
技术角度:
- 新框架(Ember.js、Preact.js)、框架更新迭代(vue3、react18)、新工具(Vite)、新模式(工程化、低代码、微前端) 层出不穷;
市场需求:
- 人才需求大、薪资高;
前端技术发展线路
初级程序员(薪资 6k-10k,1~2 年)
- 写一些简单的业务,负责项目某些模块的开发、维护;
- 遇到很多问题不知道如何处理,需要查询资料或者交流后可以解决;
- 代码通常写的杂乱无章,能用就行!
中级程序员(薪资 10k-20k,2~4 年)
- 可以独立负责中小型项目,负责公司项目核心业务的开发、维护;
- 遇到大多数问题可以自行查到解决方案,有一定的自学能力,通过官网文档可以自学;
- 代码质量较高,遵守代码规范,并且会对组内其他人的代码有要求;
高级程序员(薪资 20k-50k,4~6 年)
- 独立负责中大型项目,可以为公司项目搭建架构,创建内部的脚手架,公司内部的 UI 框架;
- 可以读懂框架源码,并且从一些开源框架中借鉴优秀的设计、架构、思想;
- 公司的核心员工,具备可替代性,成为公司技术不可或缺的一部分;
系统架构师(50k~)
- 可以对大型项目进行系统架构,不再局限于某个领域(前端、后端?)或者某项技术(JavaScript、Java、 C++?);
- 对技术领域 现有技术方案进行评估,对不同的场景给出对应的解决方案;
- 确定项目最终方案,并且对整个项目进行“核心架构”(包括完成 核心架构 实现的能力);
- 保证项目的各个环节有序进行,包括项目的高性能、高可用、可扩展能力;
资深技术专家(50k~)
- 专注于某一个特定领域
- 比如前端包括不限于对框架源码、node、js 引擎进行定制化需求、优化;
- 比如后端包括不仅限于 JVM、线程池、SQL 调试、优化;
- 比如可以主导公司项目某些特定领域技术的落地,类似流媒体、即时通信技术等;
- 某些人在行业内有一定的影响力,是某一块技术领域的 Top 人物;
- 专注于某一个特定领域
认识网页和网站
什么是网页
- 网页的专业术语叫做 Web Page;
- 打开浏览器查看到的页面,是网络中的一“页”, 通常是 HTML 格式的文件,它要通过浏览器来阅读;
- 网页的内容可以非常丰富:包括文字、链接、图片、音乐、视频等等
- 网页是构成网站的基本元素,网页通常由图片、链接、文字、声音、视频等元素组成。
- 通常我们看到的网页,常见以
.htm或.html后缀结尾的文件,因此将其俗称为 HTML 文件。 .htm和.html扩展名区别 :- 因历史遗留问题,
Win95\Win98系统的文件拓展名不能超过 3 字符,所以使用.htm - 但在 windows 后缀长度可以大于 3 位,所以 windows 下无所谓
.htm与.html,.html是为长文件的格式命名的 - 所以
.htm是为了兼容过去的 DOS 命名格式存在的 - 现在统一使用 .html
- 因历史遗留问题,

什么是网站
- 网站是什么呢?
- 网站是指在因特网上根据一定的规则,使用 HTML 等制作的用于展示特定内容相关的网页集合。网站是由多个网页组成的;
- 通常一个网站由 N 个网页组成(- >= 1);
网页的显示过程
用户角度
- 用户在浏览器输入一个网站;
- 浏览器会找到对应的服务器地址,请求静态资源(可以存放在世界上任何一个地方);
- 服务器返回静态资源给浏览器;
- 浏览器对静态资源进行解析和展示;

前端工程师角度
- 网页是由网页元素组成的,这些元素是利用 html 标签描述出来,然后通过浏览器解析来显示给用户的。
- 开发项目(HTML/CSS/JavaScript/Vue/React)
- 打包、部署项目到服务器里面


HTML/XHTML/H5 区别
HTML 语法非常宽松, 容错性强;
XHTML 更为严格,它要求标签必须小写、标签必须严格闭合、标签中的属性必须使用引号引起等等;
HTML5 是 HTML 的下一个版本, 所以除了非常宽松,容错性强以外,还增加许多新的特性
服务器
什么是服务器
- 我们日常生活接触到的基本都属于客户端、前端的内容:
- 比如浏览器、微信、QQ、小程序;
- 我们知道自己的手机并不可能存放哪些多的数据和资源:
- 比如你用《网易云听音乐》,音乐数据大部分都是存在“服务器”中的;
- 那么服务到底是什么呢?
- 服务器本质上也是一台类似于你电脑一样的主机;
- 但是这个主机有几个特点:
- 二十四小时不关机的(稳定运行);
- 没有显示器的;
- 一般装的是 Linux 操作系统(比如 centos);
- 服务器是
专门用于存储数据电脑, 访问者可以访问服务器上存储的资源 - 服务器
一旦关机,访问者就无法访问
云服务器
- 那么我以后到公司是不是就看得见服务器了呢?
- 目前公司大部分用的是云服务器(比如阿里云、腾讯云、华为云);
浏览器
浏览器的作用
- 我们已经明确知道了网页的组成部分:HTML + CSS + JavaScript。
- 那么这些看起来枯燥的代码,是如何被渲染成多彩的网页呢?
- 我们知道是通过浏览器来完成;
常用浏览器
- 浏览器是网页显示、运行的平台。常用的浏览器有IE、火狐(Firefox)、谷歌(Chrome)、Safari 和 Opera等。平时称为五大浏览器。

查看浏览器市场份额:https://tongji.baidu.com/research/site?source=index
- 浏览器最核心的部分是渲染引擎(Rendering Engine),一般也称为“浏览器内核”
- 负责解析网页语法,并渲染(显示)网页
- 常见的国内的浏览器也有很多:

- 安装最多和使用最广泛的浏览器:Chrome 浏览器
常见的浏览器内核
浏览器最核心的部分其实是 “浏览器内核”;
浏览器内核(渲染引擎): 负责读取网页内容,整理讯息,计算网页的显示方式并显示页面。
目前国内一般浏览器都会采用 Webkit/Blink 内核,如 360、UC、QQ、搜狗等。
- Trident ( 三叉戟):IE、360 安全浏览器、搜狗高速浏览器、百度浏览器、UC 浏览器;
- Gecko( 壁虎) :Mozilla Firefox;
- Presto(急板乐曲)-> Blink (眨眼):Opera
- Webkit :Safari、360 极速浏览器、搜狗高速浏览器、移动端浏览器(Android、iOS)
- Webkit -> Blink :Google Chrome

- 不同的浏览器内核有不同的解析、渲染规则,所以同一网页在不同内核的浏览器中的渲染效果也可能不同。
浏览器的访问过程
- 01 当我们利用浏览器访问网页时,其实是有真实的物理文件传输的.
浏览会先将网页上的内容缓存到本地文件夹中,然后再渲染出来呈现给用户查看
- 02 平时我们在上网时会感觉到第二次访问网页会比第一次访问网页要快,就是因为第一次访问时已经将这个网页上的信息缓存到了本地
- 03 通过观察我们还发现缓存文件夹中除了缓存图片以外还缓存了一些例如
.js .css .html等文件- 一个网页不是一个文件,而是一堆文件.
- 网页越复杂,那么组成这个网页的文件就越多
浏览器请求数据的过程
- 01 在浏览器地址栏输入 URL 地址,按下回车后, 浏览器会根据输入的 URL 地址发送
请求报文 - 02 服务器接收到请求报文,会对
请求报文进行处理 - 03 服务器将处理完的结果通过
响应报文返回给浏览器 - 04 浏览器
解析服务器返回的结果,将结果显示出来

统一资源定位符 URL
什么是 URL
- 我们在浏览器的地址栏中输入的地址其实就是 URL
- URL 全称 Uniform Resource Locator (统一资源定位符)
- 通俗点说:URL 无非就是一个给定的独特资源在 Web 上的地址。
- 理论上说,每个有效的 URL 都指向一个唯一的资源;
- 这个资源可以是一个 HTML 页面,一个 CSS 文档,一幅图像,等等;

URL 的格式
- URL 的标准格式如下:
[协议类型]://[服务器地址]:[端口号]/[文件路径][文件名]?[查询]#[片段ID]

- 比如 :
127.0.0.1/index.html(浏览器会自动补全http:和:80端口,默认是 80 端口)- http://127.0.0.1/index.html (浏览器会自动补全:80)
- http://127.0.0.1:80/index.html (完整格式)
- 协议类型://ip 地址:端口号/资源路径/资源名称
URL 和 URI 的区别
- 和 URI 的区别:
- URI = Uniform Resource Identifier 统一资源标志符,用于标识 Web 技术使用的逻辑或物理资源。;
- URL = Uniform Resource Locator 统一资源定位符,俗称网络地址,相当于网络中的门牌号;
- URI 在某一个规则下能把一个资源独一无二的识别出来。
- URL 作为一个网络 Web 资源的地址,可以唯一将一个资源识别出来,所以 URL 是一个 URI;
- 所以 URL 是 URI 的一个子集;
- 但是 URI 并不一定是 URL
URL 拆分
- 网络协议类型
http:// - 服务器 IP 地址
127.0.0.1- 由于 IP 地址全都是数字, 没有任何的含义,比较难以记忆。 所以在访问网页时最常见的不是 IP 地址 而是“域名”(一串有含义的字符)
- 例如: http://www.baidu.com 和 http://111.13.100.92:80/
- 服务器端口号
:80 - 资源路径 : 网页在服务器上的路径
- 资源名称
index.html
- 资源名称
URL 各部分的作用
服务器 IP 地址 和 服务器端口号 它们两的作用:
告诉浏览器要去什么地方才能找到对应的服务器, 也就是告诉浏览器服务器的详细地址
服务器 IP 地址相当于现实生活中的地址; 例如:广州市天河区棠安苑
服务器端口号相当于现实生活中的门牌号码; 例如: 9 栋 909 室
那么如果将地址和门牌号码结合在一起, 就是我的详细地址
资源名称的作用:
- 告诉服务器我需要获取哪一个文件
资源名称
- 需要访问的文件名称
HTTP 协议
什么是 HTTP 协议
- HTTP 是 Hypertext Transfer Protocol 的缩写, 超文本传输协议
- 什么是协议
- 在现实生活中有很多的协议, 例如 租房协议/买卖协议/离婚协议
- 无论是什么协议他们都是一个共同点, 就是用来规范/约束某一类事物
- 沟通问题
- 沟通最常见的问题就是语言不通, 例如中国人和美国人沟通, 一个人说中文, 一个人说英文, 如果两个人都不懂中文或者英文, 那么就会出现沟通问题
- 如果要想解决沟通问题, 需要先拟定规定, 两个人都说中文, 或者两个人都说英文, 或者请一个既懂中文又懂英文的翻译
HTTP 协议的作用
- HTTP 协议是用来规范/约束哪一类事物
- 浏览器访问网页其实就是去服务器请求数据, 所以浏览器需要和服务器沟通, 所以也会存在沟通问题
- HTTP 协议就相当于我们让两个人都说中文或者都说英文一样, 就是提前规范两个人之间如何沟通, HTTP 协议也就是规范/约束浏览器和服务器之间如何沟通
SEO 优化
- 搜索引擎优化(英语:search engine optimization,缩写为 SEO)是通过了解搜索引擎的运作规则来调整网站,以及提高网站在有关搜索引擎内排名的方式。

- 后续还会讲解 SPA 以及 SSR 相关的概念 , 它们也有 SEO、首屏渲染速度有关;
计算机中的进制
认识进制
- 进制的概念:
- 维基百科:进位制是一种记数方式,亦称进位计数法或位值计数法。
- 通俗理解:当数字达到某个值时,进一位(比如从 1 位变成 2 位)。
- 按照进制的概念,来理解一下十进制:
- 当数字到 9 的时候,用一位已经表示不了了,那么就进一位变成 2 位
- 按照上面的来理解,二进制、八进制、十六进制:
- 二进制:当数字到 1 的时候,用一位已经表示不了了,那么就进一位。
- 八进制:当数字到 7 的时候,用一位已经表示不了了,那么就进一位。
- 十六进制:等等,用一位如何表示十六个数字呢?a(10)、b(11)、c(12) 、 d(13) 、 e(14) 、 f(15)
计算机中的进制
- 如何表示二进制、八进制、十六进制?
- 二进制(0b 开头, binary):其中的数字由 0、1 组成,可以回顾之前学习过的机器语言。
- 八进制(0o 开头, Octonary):其中的数字由 0~7 组成。
- 十六进制(0x 开头, hexadecimal):其中的数字由 0~9 和字母 a-f 组成(大小写都可以)
- 十进制 or 二进制:
- 虽然计算机更喜欢二进制, 但是编程中我们还是以十进制为主.
- 因为高级编程语言的目的就是更加接近自然语言, 让我们人类更容易理解.
进制之间的转换(补充)
开发工具
开发必备软件
- Chrome 浏览器:开发必备浏览器
- VSCode 编辑器:开发推荐编辑器(编写代码)
- Xmind Zen 思维导图:思维导图笔记
- Typora:markdown 笔记软件
VSCode 的安装
- VSCode 编辑器下载-安装:https://code.visualstudio.com/
- 安装插件(增加功能):右侧图标最后一项,Extensions,查找需要的插件(联网)
- 中文插件:Chinese
- 颜色主题:atom one dark
- 文件夹图标:VSCode Great Icons
- 在浏览器中打开网页:open in browser、Live Sever
- 自动重命名标签:auto rename tag
- VSCode 的配置:
- Auto Save 自动保存
- Font Size 修改代码字体大小
- Word Wrap 代码自动换行
- Render Whitespace 空格的渲染方式(个人推荐)
- Tab Size 代码缩进
- 推荐 2 个空格(公司开发项目基本都是 2 个空格)
常用 VScode 插件
- Atom One Dark Theme : 编辑器的颜色主题
- Auto Rename Tag : 自动关闭标签,在修改开始标记后,将自动插入结束标记
- background-cover : 修改 VScode 背景
- Beautify css/sass/scss/less : 美化 css/sass/scss/less
- Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code : 编辑器语言设置为 简体中文
- Code Runner : 快速运行调试代码
- CSS Peek : 快速定位 CSS
- Easy LESS : 自动编译 Less 生成 CSS
- EditorConfig for VS Code : 自动格式化代码的插件
- Guides : 缩进参考线
- Live Server : 实时加载功能的小型服务器
- open in browser : 在浏览器打开
- Open In Default Browser : 在默认浏览器打开
- Polacode : 代码截图生成图片
- Prettier : 前端代码格式化
- px to rem & rpx & vw (cssrem) : px 单位转 rem
- Vetur : .vue 文件语法高亮
- VSCode Great Icons : VScode 目录图标
- Vue 3 Snippets : 快速生成 Vue3 代码片段
- Vue VSCode Snippets : 生成 Vue 基本模板
- ESlint : 代码检测工具
- Error Lens : 编码时提示错误信息
常用代码片段
生成代码片段站点
- 站点 : https://snippet-generator.app/
- 用于生成 VScode 代码片段
示例与解析
1 |
|
- 注意这里的
$1,$2……$0,这是你代码快捷生成之后鼠标光标的所在位置,光标会首先定位在$1,按 Tab 键切换到$2 的位置,以此类推,光标最后会定位在$0 的位置。 - 还有其他语法,在这里一并讲解:
- 占位符:
- 占位符是带有值的制表符,如将插入并选择占位符文本,以便可以轻松更改。说白了占位符
${1:foo}就是在$1的基础上,光标跳到$1位置的同时会自动生成并选中 foo,同样按 Tab 键切换到$2的位置。占位符可以嵌套,如 。${1:foo}${1:another ${2:placeholder}}
- 占位符是带有值的制表符,如将插入并选择占位符文本,以便可以轻松更改。说白了占位符
- 选择
- 占位符可以作为有选择的值。语法是以逗号分隔的值的枚举,用竖线字符括起来,例如 。插入代码段并选择占位符时,选项将提示用户选取其中一个值。
${1|one,two,three|}
- 占位符可以作为有选择的值。语法是以逗号分隔的值的枚举,用竖线字符括起来,例如 。插入代码段并选择占位符时,选项将提示用户选取其中一个值。
- 变量
- 插入变量的值。如果未设置变量,则插入其默认值或空字符串。当变量未知(即未定义其名称)时,将插入变量的名称并将其转换为占位符。
$name${name:default} - 可以使用以下变量:
TM_SELECTED_TEXT当前选定的文本或空字符串TM_CURRENT_LINE当前行的内容TM_CURRENT_WORD光标下单词的内容或空字符串TM_LINE_INDEX基于零索引的行号TM_LINE_NUMBER基于一个索引的行号TM_FILENAME当前文档的文件名TM_FILENAME_BASE不带扩展名的当前文档的文件名 (比如这里你在用户代码片段中写了${TM_FILENAME_BASE},在自动生成的代码里就会在这个位置自动填充上你的文件的不含扩展名的文件名)TM_DIRECTORY当前文档的目录TM_FILEPATH当前文档的完整文件路径RELATIVE_FILEPATH当前文档的相对(相对于打开的工作空间或文件夹)文件路径CLIPBOARD剪贴板的内容WORKSPACE_NAME打开的工作区或文件夹的名称WORKSPACE_FOLDER打开的工作区或文件夹的路径
- 要插入当前日期和时间:
CURRENT_YEAR本年度CURRENT_YEAR_SHORT本年度的最后两位数CURRENT_MONTH以两位数字表示的月份(例如”02”)CURRENT_MONTH_NAME月份的全名(例如”七月”)CURRENT_MONTH_NAME_SHORT月份的短名称(例如”Jul”)CURRENT_DATE以两位数字表示的月份中的某一天(例如”08”)CURRENT_DAY_NAME日期的名称(例如”星期一”)CURRENT_DAY_NAME_SHORT日期的短名称(例如”星期一”)CURRENT_HOUR24 小时制格式的当前小时CURRENT_MINUTE当前分钟为两位数CURRENT_SECOND当前第二位为两位数CURRENT_SECONDS_UNIX自 Unix 纪元以来的秒数
- 对于插入随机值:
RANDOM6 个随机的 Base-10 数字RANDOM_HEX6 个随机的 16 位基本数字UUIDA 版本 4 UUID
- 插入变量的值。如果未设置变量,则插入其默认值或空字符串。当变量未知(即未定义其名称)时,将插入变量的名称并将其转换为占位符。
Chrome 浏览器开发者工具
- 打开 Chrome 调试工具:
- 方式一:右键 – 检查
- 方式二:快捷键 – F12

- 其他技巧:
- 快捷键:ctrl++ 可以调整页面或者调试工具的字体大小;
- 可以通过删除某些元素来查看网页结构;
- 可以通过增删 css 来调试网页样式;
prettier 插件常用配置规则
1 | { |
ESlint 常用配置规则
1 | "no-alert": 0,//禁止使用alert confirm prompt |
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用CC BY-NC-SA 4.0协议,完整转载请注明来自蜗牛浪迹天涯
