从Prototype.js
到风靡全球的jQuery.js
,都是在解决浏览器间DOM
操做的差别化问题,同时也提供了简洁友好的API
,可是随着标准的不断的推动,如今浏览器间的差别化能够说已经没有了,像Github
就宣布了弃用jQuery.js
,直接使用浏览器提供的DOM
操做更新界面。javascript
尽管浏览器提供的DOM
操做API
有时候看上去比较啰嗦,可是只要全部浏览器实现一致,前端就不需再使用一层封装来间接操做DOM
,只须要学习标准化的API
便可
从IE
的ActiveXObject
到XMLHttpRequest Level1
再到XMLHttpRequest Level2
,而后fetch
出现一统网络请求。css
在咱们日常的开发中,能够直接使用fetch
进行请求,无需再引入其它的网络请求库。不过目前fetch
提供的API
不够丰富,可能在使用时还要简单封装前端
从最先的对象模块命名空间,到amd
,cmd
等模块化工具require.js
,sea.js
等,再到es module
,目前chrome
中已经能够直接使用,而且动态的import
也已经支持,今后能够告别那些第三方的模块加载器,学习并使用标准的es module
便可java
好比以往咱们要实现平滑滚动,咱们要用setTimeout
或setInterval
先实现一下基础的动画引擎,而后再实现一下相应的tween
缓动算法,而后再应用到咱们的滚动上。如今浏览器已经支持经过css
给要滚动的节点添加scroll-behavior: smooth
,而后再操做相应的scrollTop
或scrollLeft
便可实现相应的平滑滚动,省去了原来大量的代码或引用第三方类库的事情react
再好比某个节点滚动到或即将滚动到可视区域作一些事情(像瀑布流等),以往像平滑滚动同样,咱们要监听滚动事件,咱们要计算节点的位置信息等一大堆事情要作,如今有IntersectionObserver
,咱们完成相似的功能只须要几行代码便可web
对于图片多的网站,前端常常使用的图片懒加载,如今也有了原生支持,给图片加上<img loading="lazy"/>
便可,不但省去了大量的javascript
,也提高了易用性算法
经过前面的一些基础点,咱们能够看到浏览器愈来愈多的把一些经常使用功能内置进去,能够预见将来也会更多的把经常使用功能内置进去。chrome
内置的功能不但方便开发人员,同时在内存管理上,性能上,资源使用上都要远远优于javascript
的实现浏览器
长远看,如今前端开发的模式:界面管理+数据管理=应用。界面管理也颇有可能被内置到浏览器里,简单理解就是把页面组件化的功能内置进去,好比内置一个react
。开发人员只须要管理好本身的业务数据便可。网络
目前这个内置的界面管理浏览器提供的是web components
,可是它在使用起来仍然不够方便,不过随着时间的发展,也许一年半载以后浏览器发力web compoents
,把它打造的更顺手易用也说不定。
从前面的一些例子咱们能够看到,浏览器也在不断的吸取好的开发思路和方式,同时开放更基础,更易用的API
给到开发人员,这是一个互相辅助的过程。
一但某些库或框架成为事实上的标准,那为何不推动它把它写进标准,而后让浏览器实现呢?好比jQuery.js
就是成功的案例,好比图片懒加载也是很好的说明,也许浏览器会很快内置lodash
呢?
若是浏览器没能发展好web components
,若是react
发展成熟稳定,浏览器或许就直接内置了,让咱们只关注业务便可。
若是你有想法,来留言讨论一下吧 ^_^