web 浏览器内核初探

paddeydou 2010-11-19 11:02:24
Web浏览器一般使用公共 API来创建主机对象来负责将DOM对象反射进JavaScript。

问题1:DOM(BOM) 究竟存在于浏览器内核中还是JS 引擎中

问题2:DOM树的构建是由谁来构建完成的

问题3:JS引擎如何处理DOM的
...全文
154 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
打字员 2010-11-23
  • 打赏
  • 举报
回复
我同意这种学习的精神,但不赞同研究好了内核能更好的优化代码这种说法。

你把内核研究的再清楚有什么用,你能改吗?你只能改自己的代码。如果你觉得程序什么地方可能用document.getElementById 比 getElementsByTagName 更好,但是下面的代码中可能因为你这里的改动而变的没有原来高效了,怎么办,下面再改,最后改来改去,是优化了还是更差了,谁说的准呢

对于JS而言,只要知道这个DOM的API有什么作用,在程序中合理使用就行了。
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cj205 的回复:]
js的引擎是没有浏览器区别的,所以DOM的解析是又浏览器内核来完成的

最后一个问题我来打个比方
我们写在HTML里面的document等对象是浏览器对js封装好的对象。
这个就像是我们写类库的时候封装好一个类,里面的实现其实还是由普通的语法和语义。只是在外面看来我们直接调用类就可以完成了~
[/Quote]
原理是这样,但只是原理,正象我上面所说的,这是表层上的认识,如果真要研究内核,就不能停留在表面原理上了。在实际实现上,不仅涉及实现方法,而且由于实现方法其实是可以有很多种的,那么各浏览器内核和JS引擎在实现上都采用了怎样的优化途径呢?这些都是需要具体详细的真正可以被称为“技术文档”的资料的。

还是请大家贡献一下这方面好的权威资料网址吧。
Mr-Jee 2010-11-23
  • 打赏
  • 举报
回复
js的引擎是没有浏览器区别的,所以DOM的解析是又浏览器内核来完成的

最后一个问题我来打个比方
我们写在HTML里面的document等对象是浏览器对js封装好的对象。
这个就像是我们写类库的时候封装好一个类,里面的实现其实还是由普通的语法和语义。只是在外面看来我们直接调用类就可以完成了~
  • 打赏
  • 举报
回复
没人回复问题和做更深入的解释。
我没查资料,就用自己的“感觉”抛砖引玉吧。因为感觉前两个问题比较容易回答,相对来说也不能算是重点。在后面我想修改一下问题。

问题1:DOM(BOM) 究竟存在于浏览器内核中还是JS 引擎中

这个应该是由浏览器内核完成。JS引擎只负责我们平时使用的JS中比较核心的部分。浏览器再将JS引擎的功能与DOM,BOM结合起来。比如window对象及window.location等对象都是操作浏览器部件的,这些都不属于JS引擎本身的范畴。再比如UE里也扩展了脚本功能,使用了UE的对象(UOM?呵呵),JS引擎不可能为了众多和未知的应用而把它们都纳进自己的范畴。这就是谁是谁的子集的问题。

问题2:DOM树的构建是由谁来构建完成的

当然是浏览器内核。JS引擎还是只负责它JS代码处理那一块。

问题3:JS引擎如何处理DOM的
这个就是我关心和想知道的。

事实上我想这个问题可以问得更深入些,关于DOM,BOM,无论是模型图例还是文字说明,只停留在表面关系上,都没有给出真正技术性的内部数据结构组织的说明,这和汇编方面的资料完全相反。当然,作为使用来说,基本也不需要知道那些内幕细节。但从研究认知的角度看,这的确“很闹心”。更何况有时还可能真想做做这方面的开发,那就更感缺乏资料。

我想是还不熟悉这方面的资料来源吧。所以借这里大家讨论的机会,看哪位朋友能提供些这方面好的资料网址。比如说W3C组织有没有这些方面的公开而详尽的技术文档(如上面所说,不是表层的那种关系式说明,而是讲内部实现机制和各方面具体数据组织形式的)。
十一文 2010-11-23
  • 打赏
  • 举报
回复

Dom是内置在浏览器中的一种应用程序接口,不是javascript的一部分也可以被vbscript和javascript调用
TinyJimmy 2010-11-23
  • 打赏
  • 举报
回复
DOM应该是独立模块,浏览器中可用,js引擎也同样可用,其他插件也可使用。至于如何捆绑打包,我想不太重要。
  • 打赏
  • 举报
回复
这个研究方向很好,把根弄清楚,再多的枝叶都明白了。一直想对这方面学习一下,但还没看到好的资料。
一起等看回答吧。
hch126163 2010-11-19
  • 打赏
  • 举报
回复
很高深的问题!还没关注过这个东东!
我自己的要求:能写js就OK!
Linux内核一直是学习的难点:将近3000万行代码,5万多个源文件,代码庞大繁杂、代码很难看懂。《Linux内核编程》将突破以往传统的学习方式,采取更有效和科学的学习方法,多角度地对内核进行多层次分析,不局限于形式,不拘泥细节,目的只有一个:更轻松、更高效地去理解内核、学习内核。为了更好地让学员掌握内核编程技能,更好地理解内核,本课程将采用并不局限于以下学习方法进行课程的录制:降维分析,化简为繁,将复杂的系统简单化用软件工程的方法分析内核:软件分层、模块化分解、框架迭代多角度立体分析Linux内核,目的只有一个:更好地理解内核利用Linux内核中的面向对象编程思想去分析复杂的子系统、子系统交互利用多任务编程的思想去分析Linux内核本套课程预计分为20个左右的小模块,每个模块一个专题,每个专题会陆续发布。拟录制的模块包括但不限于:模块机制、内核裁剪与配置、内核编译与启动、系统调用、中断、文件系统、调度、内存管理、内核同步、设备模型、字符驱动、块驱动、定时器、input、platform设备驱动、device tree、proc、sysfs、I/O...  本课程是《Linux内核编程》的入门篇,主要给大家介绍一下Linux内核开发、Linux驱动开发的就业行情、行业生态、需要掌握哪些技能、Linux内核的学习方法、如何搭建Linux内核的学习开发环境。 

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