大家好,我是编程小6,很高兴遇见你,有问题可以及时留言哦。
2019-12-10 补充: 有人说标题党,有人说不知所谓,2020乱入什么的。 再次强调一下背景,本文为brad traversy在youtube视频的中文浓缩版,如果英文可以的话,可以去看下英文视频。 作者本意也是将web开发的相关方面全面的介绍一下,并涉及未来的一些趋势,例如3大框架的一些趋势,webassembly的趋势,语音识别,去框架化等等,视频也考虑了web开发的初学者,给出了一些前期学习的方向和必须学习的基础知识等等。
希望能够客观的讨论技术,减少无谓的消耗。
2019-12-10 无服务器架构新增描述“云函数”及对应英文。
以下为原文。
start 2019-12-08 14:30:00
首先声明,本篇文章属于外网内容概括和转摘,加上部分个人理解,如有侵权行为请联系我,将适当予以调整。
内容来源:www.youtube.com/watch?v=0pT…
标题为:Web Development In 2020 - A Practical Guide
为什么要有这篇文章(视频),是为了给广大前端未入门或刚入门者有一个宏观的了解,前端开发可以做什么,有哪些发展路径,早日找到自己的方向,做到心中有数。
编程的出发点很重要,就是你到底为啥编程?
仅仅作为爱好恐怕是富二代干的事情,大多数人都是工作所需吧。
首先,家伙事要齐全,电脑要有一个,台式机还是笔记本看个人情况,作者推荐是mac,理由是对开发者比较友好,用起来顺手,有些软件只有mac版本的,比如sketch,当然我的看法是,用linux作为开发电脑也没啥问题,更接近服务器部署环境。
编辑器,作为web开发,首推vscode,当然市面上也有讨论vim和xxx之战的长篇大论,我的理解是vim是一种编辑模式,vscode是ide,两种并没有直接冲突,都掌握就可以了。
浏览器,首选chrome啦,firefox市场占有率很低,个别喜好人士除外。
终端,这个没什么说的,喜欢,熟悉哪个,不用挑。
设计软件,对于自由职业者可能比较重要,还是adobe系列是王道啊。
作为前端开发者,无论什么级别,HTML和CSS都是基础,必须掌握的技能。
同意,这方面的典范就是张鑫旭同学,如果对css或者html有疑问,只要在张同学的博客里面搜索一下,基本上95%的问题都能找到答案,这就是专业啊。css其实一直在与时俱进,时不时还是得回头看一下,总能习得一些过去不知道不会或者不熟悉的东西。作为初学者,最好扎扎实实将这两个基础知识学习透彻。
作为现代网站项目,响应式布局能力已经是一个对开发人员的基本要求了。话不多说。
从上面几个方面去了解下响应式布局,然后做几个案例熟悉一下吧,不会太难的,注意,小程序里的单位是rpx(如果我没记错的话)
创建你自己的模块,熟练使用自己的可复用CSS组件。
Sass可以研究下。
这里可以对postcss再多了解了解,当然一切以项目需要为基础。sass,less,stylus之类都可以去了解下。
CSS框架特别多
不好意思,我知道bootstrap大名鼎鼎,其他的还了解semantic ui,大家去搜索一下css framework,会出来很多。这里还接触了一个新鲜的tailwind css,这个框架不提供成品组件,它觉得那些框架做的太多了,而是提供让你定制自己框架的能力,具体有兴趣的同学可以去了解下。
JavaScript是浏览器所使用的语言,也是web开发者所必须掌握的核心技能,让你的页面动起来。
不管vue, react, typescript 最后一切都回到JavaScript,所以一个初学者,还是要老老实实将JavaScript基础打牢,原生JavaScript语法和特性多了解,框架的东西都是基于基础上的一套理念的实现,各有各长处,甚至近些年还有一些反框架运动出现,提出了一切以业务目标为前提。ES6的标准,看看阮老师的教程学习一下。
五分之一分割线
以下列出一些前端开发者另一个工具箱里面的东西。
版本控制,这个不可或缺哈,新近的开发者处于最好的时代,基本远离了ftp,svn,只要掌握git和github的基本使用,就可以活得不错了,有空的时候再熟悉熟悉git bash,掌握下基本的git操作。
熟练掌握浏览器开发者工具,chrome开发者工具即可,有余力的化,跟进下chrome每次版本更新的变化,保持知识的新鲜,也可作为与同好的谈资哈。
编辑器扩展,vscode或者其他现代编辑器,本身功能基本已经足够,但是仍然有一些个性化需求,是以扩展的形式来满足的,多尝试一些前辈觉得好的扩展,不过也不要太贪心,机器配置不好的化,只留必须的扩展就够了。
emmet 辅助html工具,不知道作者为什么单独拎出来强调这个哈。
npm/yarn 这个作为一个web开发,要有往全栈发展的觉悟,npm包是一个大海,一个星系,甚至是一个黑洞,好东西还是需要淘的。yarn个人觉得不用也可以了。npm ci已经基本够用了。
axios 这里我又不理解了,单独把这个拎出来讲是想表达浏览器从后台服务取数据的重要性吗,不过对于初学者,axios还是很大众的一个技能库。
打包工具,从简单使用到配置熟练,最后能掌握原理,提高打包效率,遇水架桥吧。parcel,号称性能比webpack还高,学有余力的同学可以多了解了解。
web开发应该掌握一些基础的发布技能。
大厂的同学,发布的工作基本是运维同学给做了,不过对于中小企业,很多可能还需要自己来操作,这里的技能基本都不太难,习惯了哪个,其他也基本能举一反三。比如域名注册,腾讯云、阿里云都提供了相应的服务,主机管理学问就大了,国内的选择阿里云、腾讯云、各种云,国外的选择也是选花眼。这个只能根据经验来了。最近国外有关虚拟主机vps的竞争还是很激烈的,基本都提供了免费1年,200、300美金不等的免费额度,可以多试试。
作者特别强调了Netlify,之前我也有使用过,github+netlify的确也是一个不错的选择,对于想体验自动化部署的同学来说,可以试试。
SSL证书,推荐letsencrypt 翻译成中文就是“让我们加密吧”,虽然长但是比较好记。现时很多环境下对https还是有很高要求的,免费的letsencrypt是不二之选啊。
FTP/SFTP 不想多少, SSH和基本的CLI命令行操作,后面的云主机部分还会涉及到,这些知识都渐进了解即可。
综合上述知识,一个前端开发已经具备了以下能力。
不补充啥了,比较简单
接下来你将面临两个选择,不同的选择针对不同的学习路径。
看作者的描述就可以看出,前端开发没啥好选的,就三条路,服务器端有个等等,意味着选择的余地大多了。谁说前端就是花里胡哨呢,没事就弄个新东西出来,其实服务器端语言才是百花齐放,或者美其名曰解决不同的问题,这里不争论,继续往下走。
前端开发框架方便你快速构建强大的单页应用,具有统一的交互ui
我也只是对React和Vue略知一二,这里大家可以自己搜索下各大中小公司对前端岗位的要求条件,大体看来Vue在中国还是比较火爆的,React在大公司中的使用比例也是非常高。
作者非常喜欢的东西,我之前了解的也不多,就不瞎比比了,大意也是去框架化,仅用原生JavaScript来创造一些代码。推荐在小型项目和个人项目中试着使用体验以下。
大型应用,基本上都会用到第三方状态管理工具库,不过尽可能少用吧。
按作者的思路,比如React和Angular中已经有了一些状态管理工具的替代品(方案),所以尽量少用第三方的状态管理工具,奥卡姆剃刀来了,能少用就少用吧。
五分之二分割线
使用NEXT(React)和NUXT(Vue)来进行服务器端渲染
使用Gatsby(React)和Gridsome(Vue)来构建静态站点。
本人不才,新的博客就是用Gatsby来搭建的,之前是hexo,静态站点生成是一个趋势,对于想在互联网建立个人站点、或者小企业宣传站点的开发者,静态站点生成也是一个不错的选择,页面打开够快,维护也很方便。不过后面会提到,结合内容管理系统,事半功倍。
很遗憾,懒惰成性的我,一直说要学习下TS,可是始终还是没有系统学习下,随着大趋势来看,TS还是值得花点时间学习的,如果想继续往前端开发方向发展的话。毕竟微软爸爸的亲儿子,还是很强的。
上面的内容,加以多个项目的CHUILIAN,基本算是一个ZHONGJI的前端开发者了,下面我们要往全栈开发者的MUBIAO前JIN了。
要成为一个全栈开发者或者后台开发者,就需要学习一下服务器端程序语言和相应的服务器技术
各种语言的优劣就不细讲了,我也讲不来,Node.js是对前端开发者来说最好的入门选择,个人作为兴趣爱好,也用过一段时间的PHP和Python,脚本语言基本都是相通的。当然想更进一步的话,必须对服务器端技术有更深层次的认识,cpu、内存、进程管理等等。另外如果你对Web Assembly感兴趣的话,Rust就是比较合适的选择了。
这玩意,怎么选,已有的项目选了什么,你学就是了,如果你要自己选择一个,我建议遵循这个原则:人员、业务、技术,必须保证有两个指标是成熟的,你所熟悉的。怎么理解呢,也就是说,千万不要在你不熟悉的业务领域选择一种新技术,那就是作死,如果开发这个项目的开发人员你还不是特别熟悉的话,回去准备一根绳子吧,长一点。上面说的那些框架,国内的使用情况和国外其实还有一些不同,具体情况具体分析。
五分之三分割线
大多数应用需要一个地方来存储数据,数据库的选择也多种多样。
附带学习: SQL, ORM, ODM等等
数据库的选择也多种多样,主要分关系型和其他。这里强调一点,无论选择什么种类的数据库,备份!备份!备份!一定是第一考虑的事情,丢数据的惨痛经历简直就是墨菲定律,没遇到的人不太多吧。
GraphQL是一种查询语言API标准
Facebook厂推出的这一数据获取协议,其实出来有些年头了,但是由于各种原因和阻力,仍然是一个趋势,看起来很美好。不多说。
内容管理系统主要是给非开发人员使用的系统,方便更新站点的内容啥的。
这里主要分成传统的面向人类的和新增的一块面向机器或者说api的,静态站点生成工具结合无界面内容管理系统提供了展示界面的无限可能。
理解如何创建和管理环境并发布至网络
这里的内容其实最多了,涉及发布和开发运维合作的方方面面,也是前端开发者所亟需加强的能力领域。每一个话题都不小,根据自己的情况决定学习的先后顺序吧。
五分之四分割线
对上面内容的掌握之后,你基本上算一个全栈开发者了,你现在能创造一些强大的、数据驱动的web应用了。
这就是一个全栈开发者了,技术含量啥的先不说,需要掌握的技能可不少。下面继续看看,成为一个全栈开发者之后,还可以做些什么。
web开发者继续将手伸向移动app,无影手展开,可选的技术栈还真多。
前端开发终于不再满足与web应用,将魔掌伸向原生app。不多赘述。
PWA是一个常规的web应用,但是感觉上像原生应用一样,体验更好。
说实话,除了向终端伸出魔掌之外,在web应用的一亩三分地里还是有一些其他的学习园地的,例如这里的PWA,虽然看起来离线运作是个噱头,不过大家可以学习下Service Worker的使用,自有其特定的使用场景。自己琢磨哈。
使用Electron,我们可以基于JavaScript语言来创建跨平台桌面应用。
web应用还有另一块地,桌面应用,目前的头部玩家基本锁定了是Electron了。
"Javascript, APIs & Markup" 一种纯前端的技术栈,使用JS和API以及一些标记语言构建应用,是一种现代的web开发架构。
当然具体问题还是要具体分析,这些开发架构都依赖与具体的项目。了解一下也好。
不需要真正拥有自己的服务器的架构
开发过小程序的同学可能对云函数这一点有着更深的理解哈。这里的技术要点基本就是全栈开发的反向,web更向前端转化,服务器管理的任务依托第三方服务商来提供,比较适合中小型的项目。
随着物联网的流行,api优先的设计方式开始越来越多。
这也是一个大的趋势,api优先。然后移动、pc、电视、pad等等,各有不同。
机器学习和AI在不同领域都有着广泛的应用,并可以和web应用/服务结合。
我表示,没有更深见解。
语音识别是2020之后的一个主要趋势。
语音识别还是需要有着特定的使用场景供前端来发挥的。国内大厂的api对于中文的识别还是很棒的。百度、腾讯智聆等等。
浏览器中运行的字节码程序
JavaScript是老板,指挥Web Assembly干啥干啥。通过这种结合,给了我们一种在web浏览器端运行大型视频编辑工具、游戏等等一种可能。
不要被上面一大推东西,术语啥的给吓趴,自己多做些研究和了解,看看结合你自身的需求,你到底要做什么,来选择学习对应的技术,选择不同的学习路线。你学的东西越多,后面的东西就越没啥难度。
基本就是这些,对于国内的web开发者们,各种小程序的开发也是一个重大的话题,微信、支付宝等等巨头毕竟是国内开发者绕不开的大山哈。
end 2019-12-08 17:18
今天下午是第二遍看这个视频了,顺便翻译一遍分享一下,如果有不同的看法,欢迎去原作者那里去怼。