我眼中javascript的这些年
写了两年多的js了吧,一开始的目标并没有很学术,我只想安安静静做个很厉害的开发者。但是总是沉溺在一种语言里,会让人误以为这种语言很厉害,就像只在村子里混的话,我觉得我自己可以逆天,村外有人,编程世界也需要出去走走,所以我想写一下学习js这段时间所看到的东西,作为出发前的反省
我是Javascript
javascript作为一种解释型语言,执行效率很低,虽然在google v8的推进下,性能提高了几十倍,但是依然是要比中低级语言的性能差很多,所以网页性能很难上去,浏览器呈现网页的能力还是有限的,webAssembly成为突破这种有限的可能。对了,说起我的身世,很重要的是二十多年前,一个伟大的程序员为了完成老板的任务用十天的时间制造了我,所以,你们会知道我其实本身会有很多自打出身就拥有的毛病,比如我是解释型和弱类型的,再比如我只是写在浏览器的脚本文件里的,所以大家起初使用我都是比较混乱的。还有typescript,nodejs,coffeescript,react,angular,vue什么的都是在说我。后来你会明白说web好像就是再说我一样
浏览器的不服输
回顾一下web和h5
以前的网页都是静态页面,php和jsp的后端开发们替前端们写页面和js脚本,这些都是因为js很菜,网页搞不了什么名堂。
世界在改变,浏览器执行代码和cpu执行代码都是执行代码,凭什么js要输,所以nodejs v8 h5出现了。
技术和经济的互相推动
h5规范一出现,canvas和vedio就淘汰了flash,网页三剑客什么的都变成了历史故事。
而v8的出现导致了前端渲染和单页应用,渲染不再是php和jsp做的事情了。
nodejs让js的开发变得工程化,同时也挺身成为了一个不错的后台语言。
当然这些事情都被营销者们看在眼里,他们注视着这些变化,去探究里边的每一个商机。
市场所赋予的名利
网页传播成本很低,网页的生产成本也很低,网页能做这么多事情,这便是一个伟大的商机
这个商机包括建站开发,h5开发,丰富的网页应用以及小程序应用
商业的发展和技术的发展总是互相驱动的,有人投资就有人搞事情,技术的发展制造的商机也会让投资者更加愿意投入资金进去,这是一个良性循环
所以这便迎来了h5最火爆的时期
短短的三四年时间里 js从一个无人问津,被当作玩具的语言跻身成为了一个很受欢迎,需求巨大的语言
js的获取的名利让更多的人介入其中,也让他得以蓬勃发展,比如nodejs,react,angular,天才华裔尤雨溪,rn,webpack,css3,h5,ecma2015-2018等等等等
哦对了,比较可怕的是webVR也出来了,想当年我们浏览网页只是为了百度百科,现在都可以玩vr游戏了,发展的很牛逼吧
执行效率的提升
不管什么执行效率,这些对于开发者以外的所有人来说都只是两个字,体验,
执行效率和网速,带宽和宽带,光纤,js还是jsp .net除了开发者以外,其他人一概不会思考,反应在浏览器上就是打开的快不快。
什么canvas flash vedio,响应式,组件化对于用户来说也只是炫不炫
什么UI UE UX 对用户都是舒不舒服
至此感谢http协议 ws协议 GPU以及英伟达 英特尔 AMD 光纤传输 广电总局为提高执行效率在背后作出的贡献
其实说白了就是js效率的提升,从另一个层面上来看是网速变快了和CPU 变强大了 GPU加速渲染了
入侵了APP和后端
这种名利和发展也让js得到了前所未有的经济驱动,js似乎不希望自己只是混迹在浏览器圈子里的人物了,nodejs和react分别作为js的代表在后端界和app界获得了崇高的地位。
这两个事情也让js赢得了新的名利,一切都可以用js完成,桌面端,app端,浏览器端,后端都有我的身影。
所以js工程师也变得更加受欢迎,因为想要开发一个应用程序,我只需要招js就好了。
全栈在js上变得似乎很实际
CPU可以做的浏览器应该都能做
说到这里,js似乎可以做很多事情了,很多人会觉得我为我是一个jser而自豪,我为我学到了世界上最划算的知识而感到庆幸
加入当时的js设计者可以让js的诟病少点,执行效率高一些的话,那么js或许要远远不止现在的火爆,获取很多年前就风靡了,而不需要等到网络大发展和硬件大发展之后。
其实js并不是那么强,比如LOL不能用js开发吧,有人说一切都有可能,现在的webVR不是js写的么
其实说js不能写LOL,不是说js的API不够,也不是说js写不了炫酷的效果,只是说js性能的问题会导致他总是开发一些性能要求并不高的东西
这也可以看出js出于本身语言特性的原因导致的瓶颈
我相信js可能写出在任何环境场合平台运行的hello world,但我不相信js可以写出比它性能高的语言写的性能更好的程序
开始提到了webAssembly,这玩意呢,可以让其他语言被浏览器执行,效率很高很高,这是一个是性能的突破口
还有一个突破口诸如typescript,dart之类的,当然也很难比c++快,对吧
不幸的消息是这些是浏览器端应用丰富的一个途径,但也是js地位在浏览器端被动摇的极大可能
javascript的可能
js的可能总是那么有趣,我不会怀疑它的乐趣,但会怀疑它的地位,或许终究会被取代,也可能获得了新的方式,也或者性能的大发展,让开发语言之间的。就像加入过有钱,服务器足够多的话,那么数据库的很多优化好像就没必要了
js仍然是一个不二选择,因为它很优秀
我眼中javascript的这些年的更多相关文章
- 【历史】JavaScript和Java没啥关系!————JavaScript简史
文章的开始先上张图: 图片拍摄自北京图书大厦,代表着现在国内应该是绝大部分书店的现状--Javascript书籍放在Java类当中.甚至很多业内人也一直认为Javascript是Java语言在浏览器内 ...
- 如何理解javaScript对象?
在我们生活中,常常会提到对象一词,如:你找到对象了吗?你的对象是谁呀?等等. 在我们家庭中,有男友的女青年都会说我有对象了,那么她的对象是XX(她的男友). 夫妻间呢?都会说我的爱人是谁谁谁,现在我们 ...
- Javascript定义类(class)的三种方法
将近20年前,Javascript诞生的时候,只是一种简单的网页脚本语言.如果你忘了填写用户名,它就跳出一个警告. 如今,它变得几乎无所不能,从前端到后端,有着各种匪夷所思的用途.程序员用它完成越来越 ...
- 谈谈我眼中的CSDN吧
昨天逛博客园看到了这篇曝光率很高的文章:博客搬家——从CSDN到博客园,一篇短短的文章竟然招致这么多人的讨论,可能程序员就喜欢“Java好还是PHP好”这类型的问题吧,好无聊.由于我一直在使用CSDN ...
- 转载:开发者眼中最好的 22 款 GUI 测试工具
对于很多同学来说gui程序的测试是一个难点,所以我从网上转载了一篇关于gui测试的一篇文章,里面罗列的很多工具,大家可以尝试一下学习学习. 英文原文:22 best GUI testing tools ...
- JavaScript DOM编程艺术学习笔记(一)
嗯,经过了一周的时间,今天终于将<JavaScript DOM编程艺术(第2版)>这本书看完了,感觉受益匪浅,我和作者及出版社等等都不认识,无意为他们做广告,不过本书确实值得一看,也值得推 ...
- 2016年度 JavaScript 展望(下)
[编者按]本文作者为资深 Web 开发者 TJ VanToll, TJ 专注于移动端 Web 应用及其性能,是<jQuery UI 实践> 一书的作者. 本文系 OneAPM 工程师编译呈 ...
- [转]Javascript定义类的三种方法
作者: 阮一峰 原文地址:http://www.ruanyifeng.com/blog/2012/07/three_ways_to_define_a_javascript_class.html 将近2 ...
- 全栈工程师眼中的HTTP
HTTP,是Web工程师每天打交道最多的一个基本协议.很多工作流程.性能优化都围绕HTTP协议来进行,但是我们对HTTP的理解是否全面呢?如果前端工程师和后台工程师坐在一起玩捉鬼游戏,他们对HTTP的 ...
随机推荐
- HTML_CSS使用
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- mysql UDF提权 sys_bineval
介绍: 执行shellcode – sys_bineval sqmapl自带udf.dll中存在函数’sys_bineval,执行shellcode – sys_bineval 利用: MSF生成sh ...
- Tomcat相关知识总结
有关Tomcat的杂货店 一.修改端口号,并以IP访问 1.确保80端口没有程序占用.例如nginx等. 2.vi /tomcat/conf/server.xml 3.找到<Connector ...
- 简单的GridView分业,后台不需要写
1前台代码: <asp:GridView ID="GridView1" runat="server" AllowPaging="True&quo ...
- 2019牛客暑期多校训练营(第八场)D-Distance 定期重构
题目传送门 题意: 在一个三维空间中,给出q次操作,每次操作可以在空间中加上一个固定点,或者询问一个点,对于一个询问操作,输出距离这个点最近的固定点的曼哈顿距离. 思路: 官方题解:先假设所有询问都在 ...
- webstorm安装与破解
1.下载webstorm和补丁文件 链接:https://pan.baidu.com/s/1aiHxPExAbDCcHxKtB82_vg 提取码:jo07 链接:https://pan.baidu.c ...
- [JZOJ3691] 【CF414E】Mashmokh's Designed tree
题目 题目大意 给你一棵树,接下来对这棵树进行三种操作: 1.询问两点之间的距离. 2.让某个点变为它原来的第\(h\)个祖先的最后一个儿子. 3.求\(dfs\)序中最后一个深度为\(k\)的点. ...
- day20 装饰器补充
Python之路,Day8 = Python基础8 装饰器from functools imoort wraps # 保留原函数所有信息,比如:用__doc__查看注释的时候,显示原来的注释def f ...
- SGI STL rope
rope实现的接口可以参考这里. rope是可伸缩的string实现: 它们被设计为用于把string看作一个整体的高效操作 . 比如赋值.串联和子串的操作所花的时间差不多不依赖字符串的长度.与C的字 ...
- MySQL 调优/优化的 101 个建议!
原文:http://www.monitis.com/blog/101-tips-to-mysql-tuning-and-optimization/ MySQL是一个强大的开源数据库.随着MySQL上的 ...