zoukankan      html  css  js  c++  java
  • 浏览器复杂吗

    首先可以明确的是,浏览器是少有的大型软件系统,其复杂性可以媲美我们每天使用的Windows系统。

    微软甚至放弃自家的IE和edge内核,转而使用chrome内核,chrome优秀是一方面,更重要是开发浏览器内核太复杂,太烧钱。当然微软已经不是当年的微软了!

    现在微软也在全力拥抱开源,甚至在win10里面支持内置wsl的Linux内核。如果说某一天我们使用的Windows系统,基于Linux内核开发,大家也不要太惊讶。

    随着微软加入chrome阵营,chrome实力大增,会加速甩开其他浏览器!说不定某一天苹果也宣布使用chrome内核!

    从浏览器的基本功能来看,其核心模块有:

    网络请求

    我们知道,目前web系统,都是BS模式的,也就是系统相关的页面,发布在服务器端的。

    浏览器想要运行,第一件事情就是向服务器请求页面代码。

    这就是网络请求,浏览器的最基本功能之一。

    页面解析

    请求到页面之后,需要对页面进行解析,先认识页面,然后才能进行下一步工作。

    页面渲染

    解析了页面之后,就可以对页面进行渲染了。渲染完成之后,我们就看到了web系统的界面了。

    这些功能,似乎看起来没有那么复杂!那浏览器的几千万行代码,到底在实现了哪些复杂的功能呢?

    模块代码量统计

    稍后补充。。。

    此外,现代浏览器还具备以下特点:

    跨平台

    这意味着你不能简单调用操作系统的api来实现功能,必须考虑跨平台问题,还有可能要从头实现某些重要功能。

    高性能

    Google专门为Google chrome打造了高性能的V8引擎,来解释执行JS代码。如今结合nodeJS,V8引擎甚至已经在后端发力。

    高标准

    也就是各种web标准要支持到位,要做到上图一样,360度无死角,才能成为优秀的浏览器。

    • HTML

    HTML用来描述网站页面的界面骨架,由一颗树形结构的HTML文档构成,也称为DOM树。

    在HTML中,记录了构成页面的各种控件及其位置,参数等等基本结构。页面加载的时候,是最先下载HTML并解析的。

    HTML最新版本是HTML5,其中加入了大量新特性,浏览器必须支持这些最新的HTML特性,才能算是一个合格的浏览器。

    • CSS

    CSS则是负责页面的美化装修。什么前景色,背景色,圆角边框,边框颜色,边框大小等等。基本上你能想到的界面调整参数,CSS里面都应有尽有!这也正是浏览器的一个复杂模块。目前最新版本是CSS3。

    • JavaScript

    界面骨架有了,也可以做的非常漂亮,尽善尽美了。那页面的逻辑怎么办?

    没错,JavaScript就是负责前端页面的逻辑部分的。从最早期的前端输入校验,发展到如今的近乎万能,JavaScript经历了漫长的发展。

    其中也经历了各种标准和版本,目前的主流版本是ES6。

    浏览器为了支持最新的JavaScript,也需要开发巨量代码。

    • WebGL

    WebGL是最近几年才火爆起来的一个特性,他将web的渲染性能大幅提升。

    因为通过WebGL,我们可以直接调用显卡进行渲染和计算。

    这使得在web端实现大型的三维引擎成为可能。比如Three.js,Cesium等等。

    为了支持webgl,浏览器又必须进行大量开发工作。

    • Web Assembly

    前面说到了JavaScript,使用JavaScript我们已经可以在web端实现大型三维引擎了。

    尽管如此,还是不能满足我们目前对于web端的更为复杂的应用的效率要求。还是有很多人认为JavaScript的速度慢。

    于是人们又起草了Web Assembly的标准。这是一种类似汇编语言的web标准,号称web端的汇编语言。

    其目的在于解决JavaScript执行效率低的问题。同时可以使用C++等高级语言,开发Web Assembly模块。

    如今已经有很多Web Assembly结合JavaScript的应用案例了。如Google在其Google earth的web版本中就大量使用该技术。

    这也会导致浏览器花费大量代码来支持Web Assembly的各种功能。

    总结

    非常感谢您能够耐心的看到这里。不知道您有没有发现,我们在Windows里面做的很多事情,在浏览器里面,居然也能做了!这说明浏览器已经慢慢发展到和操作系统差不多的功能了,您说他能不复杂吗!

  • 相关阅读:
    开始学习编写用于 Windows SideShow 设备的小工具【转】
    Windows Mobile 6.5 Developer Tool Kit 下载
    Microsoft Security Essentials 微软免费杀毒软件下载
    SQL Server 2008 空间数据存储摘抄(SRID 点 MultiPoint LineString MultiLineString 多边形 MultiPolygon GeometryCollection)
    Vista Sidebar Gadget (侧边栏小工具)开发教程 (2)
    Vista Sidebar Gadget (侧边栏小工具)开发教程 (4)
    负载测试、压力测试和性能测试的异同
    Windows Server 2008 Vista Sidebar Gadget (侧边栏小工具) 入门开发实例
    Silverlight Tools 安装失败 解决办法
    SQL Server 2008 空间数据库 空间索引概念及创建(取自帮助)
  • 原文地址:https://www.cnblogs.com/IT-Evan/p/14365585.html
Copyright © 2011-2022 走看看