前端开发一枚,入职前自学的感觉不难,为什么工作起来很吃力?_前端刚上班感觉工作做不了-程序员宅基地

技术标签: css  vue  前端  js  vue.js  html  

前言

我是软件工程专业,学前端之前,学过 C/C++、Java、PHP、.net 成绩还不错基本都是90多分。感觉自己干后端也不吃力。实验室里面的项目都是前后都写。最爱 PHP,本以为以后就走上PHP后端工程师的道路了。

由于项目需要的原因,后来渐渐开始学起 HTML、CSS、JavaScript 这些语法相关的东西。刚接触时没有感觉太大难度。

当时就想着怎么把页面搞好看,搞各种动画炫技。写一个小球从下面弹出来的效果,换各种姿势弹出。当时觉得前端真的有意思,就入了前端的坑。入坑前,以为前端就是搞各种漂亮的页面,各种特性惊艳别人。

随着接触的越来越深。接触到了 AJAX, jQuery ,Bootstrap,前端开始注重体验。各种框架横空出世 backbone => Angular => React => Vue 眼花缭乱。

写本文的目的是希望对哪些刚接触前端,准备往这个方向发展的同学提供一点可以借鉴对的经验。

一、打好基础不用说

HTML、CSS、JavaScript 三大件,完全掌握。不懂得就直接查 MDN。HTML重点掌握语义化。区分块级和内联标签。其他查文档就好了。还有就是定义 head 里面一些meta了解下。

CSS重点看盒子模型,定位,层级,过渡,动画和 transform。知道原理和规则。大部分工作都是照着设计稿化。掌握上面几个99%还原也不难。接下来重点学习几种常见的布局。完了之后去搞flex。最后搞下sass、less。基本就差不多了。

JavaScript,重点来了,《基础阶段,我们学习JavaScript需要注意》看一遍掌握基础(见下图),每个知识点搞懂。ES6基本没啥问题。下面几个问题需整明白,优先级如下:

  1. this 用法,相关原理
  2. 原型/原型链
  3. 闭包
  4. 面向对象相关
  5. 同步异步/回调/promise/async、await
  6. 模块化 CommonJS, AMD

先搞懂这些比较难的概念,对你JS理解更加深入。

在这里插入图片描述

【完整js资料下载地址(点击此处)】

二、框架方面

前期要会用,后期要懂原理。

新人先搞 Vue。Vue 算是比较简单的框架了,上手容易。照着官方文档来问题不大。原理方面要提高自己认识。学习怎么看源码。github常去逛逛。

学习框架之前,我其实特别建议,新人先去了解 Babel 和 webpack 不仅仅是使用。一些原理方面的东西工作中也会用到。babel 里面会有教你如何编译代码。webpack教你如和打包文件。自己手写编译器和打包工具也不是特别难。反正对之后看vue、react源码帮助挺大。

搞完 Vue 全家桶,去了解下 React,React hooks 学习下新的理念。再回过头来看Vue。你会发现他们是如此的相似却又不同。

多去实践总结,对整体框架理解会越来越深刻。

三、如何看源码

新人刚开始看源码,会陷入两个困境中。一是无从下手。二是看了之后感觉没啥收获。

这个也很正常。一般我们熟知的框架都有个几千甚至上万个PR。太大细节会干扰你。掌握整个节奏和流程。学习原理也比较吃力。就连找个入口都像大海捞针一样。建议从下面几个方面入手:

  1. 挑简单的上手。别一开始就搞 vue、react、webpack。太难,会直接劝退新人。不要为了面试而去读。反而效果不好,面试稍微问深入一点就答不出来了。平时有兴趣多琢磨琢磨。按照难易程度,函数库 < 组件库 < 框架 < 工程化 分别典型代表 lodash < vant < vue < webpack
  2. 手撸简易模型。像vue, webpack, babel 都有简易项目给你撸。有的创始人(尤哥)还直播手撸。国外的更多,youtube 一搜一大堆。就算不看源码,照着写出了简易 demo 对原理和理解提升都是很大的。
  3. 调试开源项目。先把项目拉下来。在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各种脚本自动化命令、代码生成技术了解下。

五、学习移动端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/小程序页面呢?

因为公众号/小程序的代码都存储在云端,通过不同的路由就可以给几乎无数的开发者使用。
使得微信成为一个运行环境+入口的存在。

总结

1.前端发展的速度远比任何语言和职位要快
2.前端的定位远不止网页开发这么简单,未来移动端更多的js方案,全新影像式交互,浏览器ios中的app应用等等,想象空间还是很大的。
3.前端很有趣,而且很有成就感,前端开发/移动端开发是非常有趣体验。
4.前端天生具备开源的特性,这使得学习和进步变得更容易,那么多优秀的代码和文档就在那里…

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_56134381/article/details/115552086

智能推荐

qt子窗口跟随主窗口进行移动(放大和缩小也实现)_监听父窗口size变化 qt-程序员宅基地

文章浏览阅读7.6k次,点赞10次,收藏46次。子窗口跟随主窗口进行移动,需要获取子窗口相对于父窗口的位置。然后在mousemove 的时候,始终获取相对位置,然后移动子窗口即可。代码:.hprotected: void resizeEvent(QResizeEvent *e); void mousePressEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event);.cpp_监听父窗口size变化 qt

Android ScrollView嵌套ListView嵌套GridView的上下拉以及加载更多_androidtv scrollview+gridview实现上拉加载-程序员宅基地

文章浏览阅读771次。ScrollView 效果ScrollView 说明一个ScrollView 嵌套ListView 嵌套GridView的上拉加载更多,下拉刷新的demo。主要是重写了GridView和LsitView中的onMeasure 方法。写的比较简单,希望对初学者有帮助。[java] view plaincopy_androidtv scrollview+gridview实现上拉加载

