❤️ Author: 老九
☕️ 个人博客:老九的CSDN博客
🙏 个人名言:不可控之事 乐观面对
😍 系列专栏:
主流浏览器介绍
内核浏览器
- 内核浏览器,内核就相当于汽车的发动机,只是有的功率大,有的功率小,浏览器内核就是负责解析网页的语法,并渲染显示网页
- IE -> EDGE(微软)
- Chrome(谷歌)
- Firefox(火狐)
- Safari(苹果)
- Opera(挪威的一个公司)
- 现在主流的有两种内核,除火狐外,其他的浏览器现在用的都是blink内核,火狐浏览器用的是gecko内核
- 其他的还有Trident内核:IE,早期的360浏览器,百度,UC;Webkit内核:Safari,移动端浏览器(Android,ios)
内核的组成
浏览器的内核由两部分组成,以webkit为例:
WebCore:负责HTML解析,布局,渲染等等相关工作
JavaSCriptCore:解析,执行JavaScript代码
V8引擎
v8引擎属于javascript的解析内核,下面是v8引擎运行javascript的流程图
首先用javascript编写的代码是高级代码,它是不被CPU所识别的(最后都需要交给CPU来运行),所以需要进行一些处理,转成2进制代码, 首先从网络或者缓存中拿到JS代码,先对代码进行扫描Scanner,将字符序列进行词法分析,分词处理,转换成tokens序列,拿到了一大堆的tokens,之后进行语法分析parser或者PreParser,进行预语法分析和语法分析,生成一个个的node节点,将一个一个的node节点组合生成抽象语法树AST,然后通过Ignition解释器,转成字节码,就像Java里面的代码需要通过JVM转成字节码,才能编写一次代码,到处运行,实现跨平台,最后转成机器码给CPU来运行;V8引擎之所以快,还有一个TurboFan编译器,可以将字节码编译为CPU可以直接执行的机器码,如果一个函数被多次调用,并且执行的逻辑是一致的,那么就会标记为热点函数,就会经过TurboFan转换成优化的机器码,提高代码的执行性能,但是机器码实际上也会被还原为字节码,因为如果后续执行函数的过程中,类型发生了变化(比如sum函数原来执行的是number类型,后来执行变成了string类型),之前优化的机器码并不能正确的处理运算,就会逆向的转换成字节码,通过TypeScript就可以解决这个问题。
壳浏览器
- 现在已经过时了,主要就是360,好123,猎豹之类的浏览器,壳浏览器就是在外面买一个内核然后自己加一些功能的浏览器,类似于广告之类的,建议卸载。
移动端
- 壳浏览器:夸克浏览器
- 系统自带的浏览器:在安卓5.0以上的就是chrome同步
- 微信浏览器:安卓:blink修改版(x5),ios系统自带浏览器内核,ios系统的app是不能自带内核浏览器的。
软硬件的兼容性
- 浏览器就会存在兼容性的问题,硬件cpu也有兼容性的问题(笔记本的cpu插不到电脑上)。
URL
- URL是统一资源定位符,url就是一个地址,指向着唯一的一个资源
- www.baidu.com:这种是域名,最后都会解析成ip地址
- 基本格式:
URI
- URI是统一资源的标志符,而URL是定位符,URI用于标识WEB技术使用的逻辑或物理资源
- 因此URL作为一个网络的Web资源的地址,可以唯一将一个资源识别,URL是一个URI,URL是URI的子集
————————————————————————
♥♥♥码字不易,大家的支持就是我坚持下去的动力♥♥♥
版权声明:本文为CSDN博主「亚太地区百大最帅面孔第101名」的原创文章