转载保留署名:有蚊子
优点:
1.广泛,无论对于用户还是开发者,可以说是最广泛使用的编程语言
2.生态完美,多个端、多类库、多种框架,众多优秀团队支持,迄今没有任何一种语言能做到,真正的众星拱月
3.能处理任何形式数据,特别是对于json的处理
4.易用,对初学相当友好,你只需要装一个浏览器,就能进行开发
5.特别适合于,我不想因为想做一件简单的事情,而引入一堆的模板代码,如:类型处理,异常处理,各种继承
缺点:
1.内置函数太少,内置语言特性也不多(即使是ES6时代,也是这样)
2.数值处理能力实在是弱,文件/IO操作依赖浏览器,本身提供的对象也极少(你会发现,node端对file operate是进行了较大扩充)
3.实际业务中,处理数据总是要自己写算法,例如:对集合数据的交、并、补集
4.做业务开发时,不借助库,使用纯JS(ES6)开发,是痴心妄想,除非你有富余的开发周期
5.整体太过于松散,容易出现runtime(运行时)错误
6.莫想着用它来做多媒体解码,你能找到的库,很少
编程,我会去了解实现方式,原理思想等,但是这些都是为了解决问题服务的。我讨厌面试官恨不得别人能背ES规范,能写出100种数组去重,能默写webpack配置规则,我算你左看Vue源码,右改React,懂得东西超过99%前端,何如?我觉得,技术是为解决问题服务的,就像以前JS数组去重,要写一堆算法,经典的有不下5种实现方式,ES6出来后,我用一个Set一行代码就完成,你要给我复杂的去重,我就搬出lodash来破解,会多几种去重对解决问题的提高相当有限!钻研技术不是目的,解决问题才是啊!我情愿学一个知识点,解决3个问题,也不要学3个知识点解决1个问题,剩下的时间,去见识更多人,去解决更多硬核问题,去陪家人,哪个不好?非得懂得复现Vue双向绑定就是合格,能从原理层面说出几种深拷贝的对比细节就是优秀,能手写webpack 配置就是加分?工具库看看文档,谁不会用!深拷贝我一句JSON.stringify()行天下,有问题再说啊,反正90%情况下遇不到!双向绑定了解原理会用来解决问题就行了,非得复现吗,要ES7 8出了个语言特性,把Object.defineProperty()给替了呢。有空做什么,当然是看多几个设计模式,看多几个经典算法,好好思考怎么落地,怎么用来解决实际问题!
说白了,就是出发点不同:
1.出发点是钻研技术,那技术知识储备当然是多多益善。世界这么多程序员,每个人一种思想化作技术,谁知道下一步谁的思想是主流,你学不完的。
2.出发点是解决问题,那技术就是工具,够用就好。我们就要保持学习,即关注有什么技术能做什么而不去深究它,到了用时,再回去获取能解决问题的点,所以我会说意识重于知识。
我再说前端
前端的过去
前端的过去,从原始阶段直接加载静态页面到基于异步请求的动态网页出现,前端开始丰富起来。bootstrap是鼻祖,虽然不能说框架的东西100%原创,但是绝对可以说是集大成者的先驱,它给布局与自适应,UI控件封装,样式命名等,贡献了宝贵的、规范的、先行的经验,我也是从bootstrap学习前端开始,现在的UI框架,都是一定找得到bootstrap的身影,例如超级经典的栅格布局。再说另一个重要鼻祖,jQuery。jq的出现,一是它极大简化了操作Dom的方式,二是通过一众相当实用的函数,有效的弥补了js内置函数的匮乏,同时发展出一种封装技术,简化js封装,渐渐地,我们可以发现jq库已经成行成市,如http://www.jq22.com/。我个人是不喜欢jq22的,因为它的资源有一部分是在网上收集的开源,竟然拿来卖钱??
前端的现在
R V A 三足鼎立,外加各种自研 类R V ,如Taro、小程序JS等,还有端拓展如Electron,RN,甚至是语言的拓展如TypeScript,我就不多说了,正式由于前端的日益强大,消解了大部分以往在服务端的业务处理代码,同时解放了生产力,如算力,促进了服务端转向微服务的架构
前端的未来
1.serverless与云开发
2.统一多端开发,如flutter
JS用得越久越觉得,它给你业务编程的支持实在有限
本文不再更新
2019年12月25日,于鹅城