前端知识学了却不会用,都是没走心
我发现,许多人在学习前端的时候,更多的时候是处于一种“对外宣称正在学习中”的状态。而他本人真正的学习了多少前端知识?未必。
我之前就多次说过,“学习前端开发不是学习js脚本”。学习前端开发其实是一种用分析问题、理解需求、解决问题、响应变化的思维方式,是要动脑的。这种思维方式的不是一开始就能具备的,它无疑是一种技能,它是需要大量的练习的。
就像你面对一个姑娘,第一次的时候会很笨、很腼腆,很无措。但只要你练习足够,慢慢的你就老司机了。为什么成为老司机?因为万物都有规律,刚开始跟姑娘聊天,三句话把天聊死了;到后来你可以一次聊三天了。
为什么后来你可以一次聊三天?因为你说的每句话都有它的用处,每句话都是承接下一句话,每句话说出来都勾搭着姑娘往前走。。。
不多说了,回到js这里,这种“分析、理解、解决、响应”的前端开发思维方式,要成为每个前端从业者的本能,要达到面对任何一个问题,一个需求,都能下意识的使用这种思维方式去看待它。
那么,如何做到这一点呢?我认为至少需要下面四点,
(1)、面对一个需求时,要首先理解它的运行顺序。
从第一步到最后一步,每一步在做什么?需要什么?提供什么?。。。这些东西先在纸上画出来,如果自己画不出来。看在钱的份上,脸皮厚一点,请别人帮助画出来。
在日常生活中,也要有意识的去训练自己这方面的思维。例如在厨房里,你可以这样想,厨房能做饭也能炒菜,这是它的二个方法,
function 厨房(){
this.炒菜 = function(n){
console.log(n)
}
this.煮饭 = function(){
}
}
“我”,想要炒菜,那么就得这样,
var xx = new 厨房;
xx.炒菜('葱姜肉');
就这样,从日常的生活中,理解程序运行的规则;
(2)、一个需求之中的多个参与者之间的关系。
大到一个项目、一个应用,小到一个需求,都不是一个元素能够完成的。它里面一定有众多的“参与”者,那么它们之间的关系是什么?谁操作谁?谁是谁的前置条件?谁是谁的运行结果?。。。把它们在纸上画出来,这种能力也是要在工作、生活中不断训练自己的。
例如,厨房里,你要炒菜,参与元素有哪些:火、锅、油、菜、抽油烟机......不多写了
1,先打开火;
2,锅放火上;
3,油放锅里;
4,油烧热了,放菜;
5,酌情开抽油烟机。
它们这几个元素中,谁操作谁?谁是谁的前置条件?谁是谁的运行结果?
if( 火 == 燃烧 ){
火(function(){
锅(function(){
if(油温 >= 100){
放菜(...);
}
})
});
} else {
点火()
}
funct.. 锅( callback ){
callback();
}
//...
尝试着用js的思路去解释你生活中的事物,因为你在工作中遇到的所有需求,全都是来源于真实生活。而js的最明显的思路是什么?回调嘛,所以你看上面那段伪代码,全都是回调。
(3)、抓住需求、业务中的那条“线”。
警察破案讲究线索,出门要确定路线,我们写代码也一样,要抓住业务中的那条线。但这条线事实客观上并不存在,怎么办?
要找“点”,每一个功能,每一个需求,每一个条件,它们都是构成线索的点,这些点连在一起就成了线。沿着这条线走下去,从头走到尾,你就理清了一个需求的业务逻辑。
当然了,实际操作中,你还要注意多个业务之间相互的影响、关系,需要你对于前端的全局有一个整体的把握和理解,这叫“大局观”。
最后再说一下,你学会一个东西的真实表现是,面对一个问题的时候,脑子里的思路马上转换为前端开发的思维方式,而不会学了一堆js,然后面对需求手足无措。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Angular单元测试里pipe的mock设计
- 亿级数据判断 bitmap-布隆过滤器
- centOS8 安装MySQL8(亲测)
- 聊一聊微信小程序包内容
- 全面分析 MySQL并发控制
- Flink History Server
- 几种定时任务(Timer、TimerTask、ScheduledFuture)的退出—结合真实案例【JAVA并发】
- gitlab内存消耗大,频繁出现502错误的解决办法
- Java基于POI实现excel任意多级联动下拉列表——支持从数据库查询出多级数据后直接生成【附源码】
- Elasticsearch 通过Scroll遍历索引,构造pandas dataframe 【Python多进程实现】
- 【Java】 NullPointerException、ArrayIndexOutOfBoundsException、ClassCastException、ArrayIndexOutOfBoundsE
- Meow攻击删除不安全(开放的)的Elasticsearch(及MongoDB) 索引,建一堆以Meow结尾的奇奇怪怪的索引(如:m3egspncll-meow)
- MySQL LOAD DATA INFILE—从文件(csv、txt)批量导入数据
- MySQL 快速删除大量数据(千万级别)的几种实践方案——附源码
- 什么样的代码是好代码?