Atom - 介绍和使用方法(好用的文本编辑器,代码提示高亮、Markdown)_atom编辑器-程序员宅基地

文章浏览阅读1.7k次,点赞2次,收藏6次。一,Atom介绍Atom&nbsp;是&nbsp;Github&nbsp;开源的文本编辑器,这个编辑器完全是使用Web技术构建的(基于Node-Webkit)。启动速度快,提供很多常用功能的插件和主题,可以说Atom已经足以胜任“半个IDE”了。个人感觉有如下几个优点:(1)多平台支持(Windows、..._atom编辑器

个人笔记之rabbitTemplate及amqpTemplate发布模式-程序员宅基地

文章浏览阅读3.5w次,点赞15次,收藏90次。rabbitTemplate及amqpTemplate发布模式不足之处欢迎留言1、rabbitTemplate和amqpTemplate有什么关系?源码中会发现rabbitTemplate实现自amqpTemplate接口,使用起来并无区别,需引入spring-boot-starter-amqp依赖。2、组成生产者 消息队列 消费者 交换机: 隔离生产者和消息队列,充当二者..._amqptemplate

golang 学习(二十五)go mod以及自定义包package的用法和init()方法_go mod init-程序员宅基地

文章浏览阅读1.8w次,点赞11次,收藏44次。go mod以及自定义包package的用法和init()方法包的介绍和定义包(packge)是多个 Go 源码的集合,是一种高级的代码复用方案,Go 语言为我们提供了 很多内置包,如:fmt、strconv、strings、sort、eros、time、encoding/json、os、io 等。Golang 中的包可以分为三种:1、系统内置包 2、自定义包 3、第三方包 系统内置包: Golang语言给我们提供的内置包,引入后可以直接使用,如 fmt、srconv、strings、sort、e_go mod init

c++使用vector创建二维0矩阵(初始化)_c++ 二维vector初始化为0-程序员宅基地

文章浏览阅读7.1k次,点赞7次,收藏43次。c++使用vector创建二维0矩阵(初始化)一、前言c++真的是又爱又恨的一门语言,本人是一名python程序员但是因工作需求不得不投入到c++的大军中,逐渐偏离人生苦短我用python的初衷,唠叨完毕开始正题。最近在做一个去eigen库的工作,需要使用vector替换,于是总结了一些使用vector实现矩阵的一些操作的代码,有需要的可以借鉴一下(亲测可用哦)。本篇仅仅写的是vector的初始化的方法,文章后面会逐渐附上其他矩阵操作的链接。二、话不多说上才艺开始我刚使用vector的时候_c++ 二维vector初始化为0

随便推点

一篇文章带你搞定 MATLAB 求解方程和方程组_matlab中u(n+1,:)-程序员宅基地

文章浏览阅读1.8w次,点赞15次,收藏85次。文章目录一、solve() 语句符号求解1. 解单变量方程2. 解数值方程3. 解超越方程4. 解方程组二、fsolve() 数值求解:非线性方程三、fzero():解方程组的根四、roots() 语句的用法:求解多项式的根五、求解线性方程组一、solve() 语句符号求解1. 解单变量方程2. 解数值方程>> syms x;>> eqn= x^3-2*x^2 == x-1;>> s = solve(eqn,x)3. 解超越方程并不能得到全部_matlab中u(n+1,:)

自定义ClassLoader动态加载Class_classloader.class-程序员宅基地

文章浏览阅读5.1k次。1、自定义ClassLoader代码如下:package zmx.classloader.test;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;_classloader.class

Linux neo4j安装教程、相关报错_traceback (most recent call last): file "f:\work\1-程序员宅基地

文章浏览阅读1.2k次。完整报错:Traceback (most recent call last):File “/home/Ai/env/lib/python3.5/site-packages/urllib3/connection.py”, line 141, in _new_conn(self.host, self.port), self.timeout, **extra_kw)File “/home/Ai/env/lib/python3.5/site-packages/urllib3/util/connection._traceback (most recent call last): file "f:\work\11月第五周\neo4j\main.py",

Vivado HLS 三:基本概念(lut、latch、ff、RAM、ROM、FIFO等)_vivado ff-程序员宅基地

文章浏览阅读1w次,点赞14次,收藏87次。Vivado HLS 三:基本概念参考:https://blog.csdn.net/wordwarwordwar/article/details/79998130http://www.elecfans.com/d/663922.html目录:1、FPGA中LUT、LATCH、FF的概念2、LUT、LATCH、FF的相互关系3、verilog语句与LUT、LATCH、FF的对应关系1、FPGA中LUT、LATCH、FF的概念LUT(look up table):查找表 .._vivado ff

2022年全球市场箱式穿梭车总体规模、主要生产商、主要地区、产品和应用细分研究报告_穿梭车数量预测分析-程序员宅基地

文章浏览阅读926次。本文研究全球市场、主要地区和主要国家箱式穿梭车的销量、销售收入等,同时也重点分析全球范围内主要厂商(品牌)竞争态势,箱式穿梭车销量、价格、收入和市场份额等。_穿梭车数量预测分析

Java实现二维数组遍历_java遍历二维数组连接线-程序员宅基地

文章浏览阅读1.1w次,点赞14次,收藏41次。1 使用普通for循环的方式int[][] chessArr1=new int[11][11]; chessArr1[1][2]=1; chessArr1[2][4]=2; for(int i=0;i<chessArr1.length;i++){ //先遍历行 for(int j=0;j..._java遍历二维数组连接线

推荐文章

热门文章

相关标签