下面分享一些前端的学习方法或许对你有用!
一、打好基础不用说
HTML、CSS、JavaScript三大件,完全掌握。不懂得就直接查MDN。HTML重点掌握语义化。区分块级和内联标签。其他查文档就好了。还有就是定义head里面一些meta了解下。
CSS。重点看盒子模型,定位,层级,过渡,动画和transform。知道原理和规则。大部分工作都是照着设计稿化。掌握上面几个99%还原也不难。接下来重点学习几种常见的布局。完了之后去搞flex。最后搞下sass、less。基本就差不多了。
JavaScript。重点来了,红宝书看一遍掌握基础,进阶去看《你不知道的JavaScript》。就这两套足够了,别搞那么多。每个知识点搞懂。ES6基本没啥问题。下面几个问题优搞懂,优先级如下:
this用法,相关原理原型/原型链闭包面向对象相关同步异步/回调/promise/async、await模块化CommonJS,AMD
先搞这懂这些比较难的概念,对你JS理解更加深入。接下来在开始看框架方面
二、框架方面
前期要会用,后期要懂原理。
新人先搞Vue。Vue算是比较简单的框架了,上手容易。照着官方文档来问题不大。原理方面要提高自己认识。学习怎么看源码。github常去逛逛。
学习框架之前,我其实特别建议,新人先去了解Babel和webpack不仅仅是使用。一些原理方面的东西工作中也会用到。babel里面会有教你如何编译代码。webpack教你如和打包文件。自己手写编译器和打包工具也不是特别难。反正对之后看vue、react源码帮助挺大。
搞完Vue全家桶,去了解下React,Reacthooks学习下新的理念。再回过头来看Vue。你会发现他们是如此的相似去又不同。
多去实践总结,对整体框架理解会越来越深刻。
三、如何看源码
新人刚开始看源码,会陷入两个困境中。一是无从下手。二是看了之后感觉没啥收获。
这个也很正常。一般我们熟知的框架都有个几千甚至上万个PR。太大细节会干扰你。掌握整个节奏和流程。学习原理也比较吃力。就连找个入口都像大海捞针一样。建议从下面几个方面入手:
挑简单的上手。别一开始就搞vue、react、webpack。太难,会直接劝退新人。不要为了面试而去读。反而效果不好,面试稍微问深入一点就答不出来了。平时有兴趣多琢磨琢磨。按照难易程度,函数库组件库框架工程化分别典型代表lodashvantvuewebpack手撸简易模型。像vue,webpack,babel都有简易项目给你撸。有的创始人(尤哥)还直播手撸。国外的更多,youtube一搜一大堆。就算不看源码,照着写出了简易demo对原理和理解提升都是很大的。调试开源项目。先把项目拉下来。在vscode里面跑下,核心函数多打几个断点。看看里面变量是怎么diff的。对理解更深刻了。
看了源码是别人的,学到了是自己的。学习时候边记笔记,边思考原理,总结经验。下面来谈谈前端工程化怎么弄。
四、前端工程化
现在最流行的打包工具webpack用起来。当然直接用vue-cli2、vue-cli3、create-react都是可以的。但是webpack相关还是得掌握。
首先重点搞下babel、webpack。学习下编译,打包的原理。自己配置下webpack。尝试自己去写下下webpack的loader和plugin。学习这些之前要懂一点node.js,node.js不需要全部学习。一般就日常用到读写文件fs接口,path路径接口。这些api都不难写几个demo就懂了。基本上webpack里面配置文件也没用到多少node的东西。最后自己学会配置webpack的配置文件。
如果想深想去优化打包体积和速度,就需要去了解很多webpack插件。webpack里面最核心的就是插件了。
当然前端工程化不仅仅是这些,CI/CD可持续集成,Umi了解下。shell各种脚本自动化命令、代码生成技术了解下。
五、性能优化的方案
一般来说。性能优化没什么系统化的文档供人学习。完全靠一些经验和自己的实践。
我们常提到性能好坏是由什么来衡量呢?
访问页面地址--页面首次加载数据--渲染出完整页面的时长
非首次情况下,命中缓存的加载缓存数据--渲染出完整页面的时长。
一般我从下面几个方面着手去做,一般问题都不大。
减小资源(静态资源,后端加载的数据)大小
压缩代码HTML/CSS/JS压缩图片、音视频大小Tree-Sharking消除无用代码
以上webpack都可以搞定
避免同一时间的过多次数请求
CSS实现雪碧图:使用background-position共享一张图图片懒加载:监听滚动后offsetTop,使用src替换src(真实路径)列表懒加载(分批加载):监听滚动后offsetTop,发送请求加载下一页的数据路由懒加载代码分包分块加载(webpack)预加载技术小程序分包、预下载等。
利用缓存(空间换时间)
CDN内容分发:获取更近网络节点缓存下来的静态资源浏览器缓存(自带)部分资源保存在LocalStorage或者APP缓存中(手动操作)
其他
SSR服务端渲染:解决SPA框架带来JS动态渲染页面带来的延迟和白屏问题。
这些都可以去实践的,难度不大。难度大的地方可能是dom节点成千上万的时候渲染的性能问题。这个场景遇到的很少,方案很多。不同人有不同解决方案,有功夫可以自己去尝试尝试。
上面提到很多点都可以深入到很深。由于篇幅原因,点到即止。
纯粹是把一些我以前走过的弯路掰直了再分享给大家。毕竟不是《前端入门到精通》哈哈哈
六、学习移动端web开发
前端现在为什么这么火?各个公司都还挺缺优秀的前端。原因在于技术红利。
移动端web流行起来之后,特别是H5和小程序,带动了多少前端就业,前端迅速取代了安卓和iOS的大量岗位。
回到正题:所以作为前端人,移动web一般是都要接触的。不同于PC端。
移动端有哪些东西呢?不需要全部懂,差不多知道就行了。要用的时候再去学。
绝对单位换相对单位:px=rem/vw/rpx弹性布局:使用flex、grid布局hairline(1px的粗线处理):使用伪元素+transform:scale(倍数)缩放线框WebView环境了解下安卓iOS兼容踩坑:点击延迟、穿透、滚动不流畅、安全区域等等。小程序开发相关踩坑JSBridge:H5与App通信H5动画制作跨平台框架:reactnative、weex、flutter等等
简单的说移动web就是:html/css/js跑在手机app里面的WebView(web运行环境)。
小程序/