Web全栈工程师的自我修养

Web全栈工程师的自我修养

简介

为什么我会选择读这本书?两个原因,一是本身对于全栈的技术很感兴趣。倒并不是认为全栈工程师懂的东西多就牛逼哄哄,而是在当前这种前后端分离的大势之下,前后端开发人员都越来越聚焦于自己的领域,而缺乏对整站或者整个系统的了解,以全栈的视野更容易了解技术的全貌。二是因为书评分还不错,作者是腾讯社交用户体验设计部高级UI工程师余果。

这本书是由作者从连载专栏中整理出来的。按照作者的定义是“轻松的技术杂文集”。读完两遍之后的整体感觉是:提升视野,拓展思维。

Web全栈工程师的自我修养

什么是全栈工程师

一专多长。工程师首先有一个精专的方向,在这个方向上足够精通之后(高级工程师级别),以此为突破点去学习更多的知识,增加自己的长处。

在技术上,我一直提倡的是十字型的成长方式,即从水平和垂直两个方向提升自己的能力。比如我擅长的是javascript,我会去学习jquery、angular等这些有用的js库,这属于垂直方向。同时我继续对node.js、mongodb这类后端技术进行学习,这属于水平方向。
虽然我觉得这是一个好的学习方法,但是并不能作为衡量一个全栈工程师的标准。全栈工程师应该是在前后端都有一定专业知识,能独立开发的程序员,有没有专精的方向并不重要。即使像下面的被称作“野生程序员”的开发者,能力模型每项都得60分就应该算合格。

对于那些达不到一专多长,虽然知识面比较广,但是各方面都一知半解的开发者,作者给了一个特殊的称号:野生程序员。

Web全栈工程师的自我修养

这个能力模型竟然把JQuery单独列出来了,AngularJS、Zepto.js、Vue.js…都表示很失望~

老板雇佣一个员工,不是因为他能写程序,而是因为他能帮助自己赚钱。赚钱的方法有两种:减少成本,或者增加收入。程序员如果能加快内部系统的运行效率,让产品制作流程更加顺畅,就是减少成本。如果能让用户更容易一地购买产品,或者提高服务质量吸引更多用户,就能增加收入。

嗯,这一点我觉得很重要,使用技术知其然还要知其所以然~
为什么要用JQuery?它的选择器很强大,操作dom方便。
为什么要用Angular?它的双向数据绑定不再需要选择器,对于CRUD操作很有优势。
为什么要用Vue.js?它实现双向数据绑定的同时又是一个轻量级的框架。
技术只是手段,最合适的技术即是最好的技术。不迷信于某个技术,本末倒置,而是为了解决某类问题而去选择最低成本的技术,这才是一个成熟的开发者应有的思维。

全栈工程师涉及的一些重要技术

HTTP

前端需要关注

  • 发出的请求列表

  • 每个请求的开始时间

  • 每个请求从刚开始到结束花费的时间

  • 每个请求的类型

  • 每个请求的状态吗

  • 每个请求产生的流量消耗

  • 每个请求gzip压缩前的体积,以及在本地gzip解压后的体积

这里推荐一本书《图解HTTP》,通俗易懂。

优化策略

  • 尽量减少同一域下的HTTP请求数。域名散列等

  • 尽量减少每一个资源的体积。压缩合并等

HTTP2.0下这种优化就变得没意义了,不过预估HTTP1.1还将用10年。

后端需要关注

  • 提高服务器的请求处理能力。利用nginx等服务器做负载均衡等

  • 预防DDoS攻击。生成静态页,利用cdn等

BigPipe是Facebook公司科学家Changhao Jiang发明的一种非阻塞式模型,这种模型能解决两个问题:

  • HTTP3次握手消耗的时间

  • 现有阻塞模型中,服务器计算生成页面需要时间,等服务器完全生成好整个页面,才开始网络传输,网络传输也需要时间。

缓存

服务器缓存

  • 使用数据库缓存和缓存工具,如memcached,注意提高缓存的命中率。

  • 再加一层文件缓存。作为内存缓存的补充,查找优先级:内存缓存 ——> 文件缓存 ——> 数据库

  • 页面静态化

浏览器缓存

  • Expires

  • Last-Modified

  • Cache-Control

持续集成

版本控制

  • SVN。适合企业内部使用

  • Git。多用于开源软件

WEB开发网 -->