mozilla源码目录结构说明

该文内容主要来源于mozilla的相关文档,可以参考 https://developer.mozilla.org/en-US/docs/Mozilla_Source_Code_Directory_Structure


mozilla的许多项目都共享同一个源码目录,比如火狐浏览器,雷鸟等。这个源码树也包含了构建必须的工具和平台相关的东西。


accessible

该目录主要是实现一些功能,使人们更容易使用该产品,包括那些身体有残疾的人。



addon-sdk

作用和其名字一样,开发火狐等产品插件的开发工具。


b2g

Boot2Gecko项目的源码,构建firefox OS时使用。顺带说一句,firefox OS是基于linux内核和开发的web技术(HTML CSS 等)的操作系统。


browser

火狐浏览器的前端代码(用XUL javascript,XBL,C++开发)

build
构建过程中需要的一些比较杂的东西


CAPS

网页内容的安全性,包含了一组C++接口和代码,基于配置的安全设置,决定当前网页内容的安全性


chrome
包含chrome的注册


config

构建过程中需要的配置文件。


content
用于展现网页结构的数据结构(HTML,SVG,XML的文档,元素,文本节点等)。DOM模型接口和相关的一些操作比如链接处理,表单控制和提交等的实现也在该文件夹下

这个目录也包含了XUL XBL XTF 《canvas》 XSLT的实现和事件处理的代码

db
数据库访问模块


db/sqlite3

SQLite数据库


docshell
docshell的实现。docshell用于管理和文档窗口相关的事情。每帧都有其自己的docshell,其中包含了好多方法,比如夹在URI,管理URI内容的监听者等。当使用embedding API想将Gecko嵌入到自己的应用当中时,这是最外面的一层代码。


dom

1. DOM定义的接口的IDL定义,也包括了mozilla的一些对接口的扩展

2. 连接了javascript和DOM的实现

3.实现了部分“DOM Level 0”的核心对象

editor
一个编辑器的实现,主要用于产品中需要输入的地方,支持很多格式和特性


embedding

暂无

extensions

mozilla的一些扩展程序,可以在编译的时候通过设置选项来打开和关闭

extensions/auth

HTTP和其他一些协议的协商认证选项

extensions/content-packs

Content- and locale-pack switching user interface.

extensions/cookie

Permissions backend for cookies, images, etc., as well as the user interface to these permissions and other cookie features.

extensions/cview

查看当前注册的组件和接口

extensions/datetime

时间协议

extensions/finger

手势协议

extensions/gnomevfs

Interface to gnome-vfs to allow using all protocols supported by gnome-vfs inside of mozilla.

extensions/help

帮助模块

extensions/irc

网上聊天

extensions/java

javaconnect模块,用于实现java和组件之间的相互访问

extensions/layout-debug

布局调试模块

extensions/lightning
extensions/mono
extensions/p3p

Implementation of W3C's Platform for Privacy Preferences standard.

extensions/pref

Preference-related extensions.

extensions/python

支持使用python写组件

extensions/reporter

生成错误报告

extension/schema-validation

用指定的方式验证XML文件

extension/spatialnavigation

空间导航,基于连接在屏幕上的位置导航

extensions/spellcheck

拼写检查

extensions/sql

支持访问SQL数据路

extensions/sroaming
extensions/transformiix

支持XSLT

extensions/tridentprofile

支持从MSIE中导入配置

extensions/typeaheadfind
gfx

从各个平台中提炼抽象出来的图形操作接口,比如绘图,输出文本和基本的图形等

hal

暂无。应该是硬件抽象层,隐藏底层的硬件

image

图形渲染库。用于解码mozilla支持的图像格式

intl

国际化支持,个人理解为支持多种语言,方便不同的用户选择

chardet

web的各种编码支持

ctl

支持复杂文本的布局,有的语言长的很奇怪,一个个字母奇形怪状,不好显示

locale

从操作系统的变量中获取本地使用的语言的代码

lwbrk

用于决定分行和分词的代码。什么时候应该新起一行,什么时候一个词结束

strres

用于支持本地化的字符串资源

