精华内容
下载资源
问答
  • 2019 前端年终总结(干货满满)

    千次阅读 2020-01-10 18:00:00
    一篇很棒的年终总结,由于微信不允许点击外链,大家可以点击阅读原文查看原文,并且查看文章中的链接,觉得文章不错的话在掘金网站可以给个赞。前言从未写过年度总结,恰逢今年是变化较大的一年,所以...

    一篇很棒的年终总结,由于微信不允许点击外链,大家可以点击阅读原文查看原文,并且查看文章中的链接,觉得文章不错的话在掘金网站可以给个赞。

    前言

    从未写过年度总结,恰逢今年是变化较大的一年,所以需要有一个总结仪式。同时希望在未来的每一年都能有一次年度总结,看看当前走过的路,也回望以往的不足。毕竟,前端一世,草木一秋。

    关于我的年度总结,这里主要分为以下几个模块(文章篇幅很长,大家可以按需阅读):

    • 技术

    • 学习

    • 杂七杂八

    • 招聘

    • 掘金

    「技术」模块主要讲解这一年来自我技术方面的创新以及实践。「学习」模块会讲解 2019 的一些学习内容以及前端新认知,并且也会讲解自我的学习方法,希望对在校以及刚入职前端工作的同学有所帮助(鉴于很多掘友高频询问如何学习前端)。「招聘」是今年最有感触的一块,会重点讲解自己在阿里的招聘感受,希望对想入职阿里工作的同学有所启迪。

    抱歉说明:这里对掘友们说一声抱歉,在回复问题时由于工作忙碌而不够耐心(问相同问题的人太多),接下来的文章会重点针对高频问题在「学习」和「招聘」模块做一些阐述。

    技术

    今年是技术成长最多的一年,也是自我转变最快的一年。以下是自己总结的一张技术结构图,其中标红的部分是今年有所接触或深入的部分:

    对我而言,今年技术创新的关键词是「UI 框架 / 脚手架」和「低代码(Low Code)」,技术实践的关键词是「桌面端」。

    UI 框架 / 脚手架设计

    今年年初的主要工作是对基础组件库进行框架重构以及对业务组件库进行框架设计,这是自我感觉最快乐的时光,因为一直不停的需要解决一些棘手的问题(往往困难是自我成长的机会点)。接下来将从以下四个方面讲解 UI 框架 / 脚手架设计的过程:

    • UI 框架重构前提

    • 基础组件库的框架重构

    • 业务组件库的框架设计

    • UI 脚手架的设计

    UI 框架重构前提

    公司现有的基础组件库 1.x 基于 Element UI 框架进行设计,在开发的过程中发现 Element  UI 框架带来了以下一些问题(相对我司而言):

    • UI 源码编译的 Webpack 配置复杂

    • Demo 演示的 Webpack 配置复杂,且对于 UI 开发者的开发体验不够友好

    • Demo 演示的线上体验不够友好

    • Demo 演示没有 CI 自动部署能力

    • UI 框架的 Scripts 脚本繁多(多数是因为需要编译各种输出规范以及按需引入的能力)

    友情提示:如果 UI 框架的一些能力(例如 utilscommonjs2 版本的各个组件按需引入umd 版本)根据公司自身的情况并不需要,那么完全可以砍掉从而大幅度简化 Webpack 配置(除非未来想要开源)。

    为了解决上述问题,对公司现有的基础组件库 1.x 版本进行了框架重构。

    基础组件库的框架重构

    首先重点研究了 Element UI 框架的设计,其次在此基础上对组件库进行了框架的重构设计,重构成 2.x 版本后的框架大致如下图所示:

    从图中可以发现, 2.x 版本的 UI 组件库特性如下:

    • 采用 Vue CLI 3.x 的库构建能力,极大简化了 UI 的 Webpack 配置(大部分配置交由 Vue CLI 官方维护)

    • 采用 Vue CLI Plugin 设计 UI 工具插件,提供更多工具的通用性和灵活性(Vue CLI 3.x 标红的部分是自定义 UI 插件)

    • 采用 Vuepress 1.x 进行 Demo 演示设计,极大降低了 Demo 演示的 Webpack 配置复杂性。可使用 Vue 设计各种通用的 Demo 演示视图组件,除此之外还可以享受 Vuepress 1.x 带来的各种新特性(主题以及插件等)

    • UI 框架的构建能力更强,例如对浏览器的兼容性处理

    • UI 组件的开发统一采用 Vue 官方推荐的风格指南作为标准( ESLint 作为标准执行的检验工具 )

    • Webpack / Babel 编译器可跟随 Vue CLI 3.x 进行灵活升级

    • 支持 TypeScript (UI 组件声明文件)

    额外吐槽:这个过程中遇到了贼多的坑,深入解读了一些 Vue CLI 3.x 的源码,顺便给 Vue CLI 3.x 提出了一些 Issue。除此之外,全量接入 Vuepress  0.x / 1.x 也是一个非常辛酸的过程(连主管都去解读 Vuepress 源码了,你还有什么理由不努力)。

    业务组件库的框架设计

    通用业务组件库是在基础组件库的基础上,为了满足各个 BU 通用业务场景的诉求而衍生出来的组件库。各个 BU 可以单独创建自己的业务组件库,但是可能造成以下问题:

    • 构建组件库需要成本

    • 组件质量参差不齐

    • 重复造轮子且不能被其他 BU 复用

    • 没有统一的规范约束(UED、需求、开发、构建和发布规范等)

    因此构建一个跨 BU 的通用业务组件库是有必要的,但同时这个业务组件库需要符合以下特性:

    • 基于基础组件库

    • 有统一的收口维护人员(基础组件库核心开发团队进行总体维护)

    • 统一的 UED、需求、开发、构建和发布规范(业务团队核心开发人员独立负责,基础组件库核心开发团队评审)

    • 侧重提供按需加载的能力(各个 BU 反哺的通用业务组件会越来越多,使用时不希望引入无关的业务组件),可提供 CLI 方式按需引入

    • 各个业务组件的开发和维护交由业务团队独立进行,不仅可以快速响应 Bug,而且构建和发布后不会影响其他业务组件,整个组件库能保持灵活性和稳定性

    基于以上一些特性需求,采用了 Lerna + Vue CLI 3.x + Webpack + Babel 进行了业务组件库的框架设计:

    该业务组件库在基础组件库 2.x 特性的基础上,还存在如下特性:

    • Webpack 配置相对基础组件库更简单(不需要针对所有的组件统一收口特殊 Loader 和 Plugin 的 Webpack 配置),各个组件库在通用配置的基础上定制化 Webpack 配置的能力即可(Babel 同理)

    • 各个业务组件在 Lerna 的统一规范约束下有独立的开发、构建和发布流程,能够快速响应 Bug

    • 换肤、utilsi18n 等天然成为了业务基础组件,被各个业务组件复用的同时也可被业务复用

    • 所有业务组件的版本受到了 Lerna 整体版本的约束(不会随着响应 Bug 的修复版本越跑越乱)

    • 通用业务组件可编译可不编译(针对使用 Webpack 的工程项目,没有特殊 Loader 理论上不建议编译)

    • 不提供全量引入的能力、不提供 umd 能力

    额外吐槽:这种按需加载的模式最好是和 Vue CLI 3.x 建立配套体系,例如业务项目的脚手架是基于 Vue CLI 3.x 设计的,那么天然可以进行无缝适配。

    UI 脚手架的设计

    由于 Vue CLI 3.x 提供了插件化的开发方式,于是基于业务组件库的框架设计抽离了一套 UI 脚手架,从而可以快速构建一个新的组件库。该脚手架在业务组件库的特性基础上,还存在如下特性:

    • 一键生成:只需一个命令即可快速生成新的 UI 组件库

    • 插件体系:除了脚手架中提供的 UI 插件以外,还可以扩展自定义插件

    • 统一规范:在 Lerna 的约束下可以形成统一的开发、测试、构建和发布规范

    • 响应特点:组件库的版本迭代可以更快,不需要进行整体构建,可以快速响应 Bug

    当然这个 UI 脚手架的设计也存在一些缺陷:

    • 业务开发成本提升(按需引入)

    • 不提供 UMD 模块(针对 Webpack 工程项目)

    • 业务项目基于 Vue CLI 3.x (可在此基础上自定义项目工程的脚手架)

    通过一键命令生成的 UI 组件库结构大致如下:

    .
    ├── packages                 		# workspaces
    │   ├── alert                		# 警告(不进行 Webpack 构建)
    │   │     ├── alert.vue      		# 组件源码
    │   │     ├── index.js       		# npm包入口文件
    │   │     └── package.json   		# npm包描述文件
    │   ├── btn                  		# 按钮(进行 Webpack 构建)
    │   │     ├── lib      	     		# 目标文件
    │   │     │    └── lib.common.js	# npm包入口文件
    │   │     ├── btn.vue        		# 组件源码
    │   │     ├── index.js       		# 构建入口文件
    │   │     ├── package.json   		# npm包描述文件(需要vue cli的开发态依赖)
    │   │     └── vue.config.js  		# 构建配置文件
    │   ├── locale               		# 国际化
    │   │     ├── lang      	     	# 语言包
    │   │     │    ├── enjs   		# 英文
    │   │     │    └── zh_CN.js		# 中文
    │   │     ├── mixins       		# 各个组件调用的国际化API
    │   │     ├── src       		# 源码
    │   │     ├── index.js       		# npm包入口文件
    │   │     └── package.json   		# npm包描述文件
    │   ├── theme                		# 样式
    │   │     ├── lib      	     		# 目标文件
    │   │     │    ├── alert.css   		# 警告样式
    │   │     │    ├── btn.css   		# 按钮样式
    │   │     │    ├── index.css   		# 总体样式
    │   │     │    └── select.css		# 选择器样式
    │   │     ├── src      	     		# 源文件
    │   │     │    ├── utils   		# 通用方法和变量
    │   │     │    ├── alert.less		# 警告样式
    │   │     │    ├── btn.less   		# 按钮样式
    │   │     │    ├── index.less   	# 总体样式
    │   │     │    └── select.less		# 选择器样式
    │   │     ├── gulpfile.js      	    	# 构建配置文件
    │   │     └── package.json   		# npm包描述文件
    │   └── utils                		# 工具方法
    │         ├── lib       		# 目标文件(这里也可以采用lodash的方式,去掉lib文件夹这一层)
    │         ├── src       		# 源文件
    │         ├── babel.config.js		# 构建配置文件
    │         └── package.json   		# npm包描述文件
    ├── public                   		# 公共资源目录
    ├── src                      		# 开发态目录
    ├── .browserslistrc                   	# UI框架目标浏览器配置
    ├── .cz-config.js                      	# cz定制化提交说明配置
    ├── .gitignore                      	# git忽略配置
    ├── .lintstagedrc			# lint-staged配置
    ├── babel.config.js			# vue cli的babel配置
    ├── lerna.json				# lerna配置
    ├── package.json			# vue cli容器描述文件(容器不是npm包)
    ├── postcss.config.js			# postcss配置
    ├── README.md				# 说明
    └── vue.common.js			# 通用的组件构建配置文件
    

    友情延伸:专门写了一篇关于 UI 脚手架设计的文章,重点讲解了 Element UI 框架的设计原理以及 UI 脚手架的整体框架设计方案,感兴趣的同学具体可查看 Vue CLI 3 结合 Lerna 进行 UI 框架设计。

    低代码(Low Code)设计

    低代码解决方案是年中的时候设计的,主要源于业务的诉求(需要注意技术都是源于业务的诉求,不要凭白造轮子)。低代码的设计主要经历了以下几个阶段(加粗的部分由其他同事实现或者和其他同事一起协作实现):

    • 动态表单可动态校验(根据 JSON 信息动态渲染表单项)

    • 动态表单可动态发请求(表单项可动态发送请求渲染信息)

    • 动态表单可动态级联(根据表单项的变化进行表单项的动态渲染等)

    • 业务组件库基于 UED 规范设计通用的页面布局组件

    • 基于页面布局组件沉淀通用页面模板能力(UED 规范以及业务反哺)

    • 制作可一键将通用页面、依赖、菜单处理集入业务工程项目(基于通用项目脚手架)的服务工具,从而提升业务的开发效率

    • 基于通用页面模板实现简单的动态页面渲染能力 (此时的渲染 JSON 没有形成规范)

    • 制作动态渲染的 JSON 规范(类似于 JSON Schema 规范)

    • 制作视图渲染器,可根据规范的 JSON Schema 动态渲染页面(包括路由的跳转)

    额外补充:当时视图渲染器在逻辑设计以及数据处理上没有完全想清楚,当然后续还需要设计视图拖拽引擎,最终实现可视化低代码的设计。

    除了自己参与的低代码设计,也深刻学习了阿里的低代码中台产品,这个体会就深了,由于没有开源这里不再赘述。

    桌面端开发

    桌面端是年末才接触的,对于桌面端的开发主要经历了以下几个阶段:

    • 了解现有 PC 桌面端的开发框架(科普可跳过)

    • 优化现有 PC 桌面端 CEF 的开发框架

    • 约束 APP 开发规范

    现有 PC 桌面端的开发框架

    个人认知的现有 PC 桌面端的开发类型主要分为以下几种类型:

    桌面客户端类型比喻特性
    纯 Native 开发(C++、Objective-C、C#、duilib)汽车性能好、安装包小、XP兼容性好、开发周期长、难以实现快速迭代、跨平台开发困难
    纯 Web 开发(Node.js、JavaScript)电动车跨平台、性能相对较差、内存占用高
    Hybrid 混合开发(C++、JavaScript)油电混合动力车安装包大、性能相对 Native 较差,相对纯 Web 较好、复杂界面和动画效果、跨平台、可实现快速迭代、框架开源且升级快

    其中涉及到 Web 前端的桌面端应用开发框架如下(这里只是做简单调研):

    客户端开发框架类型特性应用
    Nw.js纯 Web 开发内存占用高、支持XP 系统、启动速度、性能较差DingTalk、Mongo Management Studio、Soundnode
    Electron纯 Web 开发不支持 XP 系统(定制低版本可以)、最低支持 Win 7(2B/2G 有一定的量)、与 Native UI 框架融合难度高Atom、Visual Studio Code、Skype
    Chromium Embedded Framework(CEF)Hybrid 混合开发基于 Google Chromium 项目开源(兼容性好)、支持 XP 系统、可方便定制和融合 Native UI 框架、内存占用等性能良好DingTalk、有道、网易云音乐、Github

    开发纯 Native 应用的成本较高,一般对性能要求极高的产品才会选择此类开发方式(例如微信)。通常而言,从开发成本、操作系统兼容性、跨平台能力、UI 效果以及产品的迭代速度等方面而言,采用纯 Web 的开发方式是大部分公司都会选择的高性价比开发方式。当然像 DingTalk 这样的产品在考虑整体性价比的同时也会对标微信的性能体验,选择 Hybrid 混合开发是一种非常高效的迁移方案(不仅可以提升产品的性能,实现部分高性能需求的 UI Native 化,还可以从 Nw.js 进行部分应用的平稳迁移)。

    优化现有 PC 桌面端的 CEF 开发框架

    公司现有的桌面端应用采用 CEF 多容器隔离的框架进行设计,大致的框架图如下所示:

    从图中可以发现,通过 CEF 多容器隔离,每一个应用都可以被理解为一个独立的 SPA 应用(多容器隔离可以简单理解为多页应用)。那么这个框架所产生的问题如下:

    • Webpack 多入口配置复杂(单个工程项目结构)

    • 开发需要额外的配置(例如开发启动应用过滤等)

    • 受到整体框架的约束,新增的应用很难升级语言新特性(例如 React)

    • 应用越来越多,工程项目越来越臃肿,整体越来越难以维护

    • 应用没有自己的开发规范,不利于协作维护

    • 整体构建速度慢,且容易导致构建的不稳定性(单个应用更新往往也需要进行整体构建)

    为了解决以上问题,构思了新的框架设计进行桌面端开发:

    • Webpack 单入口配置(各个应用由通用脚手架生成新的工程项目,新增的应用不需要额外进行 Webpack 多入口配置)

    • 新增脚手架且对应用进行规范约束(脚手架是同事做的)

    • 新增应用可随着脚手架升级语言新特性

    • 解耦公共服务,形成 npm 包独立维护体系,并形成开发文档提升开发体验(未完成)

    • 解耦业务组件库,形成 npm 包独立维护体系,并形成开发文档提升开发体验(未完成)

    • 应用单独构建且构建速度快,构建整体应用包时稳定性高,可形成局部构建能力(测试期间可进行局部构建测试)

    • 一键 CLI 整合整体应用包(未完成)

    友情提示:这里的公共服务很多,例如还包括 Native API、本地存储、TypeScript 公共类型定义等。

    约束应用的开发规范

    脚手架只是约束了应用的技术栈(包括开发、校验、构建和测试流程等),除此之外还需要约束工程项目内部更加细致的开发规范,后续更利于多人协作和维护。这里对每个应用的开发做出了如下的规范约束(2 个月的 React 开发经验提出的规范,如果不够完善请大家多多补充):

    友情提示:如果是 React Hooks 开发(React Hooks Redux),可以去除应用视图 / 容器应用视图 / 业务是按照业务模块进行划分(能形成一定的通用性更优)。应用视图 / 容器应用视图 / 业务形成一一对应关系,除了担任控制器的作用,还可以起到跨业务模块通信的能力。应用视图 / 布局可快速适应应用视图 / 业务模块的需求变化,形成新的布局能力。如果是 TypeScript 开发,那么应用视图层级建议平铺,否则会造成Props 多层级传递的声明冗余(当然 TypeScript 声明应该按照应用视图 / 容器进行继承划分,传递 Props 的时候声明会变的更加清晰简洁)。

    学习(针对新人,大佬跳过)

    2019 学习

    对我而言,今年学习实践的关键词是「Vue 2.x 以及 Vue CLI 3.x 源码解读」、「算法学习」和「重拾 React 」。学习认知的关键词是「Graphql & BFF」、「中台」、「微前端」和「Serverless」。

    源码解读

    很多人可能对于源码解读会产生一定的误解,他们的认知往往是这样的:

    • 源码这么难根本读不懂

    • 看了源码也没什么卵用

    • 反正我不是大佬学不学也无所谓

    • 框架嘛只要能用就行,学那么多干嘛,除非需要面试造火箭

    但是当他们遇到稍微难以解决的问题时往往是这样的:

    • 为什么这样写不对呀

    • 为什么我的代码写出来性能有问题

    • 这个功能应该怎么做呢

    • 为什么我连一个像样的 UI 组件都写不好

    • 页面上报了一堆的黄色真香警告但却读不懂是什么操作太秀了导致的

    源码解读当然是为了让你更了解你所使用的框架,从而让你可以快速定位技术 / 业务问题从而高效的解决问题,快速设计解决业务的可行方案以及设计一些通用的技术方案等等。但是源码解决往往确实是复杂困难的,一般我的做法如下:

    • 根据错误堆栈信息进行源码跟踪,形成单点理解源码的能力(不要动不动一遇到错误就慌了,可以根据错误的堆栈信息比别人多走几步,静下心来调试进去看看,里面到底是什么花)。这样在解决技术或业务问题的同时就形成了源码的解读能力,而且往往可以积少成多。同时如果这个问题恰好是源码的问题,你还可以给官网提 Issue 或 Pull Request,对框架进行一波反哺

    • 如果额外有时间,可以了解一些源码的框架(比如源码是由几大模块组成的),然后自己尝试理解框架的流程

    • 根据框架进行模块拆分(例如从 Vue 的角度出发,包括数据劫持、视图解析、Diff 更新等),尝试一个模块一个模块去理解框架源码(此时自己可以进行手动调试代码或者自己模拟一下如何实现,或者如果确实不知道怎么解读也可以尝试查看一些优秀的源码分析博客)

    • 形成整体的框架源码理解(如果有条件可以尝试写一个简化的框架)

    友情提示:这里附上我的 Vue 源码解读实践文章 基于Vue实现一个简易MVVM 以及 JQuery 源码分析 (JQuery 源码分析是我实习的时候参考《锋利的jQuery》/《jQuery技术内幕》/《JavaScript高级程序设计》/《JavaScript权威指南》一行行代码调试并且一行行注释解读出来的,加了很多对于 JavaScript 基础知识的理解。那个时候时间较多,纯粹是一件既笨又无聊还低效且需要耐心坚持的事情,大概花了几个月的时间,如果是技术小白还是建议可以看看的)。

    算法学习

    算法学习是从面试中萌发出来的念头。当时参加有赞面试被算法题按在了地上摩擦,决定好好重新学习一下算法。I-Algorithms 是参考了《算法导论》/ javascript-algorithm  / CLRS 打造的一个简单易懂的 JavaScript 算法学习教程文档。当然这一块中途被放下了,因为重新入职后根本没时间......不过后面等我适应了阿里的工作,我还是会重拾这一块的,感兴趣的同学可以查看一下,目前学习的内容如下:

    第一章:算法基础

    • 插入排序

    • 插入排序习题

    • 分析算法

    • 分析算法习题

    • 归并排序

    • 归并排序习题

    第二章:函数的增长

    • 渐进标记

    • 渐进标记习题

    • 常用函数

    • 常用函数习题

    友情提示:感兴趣的同学可以查看 Github 仓库的算法学习介绍 I-Algorithms(本身这个项目也有值得小白学习的地方哦),也可以查看文档的线上学习地址 I-Algorithms。

    重拾 React

    这个就没多少可以说的余地了,2016年实习的时候正好搞过 React SSR (那时候连一行 JQuery 都不会写。由于之前是做嵌入式开发,相对于转学 React 不算是什么困难的事情,把官网过了一遍重新回忆了一下 React,简单基于 Create React App ( Vue CLI 3.x 的插件系统真香)写了一个 React 教程了解一下 React 周边,主要包括了(也是半途而废):

    • 创建应用程序

    • 设置编辑器

    • 集成开发工具

    • 样式设置

    • 组件引入

    • React Redux(配合 Rxjs、 immutability-helper、简易实现带中间件的 React Hook Redux 等)

    • React 调试工具

    以下是半途而废的部分

    • 路由解决方案(搞了一半)

    • React 语法

    • React Static

    • React Next

    那这里遇到一些从 Vue 转 React 或者两者都会的面试者时,我往往会问他们对于这两个框架的看法,其实这种问题往往只是想听听他们的理解而已。那对于我而言,React 和 Vue 相比:

    • 汽车手动挡和自动挡的区别(手动挡开车更危险,自动挡开车更耗油)

    • React 相对于 Vue (2.x 版本)对 TypeScript 的支持确实更友好

    • React 确实更考验开发者的编码功底

    • React 框架本身的学习成本确实更低且框架的语法更稳定(如果不算周边生态)

    友情提示:如果是 Vue 开发者想尝尝 React 的鲜,可以看看我写的这个仓库 React-Tutorial(半途而废系列)。

    我是如何学习前端的

    鉴于很多加我的掘友都高频询问前端应该如何学习,我这里额外将以前学习前端的方法列举一下,供掘友们参考。我的学习方法大致分为以下几个过程:

    • 书籍

    • 笔记

    • 文档(英文)

    • 博客

    友情提示:笨鸟先飞。

    书籍

    如果想要系统的学习一个专业,那么肯定是需要静下心来花时间系统的学习跟这个专业相关的任何基础知识,书籍当然是最好的途径。我这里将之前学习的书籍列举一下,大概如下图所示:

    友情提示:读书是很花时间的,如果你觉得自己静不下心来读书,我觉得看看视频也是不错的。如果你静的下心来读书,那就好好读几本自己欠缺的书籍。当然除了一些技术书籍,平常也应该注意阅读一些能够改善思维的书籍(辛亏小时候养成了阅读文学作品的好习惯)。

    笔记

    好记性当然不如烂笔头,有些书你读着读着就变得难以理解,或者你读着读着就忘记了。这个时候最笨但最有效的方法是边读边实践边记录。记录和实践的过程一方面可以帮助你理解书中的阐述,另外一方面当然也可以帮助你日后快速回忆书本的大致内容(尤其是面试前特别管用),达到抛开书本提取精华的目的。这里我将我之前的笔记整理出来供大家参考:

    • jquery2.0.3源码分析笔记 -  参考《锋利的jQuery》/《jQuery技术内幕》/《JavaScript高级程序设计》/《JavaScript权威指南》

    • ES6学习笔记 - 参考《ES6标准入门》

    • 设计模式 - 参考两本《JavaScript设计模式》

    • JS类和继承 - 参考《ES6标准入门》/ 《JavaScript高级程序设计》/《JavaScript权威指南》

    • 如何使JS提高运行性能 - 参考《高性能JavaScript》

    • 算法导论与javascript实现 - 参考《算法导论》/《数据结构与算法JavaScript描述》/ javascript-algorithms / CLRS - 【进行中】

    • 数据结构和算法  - 参考《数据结构与算法JavaScript描述》

    • CSS权威指南 - 参考《CSS权威指南》

    • CSS世界 - 参考《CSS世界》/《CSS权威指南》

    • 精通CSS - 参考《精通CSS:高级WEB标签解决方案》

    • HTTP协议分析 - 参考《图解HTTP》

    • 正则表达式 - 参考《精通正则表达式》- 【进行中】

    以下是早期的笔记(很 Low 的 Word 文档),但是有好几百页几万字的那种(现在自己看看都蛮佩服自己的),那时候还不知道用 MD 格式:

    • JavaScript高级程序设计 - 参考《JavaScript高级程序设计》

    • JavaScript权威指南 - 参考《JavaScript权威指南》

    友情延伸:ziyi2/awesome-front-end 是自己整理的一个前端大杂烩,除了笔记、书籍和博客之外,还有我珍藏多年的书签(不定时更新)。

    文档(英文)

    文档部分主要强调的是阅读能力和书写能力:

    阅读能力:这里需要强调的是培养自己阅读英文文档的能力(尽量阅读官方文档,除非你很难看懂文档到底说了什么)。如果你觉得阅读比较吃力可以配套一些 Chrome 翻译插件(例如 Google 翻译)。通常在研究一些新技术的时候需要阅读一些官方文档(这些文档大比例都是英文文档,而且一般情况下英文文档的更新会比中文文档更新的更快),所以阅读英文文档是一个非常重要的能力。书写能力:书写文档能力是一种非常非常非常重要的能力,它可以很大程度上减少设计和沟通成本(防遗忘 / 防重复说明等)。当然书写规范也是很重要的,你可以参考一些开源作品的官方文档书写风格,也可以参考一些特定的书写规范(例如阮一峰的中文技术文档的写作规范)。当然写文档也需要养成实时更新的好习惯,否则过时的内容反而会导致设计和沟通成本的提升。

    友情延伸:如果公司能够使用语雀,推荐语雀作为技术文档产品是一个不错的选择。如果不能使用外部产品,可以自行建立文档预览站点,例如使用 VuePress / React Static 等。

    博客

    写技术博文是今年开始才真正养成的习惯,虽然自己曾经有一个博客站点 www.ziyi2.cn,但其实更多的是记录一些学习笔记或者生活。今年开始在 Github 上使用 Issue 书写技术博客(以前总觉得要有一个自己的域名站点且网页要酷炫,现在是真的觉得要好用且实在,不搞花里胡哨的东西):

    使用 Github 记录博客的好处是你可以关联给三方库提的 Issue,也可以博文之间互相关联,还可以去实时评论和关闭 Issue。当然玩法只会更多(例如基于 Issues 生成静态站点等),对于我来说这些功能就够了(之前看到一篇写的非常好的 Github Issue 博客教程,暂时找不到了)。

    差不多上面截图的文章是我今年产出的所有博客文章(下半年换公司后只在公司的内部站点发表了一篇文章),如果对其中某些博文感兴趣的同学可以查看 Ziyi2 Github Issues。

    杂七杂八

    跳槽

    其实今年本来没有想过跳槽,只是觉得到明年年中就工作三年了(三年经验比较好换工作,且确实自己想换个离家近一点的公司,阿里当然成了首要目标),今年可以先出来试试水,看看是不是从物联网公司往互联网公司跳槽会比较难。结果一不小心就面上了,最终走的也很匆忙。当然从年初到年末升了两次工资也是蛮爽的,或许以后再也不会有这么大的工资涨幅了,啊哈哈。

    PPT

    以前对于写代码的不如写 PPT 的没有多少体感,因为前公司真的不需要做什么 PPT,唯一做的几次 PPT 也不是为了向上级进行述职,而是对其他 BU 进行技术分享,哪怕是晋升也不需要做 PPT。来了阿里之后发现写好一个 PPT 确实需要技术含量,当然讲 PPT 更需要技术含量(如何在有限的时间内最大化体现你的工作成果)。

    运动

    今年上半年4月开始到8月半基本上不下雨的话每天坚持从住的地方跑步去公司上班,但是来了阿里以后就打破了两年的作息习惯,再也无法7点半起床,再也无法早到公司多学习一个小时了(读书的时间都是挤出来的)!希望后续自己能够慢慢调整回来!

    招聘

    来了阿里之后,很多地方和原来的公司还是有很大的差异。比如更加自由(上下班不用打卡,如果加班很晚第二天可以中午到公司......)、更加忙碌(各种评审会、周会、双周会以及月会等)、更加独立自主(很多业务有人催但没人管,你需要自己为你的业务买单,是一种自下而上的模式而非自上而下的模式)、更加多面(跨部门协作、移动办公、技术培训、文化培训等等)。我觉得挺好,因为我不单单只是在写代码。除此之外,同事都很厉害,如果你遇到解决不了的问题几乎只要一脑暴,立马就有了解决方案。

    说了那么多当然是希望大家能来应聘,因为真的缺人。当然为了让大家能够更加熟悉我们这边的招聘流程,这里会从以下三个方面简单说说我当面试官的一些感受:

    • 简历评估

    • 面试过程

    • 后续流程

    简历评估

    评估简历是招聘流程中的第一步,如果简历评估不过关那么将不会有接下来的面试流程。很多加我的掘友都会让我帮忙看看简历做的是否合理(往往这些掘友对自己都不够自信),其实简历大多数是由各位的学习和工作经历决定的,没有合理不合理的说法,只有合适或者不合适应聘岗位的情况。当然对于众多投递的简历还是会先做第一步筛选(这不是我自认为的简历评估方法):

    • 3 年以上工作经验

    • 技术栈符合 BU 的业务场景

    • 技术栈很丰富且有深度

    • 技术创新 / 普惠能力

    • 业务复杂且能体现自己的负责性 / 主动性

    • 带领团队的能力

    • 开源项目经验

    以上是我作为一面面试官的评估方法,这是一个很现实的问题(有些评估方面怕引起众多掘友不良反应,这里就不一一列举了),因为很难从一堆简历中去精准的挑选出一个合适的简历(事实上大部分简历都千篇一律,因为大家写简历的形式真的都差不多),所以得有一套基本的评估方法。当然如果没有筛选出以上信息,我还会从以下信息进行二次筛选:

    • 2 年工作经验技术栈有深度

    • 技术普惠能力

    • 业务能体现自己的主动性 / 思考性

    • 业务上有性能优化经验

    除此之外当然也会有一些硬性过滤的指标:

    • 频繁跳槽(会被定位成没有业务 / 技术沉淀)

    • 简历做的极不认真(排版不清晰 / 错别字)

    • 专业技能都是基础技能(擅长 DIV + CSS 布局、擅长 HTML / CSS / JAVASCRIPT、了解 闭包 / 原型链 / ...)

    友情延伸:千万要留神专业技能,切忌写一些面试官一看就没兴趣的技能(你感觉会很多基础技能,写的越多越好,殊不知大家都会,甚至稍稍一深入询问你就怀疑自己是不是真的会了,还不如不写),很多技能信息你可以在项目经历中间接的透露出来。如果想了解更多如何写简历的技巧,可查看我的另外一篇文章 面试分享:两年工作经验成功面试阿里P6总结 / 简历。

    面试过程

    目前国内的面试环境确实比较恶劣,记得之前看到有人在某社区评论说 Redux 作者如果来面试国内的三四线公司,可能连一面二面都过不了。这里我谈谈我自己对于面试的看法,我想说面试不是为了为难大家,也不是为了体现面试官多么牛逼之类的,面试是为了挖掘大家的能力和潜力。当然,每一个面试官的面试风格都不一样,大家不要再问我下一面是不是会问 XXX 问题,下一面是不是会有在线笔试等等,我不是下一个面试官。必须每一个人,每一个 BU、每一个公司、每一个国家、每一个行星、每一个星系面试的风格都不一样(啊哈哈哈,别再问我类似的问题啦,不要让你自己显得很...)。总之一句话,做好自己,做那个不能被替代的自己,不要让自己过于被动,好好准备,应付可能发生的一切。

    由于刚进公司,我一般会承接一面的面试官,那我的面试风格是这样的:

    • 提前根据简历准备面试问题,一般 8 个左右(问题一般都和简历息息相关)

    • 8 个问题至少涉及 CSS / JavaScript / 业务

    • 纵向会问一些相对深入的基础技术知识

    • 纵向可能会问一些宏观层面的技术知识(根据面试者回答的满意度酌情考虑是否加问)

    • 横向主要考察对于业务的思考

    • 如果有问题面试者不会可能会追加问题(根据面试者当时面试时长而定)

    • 如果答的可以最后会出一个笔试题(尽管我个人比较反感出笔试题)

    友情提示:我喜欢根据简历做一些深度面试,但事实上一面更多的应该是做一些广度面试,不仅仅是根据简历已有的内容进行面试。

    这里给出面试过程的几点建议:

    • 心态放平稳,假设第一题你答不上来很正常,面试官不会因为第一题你不会就 PASS 你

    • 不会的题目一定不要瞎猜,往往面试官给你挖的坑就是希望你往火坑里跳,一定要答不知道

    • 不要说太多跟当前面试题无关的内容,问你什么问题尽量就答什么问题

    • 如果没有听懂面试题可以试着询问面试官,您要问的是关于 XXX 的问题么

    • 对于某些问题一定要自己先提前精炼一下(例如作用域链、继承以及原型链等问题,当然我是几乎不会问这样的问题的)

    • 如果面试官问的某项技术自己在某些场景使用过或在别的场景有看到使用,可结合这些场景进行讲解(让面试官知道你不仅仅理解它,你还会很好的使用它)

    • 如果是 Vue 技术栈希望可以深入了解源码

    • 面试之前一定要好好准备这样一个问题:你觉得你最擅长什么(因为很有可能是面试官觉得此次面试让他很纠结过于不过,想通过此类问题对你进行二次挖掘,此类问题往往是救场问题)

    • 面试一定要真诚,切勿投机取巧

    • 面试态度一定要谦虚

    • 千万不要长篇大论,千万不要长篇大论,千万不要长篇大论(这个问题是我面试以来遇到最频繁的问题,面试者生怕面试官觉得他什么都不会问题答不上来。但是如果面试官打断了你的聊天,那么这个问题比你答不知道后果还要严重,很大可能是面试官没有得到他想要的答案且极大的消耗了他的耐心)

    对于我而言影响面试过于不过的因素大致有以下几点:

    • 你可以答上一半以上的面试题,其中有两三个问题答的比较符合预期,其中有一个问题答的比较出彩

    • 你大部分问题都能答上一些信息,虽然答的不是很符合预期

    • 你的回答效率很高

    • 你的回答让我感觉你的主观能动性很强

    • 你的回答让我感受到你自己很难受,但你却能答出个所以然

    • 你的回答让我很舒服(什么叫舒服呢,别问为什么,我不会剖析我自己,就跟找女朋友一样吧)

    • 笔试题只是做一个简单的参考,它不是影响你过于不过的决定性因素

    • 你确实擅长一些我不擅长的技术方面,但是你确实在我这一面答的不是很好,我会转交给下一面继续深挖

    后续流程

    如果你过了一面,那么后面基本上还有一轮基础面,一轮 Leader 面,一轮大 Leader 面,一轮 HR 面。所以总体而言,应该是 5 面左右。

    关于我们

    真香警告:写了这么多重点终于来了 ????????????

    大家好,我们是阿里巴巴新成立的 BU,目前还有大量的 Web 前端 HC 空缺,希望正在找工作的同学们可以来试试:

    • 目前 Web 前端急缺 P6 / P7(阿里的很多 BU 都只招 P7 了)

    • 新的 BU 你进来即是元老 ????????????

    • 前端技术体系大部分需要一起重新开拓,可以学习到更多的新内容

    • 主要负责 PC 端、客户端、钉钉 E 应用以及支付宝小程序的开发(本人完全不会小程序,不用担心 ???????????? )

    • 技术栈是 React(如果你是 Vue 技术栈完全不用担心,因为我也是 ???????????? )

    机会非常难得,如果想更多了解我们 BU 并找我内推的同学加我微信(加我时记得备注内推并自带简历哦,当然如果是技术交流或者纯粹交朋友也可以哦,不过我不一定能保证仔细认真的回答问题哦):18768107826

    友情提示:已经有掘友通过我的推荐成功加入阿里巴巴了呦!

    掘金

    我是一个惰社交人员(不玩知乎,不玩微博,不玩...),今年 1 月份加入掘金的初衷是希望自己多和社区保持信息同步,不会被面试信息淘汰。但加入掘金之后发现我的初衷慢慢被改变,掘金对我产生了一些意想不到的影响(不管是生活上还是工作上):

    • 会经常看热门文章

    • 会经常刷热门沸点,并且看到有趣的或者息息相关的信息就会主动占坑

    • 会经常搜索科普文章

    • 会收藏文章并进行归类

    额外发现:每天早上醒来的第一件事情可能是刷沸点,也可能是直接起床。坐在马桶上的第一件事情可能是刷沸点,也可能是刷今日头条。出行地铁的时候可能是看热门文章,也可能是纯听歌。中午吃饭的时候肯定是先刷沸点。晚上睡觉前可能是刷沸点可能是刷抖音也可能是刷朋友圈。

    于是憋了好久鼓足勇气在掘金发了第一篇技术文章 Vue CLI 3 结合 Lerna 进行 UI 框架设计,收获了一些赞,但是并没有想象中的那么好。不过万事开头难嘛,只要自己坚持,总能慢慢使自己的文章带来更多的普惠。

    今年在掘金陆续发了 4 篇技术类文章,1 篇面试类文章,其中自认为写的最好的文章 基于 Vue 实现一个简易 MVVM 点赞数最少,相反自己没那么用心的面试文章 面试分享:两年工作经验成功面试阿里 P6  总结 反而点赞数很高且被各种公众号转载。从中猜测大家可能不喜欢既啰嗦又消耗脑力的文章,大家喜欢既精简又科普还不消耗耐性的文章(有点故事会的感觉)。

    我个人喜欢写那种既啰嗦又长还不会分(一)、(二)、(三)的文章(真的需要耐心阅读的那种),事实上我总是想把我知道的事情说的既仔细又具体,哪怕它可以说的更精简。当然,写任何的文章都要认真仔细,要对读者的阅读时间负责(我会反复修订反复修订反复修订,直到满意为止)。

    在掘金的第一年收获了很多粉丝,有很多掘友加我交流,但是可能我的沟通能力和社交能力真的有所欠缺,有些时候因为工作忙或者被相同问题困扰会导致我没有耐心回答掘友们的问题,希望在这篇又臭又长的文章中给大家带来一些些收获。

    额外链接

    这里推荐阅读之前写的文章(前面 2 篇实用型,后面 3 篇对面试应该会有帮助,尤其是后面 3 篇一定要看哦):

    • Vue CLI 3 结合 Lerna 进行 UI 框架设计

    • Cz 工具集使用介绍 - 规范 Git 提交说明

    • 你真的理解 $nextTick 么

    • 基于 Vue 实现一个简易 MVVM

    • 面试分享:两年工作经验成功面试阿里 P6 总结

    参考链接

    • 掘金年度征文 | 2019 与我的技术之路 征文活动正在进行中......

    专注分享当下最实用的前端技术。关注前端达人,与达人一起学习进步!

    长按关注"前端达人"

    展开全文
  • 一路磕磕绊绊,在创业最激情的时候写下 《4 年前端狗 2 年 CTO》,带团队最有成就感的时候写下《寒冬下 | Scott 的 31 岁前端年终总结》,犹如发生在昨夜。 自去年开始,打算每年都给自己做一次切片,透视下当年...

    今年一年都是飞快

    这 10 年编程好时光,花费在不经意间,而立的第三年也即将用完:

    23 到 26 岁,花在了阿里,从入门到职业迷茫,27 到 29 岁,花在了创业,从热血到倒闭还钱,30 到 32 岁,花在了小菜,从转型到确定路线。

    一路磕磕绊绊,在创业最激情的时候写下 《4 年前端狗 2 年 CTO》,带团队最有成就感的时候写下《寒冬下 | Scott 的 31 岁前端年终总结》,犹如发生在昨夜。

    自去年开始,打算每年都给自己做一次切片,透视下当年心中所想,晒一晒收获与缺憾,有些山和水,在远方看是一番模样,经历后回头看又一番模样。

    如果用一句话总结今年的最强感受,那就是 “今年一年都是飞快”。

    真快!????

    工作只干了半年

    从 1 月份举办第一次前端早早聊大会,就已埋下了离职的种子,只是当时自己并不自知,这一届大会探讨了从 10 人到 50 人的前端团队,在转管理路上的各种经验,这是我平生第一次完完整整的组织技术大会,反响超出预期。

    借这次会议与小胡子哥/霸天第一次面基,据说玉伯大大也来了,而我直到 12 月份经提醒才从上图隐约发现。

    第一届办完后,疫情就来了,从第二届开始,考虑到防疫需要,大会全部走了线上,并且在第二届办完后,代表早早聊大会的同学,将票务收入定向捐赠给了湖北医护人员。

    此时,还身在宋小菜,带着 20 人的前端团队,之后每个月会拎出几天周末,来兼职的举办大会,从 1 月份办到 4 月份,大会也举办了 4 届,内心中开始逐渐通透,这是我喜欢的事情,它可以调起我浑身的热情、激发我潜在的勇敢,亦可以让我感受到未来的收益,于是在 4 月底开始与公司聊离开事宜,做各种业务上团队上的准备。

    最终在 5 月 31 日,离开了我仍然热爱的团队,结束了上半年的工作,也结束了 10 年的前端工程师生涯。

    再启程!????

    机遇之与机会

    从小菜离职出来的前后几周时间,先后跟阿里云、字节、钉钉、蚂蚁等多个团队或者公司的负责人有过线下对接,接收到多个邀约甚至诚意满满的 Offer,这些机会摆在我的面前,说不心动是骗人的,无论是从老板风格、业务前景、工作内容、经济回报的确定性上,都极有吸引力,尤其面对再次回去阿里的机会,也让我有一种回 “家” 的归属感。

    人生的奇妙,就是前一秒登山无路,后一秒徘徊在十字路口。

    人的选择,是如何变得清晰的呢?人的内心,又是如何变得坚实的呢?

    是决意追求的机遇,更是拒绝机会的勇气,前者让我知悉我想要什么,后者让我明确更想要什么,我必须舍弃什么

    选择了,就大胆往前!????

    重新理解创业

    业可大,可小,业为何物?放到创业的语境中,业就是价值,对用户的价值、对行业的价值、对社会的价值,价值可大可小,做多少算多少,一家小吃店如此,一个 500 强亦如此。

    业可长,可短,业要多久?既有外在大的商业经济周期的规律,也有行业的特征和竞争格局,更来源于内心对它的期待和坚守,1 年是做,3 年也是干。

    因此,业是你和用户共同定义出来的,你代表了你的公司(组织),用户代表了行业和社会,主观上是你圈定了多大的业,客观上是用户能享用到到多大的业,因此业就是你和用户的共识

    这个共识,不会凭空发生,来源于你的创,创又是何物?创是共识达成的动力机器,而你来驱动这台机器,机器可以是你自主打造,也可以基于已有机器创新,无论哪种,你与机器需融为一体,送给用户电和热。

    于是,业大业小,源于机器,更源于你,你的天花板就是业的天花板,这个天花板可以是认知、阅历、能力,可以是资本、组织、格局,都关于你。

    明白了这一点,内心会焦灼而不会焦虑,动作会匆忙而不会慌张,借己创业,更是借业修己,无论多少人同往,走多远走多久,从信念到执行,关于组织中每一个人更关于你,不可逃避。

    重新理解自己!????

    独特利他有趣

    理想是支撑我们熬过明天的勇气,物质则是支撑我们活过今夜的面包,放到当前的社会,面包就是钱。

    必须用 100 个小心,重新理解 “钱” 的意义,这是一个企业存续的基础物料。

    钱和技术本身都是中性的,用钱去贪污是可恨的,用技术作恶是可耻的,走入到商业环境中,就必须活在泥土里,也就是接地气,公司要交房租、电费、税,员工要发工资、社保、奖金,业务需要推广、营销,服务器域名要采买...

    理想再美好,底层也靠钱来支撑,作为一个工程师,必须摆脱「清高」的认知,财务账放床头。

    而过去的我,恰恰是这样一个 「不食人间烟火」 的人,恰恰是一个崇尚 「君子之交淡如水」 的人,恰恰是一个 「视金钱如粪土」的人,我的眼中,对金钱带着天然的 「鄙夷」,我的脑颅中,始终旋绕 「归隐」的理想。

    今日,我已能正视基础物料、人际关系、现实与理想的定位,这是一个社会人应早日领悟的道理,而我用了将近 10 年,并不容易。一个人从极具可塑性到渐渐成熟,就是这个世界在他脑海中 「投影的三观建构」趋于稳定的过程。

    于是,我选择做 「独特、利他、有趣」的事情,帮助更多前端早日建立稳定的技术世界观,早日实现家国理想

    带着少年理想,走向再无少年!????

    早早聊酒蒙子

    今年的意外惊喜是,前端童鞋对于线下社交的诉求是相当强的,目前在早早聊的工作室,已经举办了 20 期的酒蒙子聚会,打开工程师的话匣子,把酒言欢,从团队、产品到技术,无所不谈,截止目前,已经邀请了阿里云/钉钉/蚂蚁金服/淘宝、字节抖音/商业化/教育、大搜车/丁香园等诸多前端团队的负责人参与夜聊,甚至还有猎头小姐姐的加入。

    除了小型的聚会,我也很向往去往不同城市,参与当地的前端社区的聚会,只是碍于疫情,今年的行程除了北京,都没有启动,下图是在北京字节总部,和掘金一起办的线下闭门会:

    疫情下社交,进行时!⏳

    做的好的和不好的

    今年完成了从前端团队管理者到创业者的身份转型,从技术和团队架构走向业务架构,从一个做技术的变成一个做业务的,只不过并未离开前端行业,做的是跟技术关系极近的技术业务。

    早早聊作为 2020 年的起手式,放到未来 10 年,它只是一个业务原型和雏形团队的打样,目前还非常弱小。

    关于早早聊

    做的好的:从 2020 年 1 月 11 日起,线上共举办了 17 期的技术直播分享,每个月 1~2 次,每次邀请 4~10 个讲师,在线用半天时间对工作 1~5 年的前端工程师做分享,一共请了 120 名讲师,分享了 130 场,每一期的直播定价在 50 元左右,一共有 140 万票务收入,目前养活了含我在内的三人小团队,每个月公司的各种软硬固定开支是 8 万左右,在目前的营收能力下,做到了没有找一分钱融资,团队有能力自己造血活下去,在这里面,语雀扮演了非常重要的作用,早早聊不写一行代码,借助语雀将大会的整个内容全部被结构化的管理起来。

    做的不好的:迭代了十几期,并未打造出完整的用户 「拉新-转化-留存-活跃」 的生命周期玩法,并未沉淀出有效的用户增长玩法,并未实现有规模的增长,并未获得超出预期的盈利,除此以外,并未与讲师和用户形成更有黏性的互动关系,让用户可以更方便学习大会内容、更方便择选团队跳槽,让讲师可以更轻松的发布岗位,降低招聘压力。

    关于我自己

    做的好的:再次勇敢的选择了一次,全职做早早聊,跑出了有盈利逻辑和初步结果的商业原型,帮助到社区的几万个前端,启发了心智、开拓了技术认知,另外也一对一帮了几百名同学完成职业规划或跳槽晋升和加薪,同时今年还清了所有平台的所有现金贷款(除房贷),有了时间陪家人,也有了一定的经济基础养活父母和下一代。

    做的不好的:海吃暴喝不锻炼,身体素质下降过快,在业务规划和推进节奏上不够熟练,在前端的技术综合训练上也投入过少,导致技术敏感度有明显下降,对于早早聊讲师和 VIP 童鞋的关注和链接不够,还提供不了更高的价值面内容给到核心用户。另外面对一些负面声音的自我心理建设还不够强大,多多少少会受一些干扰。

    活下去,更要活起来!⏳

    2021 更值得期待

    虽有那么多场次的分享,那么多的聚会,今年仍是一晃而过,这也许说明今年过的充实,也许说明今年的成绩难记于心,也许说明疫情下我们的时间更多的分配给了线上,而线上的记忆是瞬时的碎裂的,那么在 2021 年,我想要更多的走到线下,走到各个城市,走近更多的前端团队,走进不同年龄的前端圈层,走进大家更多的技术人生的故事中,我已准备好,你的酒和故事,Ready 了么

    推荐阅读

    我在阿里招前端,我该怎么帮你?(现在还可以加模拟面试群)
    如何拿下阿里巴巴 P6 的前端 Offer
    如何准备阿里P6/P7前端面试--项目经历准备篇
    大厂面试官常问的亮点,该如何做出?
    如何从初级到专家(P4-P7)打破成长瓶颈和有效突破
    若川知乎问答:2年前端经验,做的项目没什么技术含量,怎么办?
    若川知乎高赞:有哪些必看的 JS库?

    末尾

    你好,我是若川,江湖人称菜如若川,历时一年只写了一个学习源码整体架构系列~(点击蓝字了解我)

    1. 关注若川视野,回复"pdf" 领取优质前端书籍pdf,回复"1",可加群长期交流学习

    2. 我的博客地址:https://lxchuan12.gitee.io 欢迎收藏

    3. 觉得文章不错,可以点个在看呀^_^另外欢迎留言交流~

    精选前端好文,伴你不断成长

    若川原创文章精选!可点击

    小提醒:若川视野公众号面试、源码等文章合集在菜单栏中间【源码精选】按钮,欢迎点击阅读,也可以星标我的公众号,便于查找

    展开全文
  • 通过简单梳理完 2016 的前端技术之后,可以总结出 2017 的一些趋势。我也简单列举自己关注的几点: iOS 动态插件化技术。特别是 iOS 上的插件化技术期待能够得到更大的发展,来解决目前发版效率与包大小问题。 ...

    回顾 2016

    iOS 和 Android 系统不约而同学习了对方的优点,长得越来越象:3D touch、权限控制、夜间模式、电话防骚扰... 原本属于桥的两侧的开放与封闭,越来越往一个中心靠;由此看来,真正在 OS 里的应用 App 才是系统的灵魂。

    像「微信」,不论你用 iOS 还是 Android,很多人平常耗电量最多的 App 就是它。而微信借助大量的用户与使用时长,也在 2016 年末期,推出了「小程序」的内测,继续百度「轻应用」未完成的使命,在微信应用里再打造一个「小程序」生态市场。

    而在微信发布「小程序」之前,Google 也在自己今年的 IO 大会中提出 PWA(Progressive Web Application),推动 Web 应用向前一步,在 Chrome 里完成用户按需使用,无需安装(还可将资源离线),还有着类似客户端的高性能体验,还有桌面添加快捷方式等功能。在离线技术上用 Service Worker 来做离线化,相比之前的 App cache 更灵活高效。PWA 这项技术实际是与 Android 的 App 理念是有相应冲突的,它的未来如何还要看未来 Android 与 Chrome 如何整合吧。

    Android Stdio 2 出现了 Instant Run 特性,美团以此为基础推出了「Robust」的热修复技术(http://tech.meituan.com/android_robust.html), 解决了原来热修复上方案的兼容性问题。

    Google 除以上外,还联合了 Microsoft,Mozilla ,Apple 几个主要浏览器厂商发起了一个面向 Web 的通用二进制和文本格式项目,它是 Web 上 JavaScript 有效补充,在本地解码速度比现行 JS 解析要快得多。如果这一标准能广泛实施将影响所有 Web 开发者。

    Apple 也没闲着,在 WWDC 2016 上宣布,Apple 在 iOS 上 的 ATS (App Transport Security)策略,将在 2017 年 3-4 月左右(原计划是 1 月 1 号),非 HTTPS 的网络请求将被禁止。

    客户端我们可以不用 HTTP 协议,走自建长链或自定义应用层协议,在 WebView 里 HTTPS 则是绕不过的槛,也就是说,大多数 Web 站点将必须由 HTTP 迁移到 HTTPS。

    在网络基础设施上还不及欧美的国内, 由于 DNS 劫持与代码注入,迁至 HTTPS 将遇到证书错误,造成原来只是注入代码变成页面不可访问,最终导致 HTTP 请求成功率降低。除此之外,HTTPS 因增加了安全证书验证与加密,相比 HTTP 请求时延增长,影响加载页面性能和用户体验。

    HTTPS 的推进一方面对安全是好事,也对 Web 上普及 HTTP2 推进起到很大作用;另一方面对广大的中小站点来说换 HTTPS 真是耗不起。而现在,各大互联网公司都在忙着切协议了。

    iOS 相比 Android 的环境,让人头疼的是没有出现类似 Class Loader 的动态插件化技术。就在年底的前几天,滴滴来了个大新闻,出了一个 DynamicCocoa 技术,它是流行的热修复方案 JSpatch 的「升级版」,实现 oc 与 JavaScript 广义互调,实现插件化。不再上架 Appstore 就实现功能更新,相当让人期待。如果坑真的已被踩完,很有可能 Apple 将停止动态利用 JavaScript Core 来运行代码的这个机制。

    Web 框架上,从 Google 查询关键字的大势看,jQuery 时代已慢慢离我们而去。Web 前端框架已基本三足鼎立,分别是 React / AngularJS / Vue。让人想不到的是 AngularJS 查询指数最多的地区不在欧美,也不是中国,而是在「印度」。

    如图:

    不管是 Web,还是客户端,都不同程度遇到业务越来越复杂,代码量越来越大,编译性能越来越慢的问题。国外大厂们用之前服务端的分布式编译思路拓展到客户端实现了并行编译。Google 的 Bazel,Facebook 的 Buck,在很大程度上提升编译效率;Web 我们也做过类似尝试,能提升约 40% 左右的性能。并行编译这都是针对大厂复杂业务的方案,对于个人开发者与创业公司来说,这些都不是工程化中的最大痛点。

    Web 开发中,Node.js已在驱动前后端的再分工,这已是事实。而 Node.js最火的地方在哪?中国。也得益于知乎与一些技术论坛的热炒,现在不论在哪种场合,都在说「前后端分离」这事。事实上这谁都都有自己的理解方式,真正应用 Node.js 在前端与后端的重新分层,有轻如用它只做数据 IO 的 API,也有重如创业公司从业务到数据库连接全是 Node.js 的。前端向后端渗透,后端再后移,具体怎么分,没有定论。

    最后总结一下「跨端」,它在今年是「百花齐放」。

    跨端技术今年已不再去谈论 Hybrid 技术了。离线化、差量更新、Web 与端互调等能力已不是什么新鲜事,说明混合开发已基本成熟,在各大厂均有较为广泛的使用,如果还没做的,也在补齐当中。

    新的技术是:React Native、Weex,还有 PWA、小程序,甚至还有 Electron。我向培训行业的人了解过,今年 Android、iOS 的培训人数在减少,而以 Web 技术栈的培训中心的前端生源一直没减,这充分说明市场对这块技术人材的渴求。

    展望 2017

    通过简单梳理完 2016 的前端技术之后,可以总结出 2017 的一些趋势。我也简单列举自己关注的几点:

    1. iOS 动态插件化技术。特别是 iOS 上的插件化技术期待能够得到更大的发展,来解决目前发版效率与包大小问题。

    2. Google 一边是 Chrome 的 Web,另一边是 Android 的 App,我很期待的是 Chrome 与 Android 融合之后对开发的影响。

    3. Web 框架层面明年难有创新,中期还仍是 React/AngularJS/Vue 三驾马车的技术栈体系,但我仍期待是否有超越 React 的模板/框架思路。

    4. HTTP 到 HTTPS 的更替将会推动 HTTP 2 的使用。让 Web 页面性能十年以来以请求数为首要基准成为过去式。为应对 HTTPS,部分云计算厂商可以提供整套移动端商业解决方案,如:长链透传收费服务和 HTTPS 套装。

    5. 跨端上 React Native 与 Weex 着重于解决跨端技术问题,并不能给开发者带来实实在在的收益。PWA 还谈之过早,所以我更看好小程序未来的发展,并不是技术上现在有多牛,而是在微信它是能给个人开发者和 Web 从业者带来就业机会与收益的最佳方式。脑洞大一点的看,支付宝、Facebook、小米是否也会会推出自己的「小程序」场景呢?是件令人期待的事。

    前端的春天

    不管是 Web 前端、iOS,还是 Android,对大前端工程师来说,这是最好的时代。放在几年前 1/3 是大前端,2/3 是后端。而现在则是一半以上是大前端的人,这充分说明大前端的重要性。

    Web 前端的工程师在问未来在哪里,Android 和 iOS 的工程师也在说 Web 前端抢了他们的饭碗。出口在哪?除了向 NodeJS 向后端的渗透之外,跨端的学习,专注一端技术,关注其他端的技术也是一种出路。现在业务中遇到的问题经常是三端参与,你可以想象当开一个业务会议,后端一个工程师参与,前端一去就三人的感人画面吗?

    跨端技术,只是大前端开始。端与端技术之间相互学习和借鉴,这将成为未来前端技术最重要的创新来源。

    转载于:https://www.cnblogs.com/chris-oil/p/6239371.html

    展开全文
  • 这是一个个人在年终时 上台演讲 的 前端职位的年终总结
  • web前端个人年终总结 计算机web前端的工作大家懂得多少呢下面我们一起来看看这份范文了解下吧 工作回顾 在我进入公司的这七个月里我陆续接触了公司的软件开发平台一些已经完成的项目,b2b,收银等在工作之余我也在努力...
  • Web前端精髓年终总结

    千次阅读 2018-02-11 00:00:00
    在过去的一年,Web前端精髓 不知不觉已经推送了 224 篇文章。相信会给学习前端的成员提供一些可以提供的帮助,也感谢大家持续关注。知识已经全部汇总到GitHub中:https://github.com/wuxianqiangJavaScript基础...
    万家灯火,共聚佳节


    马上就到春节了,在这里提前祝大家新年快乐!



    在过去的一年,Web前端精髓 不知不觉已经推送了 224 篇文章。相信会给学习前端的成员提供一些可以提供的帮助,也感谢大家持续关注。


    知识已经全部汇总到GitHub中:

    https://github.com/wuxianqiang


    JavaScript基础知识:

    https://github.com/wuxianqiang/front-end-essence


    jQuery基础知识:

    https://github.com/wuxianqiang/jQuery


    前端进阶知识:

    https://github.com/wuxianqiang/blog


    点击阅读原文看看吧!

    展开全文
  • 简单的前端-年终总结

    千次阅读 2020-01-19 15:42:35
    2019年 总结 摘要 技术, 学习, 职业, 人际关系, 正文 技术 从2019年之前 我都是使用vue 和 react,当时是对react比较熟悉,因为刚进入新的项目组,项目组中使用react,用了两周时间看大胡子的react 入门文档,就开始...
  • 我主要完成了两个软件的开发,1 全景图 2 公司内部使用的后台管理系统,这是我做的比较完整的项目了 后来很幸运的进了装修云管家项目里面 在里面学习到了很多自己不熟悉甚至于从未接触的前端知识。 每每接触一个...
  • 一只前端狗的2017总结,从两个方面来总结:技术产出、软性成长。 技术成长方面,介绍下在我的主导下,今年我带领的无线架构团队做出的突出成绩,希望能够对在探索无线端架构体系的同行有所参考互相交流,涉及前端、...
  • 这一年经历的事情比较多,很多东西不知该如何说出来,索性放在博客上,算作自己的年终总结。 您可以将他当做一个故事,所以没有技术方面的东西,也可以将他当做给您一点启发的鸡汤,当然也有可能是毒鸡汤。 故事...
  • 年终总结】微信前端社招有感 时间飞快,转眼间8102还差一个月就over了,顺了顺好几天没理的胡渣儿,好像已经老了不少。 不,我还很年轻!虽然年终还没到,但好像也差不多了。 几经辗转,年底前终于拿到了微信...
  • 总结虽然不多,但是也是一份心意,还有一份是期待 前言 2016年仿佛就在昨日,怀着青春的期盼和同学辗转反折最终选择了去上海闯荡,上海夏天真的好热, 下车的那一刻感觉自己来了一个全新的世界,2016年学到...
  • 年终总结

    2020-01-21 10:56:57
    农历年底了,对自己进行个年终总结。 今年用混编开发了三类app 1.小说类 2.视频类 3.足球资讯类 一.小说类 小说类app用的是uni-app框架开发,框架上手速度比较快,文档api等分类也比较明了。 小说app整体架构还是...
  • 2019 年终总结

    2020-01-20 10:10:03
    2019 年终总结 其实也没啥好总结的,去年的好多计划都没实现… 这一年我的关键词是「见识」,见识了很多之前不曾接触到的东西: 第一次拔智齿,第一次看舞剧,第一次观看演奏会,第一次参加D2… 就像 winter 老师...
  • 2020年 - 年终总结

    千次阅读 2021-02-07 09:11:02
    2020年 - 年终总结
  • 2017 年终总结

    2017-12-31 21:13:20
    又到了年末了,又到了写年终总结的时候,惯例了,随便聊聊,说到哪是哪。 今天翻了翻去年今日的 2016年关曲调 ,发现里面指定的很多计划今年都没有实现,原因不是没有去努力,而是自己的想法变了,原先的那些决定也...
  • 2020年年终总结

    2020-12-26 11:37:34
    今年的总结也不例外,分为三个方面:生活、学习和明年目标,这里面没有列工作,不是因为工作不重要,而是因为工作太重要,公司也有工作的年终总结,所以此处就不再也不便写出来了。 生活 19年年底的疫情是年初大家...
  • 近几年前端发展较快,前端工程已经实现工程化、自动化,并且抢了一部分后台的活,js都可以开发桌面应用了,可以预见这种趋势会延续下去,就像海贼王一样,大前端时代已经到来。基于此及结合项目中的痛点,加强了对...
  • 2019年年终总结

    2021-05-07 03:47:52
    又到了一年一度的年终总结时间, 还记得去年这一天吗? 时间真的很快, 转眼告别 10 年代, 迎接 2020 年, 回归鼠年; 这一年经历了风风雨雨, 回首一年的成就和挫折, 都不禁充满激...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,487
精华内容 994
关键字:

前端年终总结