做前端的你有没有觉得很吃力?(1)

  1. 手撸简易模型。像vue, webpack, babel 都有简易项目给你撸。有的创始人(尤哥)还直播手撸。国外的更多,youtube 一搜一大堆。就算不看源码,照着写出了简易 demo 对原理和理解提升都是很大的。

  2. 调试开源项目。先把项目拉下来。在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 端。移动端有哪些东西呢? 不需要全部懂,差不多知道就行了。要用的时候再去学。

  1. 绝对单位换相对单位:px => rem / vw / rpx

  2. 弹性布局:使用flex、grid布局

  3. hairline (1px的粗线处理):使用伪元素 + transform: scale(倍数) 缩放线框

  4. WebView 环境了解下

  5. 安卓iOS 兼容踩坑:点击延迟、穿透、滚动不流畅、安全区域等等。

  6. 小程序开发相关踩坑

  7. JSBridge: H5 与App 通信

  8. H5动画制作

  9. 跨平台框架:react native、weex、flutter 等等

简单的说移动web 就是:html/css/js 跑在手机app 里面的WebView(web运行环境)。小程序/公众号就是在这个基础上,将自己APP里面的WebView 租售给其他人使用。微信APP ----- 提供SDK ----> 微信webview ----- 提供运行环境-----> 公众号h5 / 小程序**为什么微信可以容纳几乎无限的H5/小程序页面呢?**因为公众号/小程序的代码都存储在云端,通过不同的路由就可以给几乎无数的开发者使用。使得微信成为一个运行环境+入口的存在。

七、做前端我有没有觉得吃力?


刚做时前端不吃力。因为我是软件工程专业,学前端之前,学过 C/C++、Java、PHP、.net 成绩还不错基本都是90多分。感觉自己干后端也不吃力。实验室里面的项目都是前后都写。最爱 PHP,当时最崇拜鸟哥。本以为以后就走上PHP后端工程师的道路了,成为鸟哥那样的大神。由于项目需要的原因,后来渐渐开始学起学 HTML、CSS、JavaScript 这些语法相关的东西。刚接触时没有感觉太大难度。当时就想着怎么把页面搞好看,搞各种动画炫技。写一个小球从下面弹出来的效果,换各种姿势弹出。当时觉得前端真的有意思,就入了前端的坑。入坑前,以为前端就是搞各种漂亮的页面,各种特性惊艳别人。随着接触的越来越深。接触到了 AJAX, jQuery ,Bootstrap,前端开始注重体验。各种框架横空出世 backbone => Angular => React => Vue 眼花缭乱。折腾了 JQuery 开始折腾 backbone 觉得前端还能这样玩。有些迷茫了,感觉脑袋快要炸了,那段时间特别焦虑,疯狂看书写代码,怎么这么多东西要学啊。JavaScript 也不精通,到原型就不理解了,虽然有C++,JAVA面向对象的知识,但JavaScript 你怎么和别人玩的不是一个套路啊。当时就都用ES6了, 行,学。都用Sass了,行,学。不学也可以,看不懂别人的代码呀。毕业前为准备校招前端工程师,真的很吃力。就怕校招面试时,自己啥都不懂。功夫不负有心人,校招时候顺利拿到了自己满意的Offer。记得当时和面试官对答入流,好像找到知音一样。面试官也是过来人,基本能问的都问了。拿到Offer之后就去了实习。实习第一个任务:将一个ES6的后台管理系统重构成 Vue2.0 全家桶的项目。有个导师带,但是她和我是不同项目,出了架构以外代码都是自己写。这个阶段还是收获了很多:

  1. git 命令特别熟练。commit、stash、merge/rebase、cherry-pick、push/pull/fetch、reset等等基本都敲都特别多了

  2. 严格了代码规范。Eslint、prettier 都用起来了

  3. 会自己写业务组件,会封装高级组件、写常规页面了。基本上大部分不是特别复杂的交互都ok。难一点多找下资料可以做出来。

  4. 学会管理API了。自己尝试封装了 axios。统一处理错误和弹窗。

  5. 会抽取公共css、JavaScript 函数,编写CSS 变量和JavaScript 常量了

  6. webpack 能看懂配置文件了。

实习过后顺利转正。转正之后,换了另外一个导师带,加入到项目组作为一个比较大的项目的核心开发。基本不再做管理系统了。主要做一个saas 平台。涉及比较难的富文本编辑,UI 拖拽生产文章,数据可视化生产报表等等。还写了几个谷歌浏览器插件。

  1. 开始提升写页面效率,写的比较快了。

  2. 研究 webpack 的插件打包编译效率

  3. 研究 babel 编译原理

  4. 研究了 Vue 编译的一些原理

  5. 研究了 一些图表的使用,多半使用的echart。常规图表基本都用过。

  6. CI & CD 自己去搭建。学了一些 shell 脚本开发。研究了 docker 相关的东西。

最后

如果你已经下定决心要转行做编程行业,在最开始的时候就要对自己的学习有一个基本的规划,还要对这个行业的技术需求有一个基本的了解。有一个已就业为目的的学习目标,然后为之努力,坚持到底。如果你有幸看到这篇文章,希望对你有所帮助,祝你转行成功。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

  • 9
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值