uconv

文件各种编码之间的转换代码

unicharutil

unicode文本之间的各种转换算法,比如大小写转换

ipc

进程间通信的代码

js/src

JavaScript的解释引擎

js/jsd

JavaScript 的调试库

js/xpconnect

支持C++调用JavaScript代码

tools
layout

布局模块,将可以显示在屏幕上的所有的对象及其位置构成一个树,并提供了操作这颗树的方法

base

处理渲染树

generic

CSS的基本渲染对象的接口

forms

描述HTML表单控件的渲染对象

tables

CSS/HTML表格的渲染对象

mathml

处理MathML.

svg

处理 SVG.

xul

处理XUL

modules/libjar

zip解压库,jar文件就是zip压缩的

modules/libpref

操作配置文件的库

modules/zlib

zlib的源码

mozglue

胶水层,用来隔离其他模块易变的代码

netwerk

网络层,用来处理真实的网络数据传输。

nsprpub

可以移植的抽象运行环境,比如线程,文件IO 网络IO

other-licenses

一些许可证

parser

解析器,用来解析HTML XML CSS等格式的文档。

parser/expat

解析XML,拷贝的expat源码

parser/html

解析HTML

parser/xml

解析xml,集成expat到Gecko

parser/htmlparser

遗留的用于解析HTML的代码,目前只是用来解析 about:blank 其中的部分代码也用于xml解析中,用来将网络字节流转换为unicode

probes
profile

个人理解为一个框架,用来展示其他模块的运行细节,比如性能分析

python
rdf
处理rdf
security

安全模块,包含加密算法,ssl的实现

services
startupcache
storage

sqlit数据的封装,封装成了一个XPCOM

testing
toolkit

工具包,包含很多被雷鸟和火狐共享的前端组件。

tools

构建过程中可选的工具,主要是用于调试

uriloader
uriloader/base

内容分发模块,用于加载url,然后寻找一个合适的内容监听者来处理加载的数据。也管理web进程之间的通知

uriloader/exthandler

处理一些Mozilla不能处理的内容,主要是负责展示帮助对话框和一些帮助信息或链接

uriloader/prefetch

预加载代码,为了提高加载速度

view

视图管理模块,逐渐被废弃

webapprt

XXX this needs a description.

widget
xpcom

类似于微软的COM

xpfe

SeaMonkey的前端

xulrunner

xulrunner的代码


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
由于阿里网盘需要登录才能进行访问,因此需要使用模拟登录的方式进行抓取。以下是使用Python的requests库和BeautifulSoup库进行抓取的示例代码: ```python import requests from bs4 import BeautifulSoup # 模拟登录 session = requests.Session() login_url = "https://auth.aliyundrive.com/v2/oauth/login" data = { "account": "your_account", "password": "your_password", "appName": "aliyun_drive", "lang": "zh_CN", "fromSite": "aliyun_drive", "csrf_token": "token", } headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36", "Referer": "https://www.aliyundrive.com/drive/home", } response = session.post(login_url, data=data, headers=headers) # 获取目录层级结构 dir_url = "https://www.aliyundrive.com/drive/folder/list" params = { "driveId": "drive_id", "fileId": "file_id", "urlExpireSec": 3600, "pageSize": 100, "fields": "*", "orderBy": "name", "orderDirection": "ASC", } headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36", "Referer": "https://www.aliyundrive.com/drive/home", } response = session.get(dir_url, params=params, headers=headers) soup = BeautifulSoup(response.text, "html.parser") level_list = soup.select('.ant-breadcrumb-link') # 输出目录层级结构 for level in level_list: print(level.text.strip()) ``` 需要将代码中的`your_account`、`your_password`、`token`、`drive_id`和`file_id`替换为实际的值。其中,`your_account`和`your_password`是阿里云账号的用户名和密码,`token`是登录时获取的csrf_token,`drive_id`和`file_id`是需要获取目录层级结构的文件夹的ID。可以在阿里网盘中打开该文件夹,然后查看URL中的`driveId`和`fileId`参数来获取它们的值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值