从头创建一个新的浏览器,这合理吗?

谷歌浏览器创建网页快捷方式,轻松实现一键访问 通过谷歌浏览器创建网页快捷方式,我们可以轻松实现一键访问常用网页,提高工作效率。本文详细介绍了创建快捷方式的步骤和方法,并提供了管理快捷方式和注意事项的建议。希望这些内容能够帮助你更好地利用网页快捷方式功能,让你的网页浏览更加便捷和高效。在日常工作中,不妨尝试为那些你经常访问的网页创建快捷方式,相信你会感受到这种便捷方式带来的巨大提升。同时,也欢迎你分享自己的使用心得和技巧,让更多的人受益于这项实用的功能。 阅读详情

从头构建一个新浏览器?这如果是不是个天大的“伪需求”,便是一场开发者的噩梦!
要知道,如果没有上百亿的资金和数百名研发工程师的投入,从头开始构建一个新的浏览器引擎,几乎是不可能的。然而SerenityOS系统的作者Andreas Kling却带领着一支仅有数十人且几乎没有资金支持的开源项目小队仅花两个月便完成了这项任务——从0到1构建了一款跨平台Web浏览器Ladybird(瓢虫)。截至目前,瓢虫已实现了在Linux、macOS、Windows(WSL)和Android等系统上运行。本文就带领大家一探此事的究竟。

一、“轮子之王”两个月实现小目标

起初,Andreas希望将瓢虫作为 SerenityOS 系统的“LibWeb”浏览器引擎,随后Andreas Kling为其构建了一个简单的GUI。随着瓢虫项目的不断完善,在启动仅两个月后,它已经成为一个跨平台的Web浏览器。

在此之前,Andreas Kling曾有过Qt和WebKit项目的开发经验,而除了Qt,整个Ladybird浏览器的组件(包括LibWeb和LibJS等渲染组件)几乎全是Andreas Kling一手打造的,这也使其在圈内拥有了“轮子之王”的绰号。
在这里插入图片描述
在完成这项难以置信的壮举后,Andreas Kling收到了不少来自圈内朋友的赞誉和提问,而其中重复度最高的一个问题便是:“你的团队为何能在构建瓢虫浏览器方面取得如此快速的进展,这从表明看起来是完全不可能的。”

二、也许不能复制的五个秘诀

近期,Andreas Kling也正式通过一篇博客回应了这个问题,并将这次成功归结为了五个方面。

1.更强的网页规范

在启动Ladybird项目前,我们已经在HTML4和CSS2.1的模糊时代走了很长一段路。今天的ECMAScript、HTML和CSS规范(在大多数情况下)都拥有一流的技术文档,与过去相比,它们的算法可以用更少的工作和测试来实现。

瓢虫在体系结构层面会尽可能地匹配在各种网络规范中所描述的体系结构。这使得新加入项目的开发人员更容易适应,因为他们在参与开发前只需要学习一种架构而不是几种。

然而尽管如此,这与理想情况仍然存在差距,一些较为独特且不常见的特性给研发工作带来了一定困难。但值得庆幸的是,W3C有一个活跃的编辑社区致力于改善这些问题。我们在Ladybird上所做的大量工作包括使我们的代码库都能够适应这些规范编辑器所进行的更新。

我们也在努力改进规范:瓢虫的开发人员经常会报告规范错误,有时甚至还会提交pr来直接改进规范。但归根结底,在一个全新的浏览器引擎中实现一个规范,可以很好地验证该规范的完整性及可靠性。
在这里插入图片描述

2.专注于垂直领域

虽然今天的网页规范确实比以往任何时候都好,但许多特性仍然跨越多个规范,通常在子系统之间有细微的交互,实现者必须理解这些交互。如果开发人员试图一次只构建一个规范的浏览器,甚至一次只构建一个特性,那么其很可能会失去动力并因繁杂的工作而失去兴趣。

因此,我们倾向于专注于构建功能的“垂直切片”。这意味着需要设定实际的、交叉的目标,比如“让我们加载twitter.com/awesomekling”,“让我们登录discord.com”,以及其他类似的目标。在垂直切片上工作有助于保持开发者的动力,随着网站的进步,每一位参与者都能看到实际的变化,这会给大家带来极大的动力。

这种方法在一定程度上是可行的,因为web本身是围绕优雅降级设计的,这意味着浏览器可以呈现web内容,同时只支持站点使用的一些功能。你可能认为这种方法会产生一个“兼容网站”的小集合和一大堆无法运作的代码,但实际情况是水涨船高的,当我们专注于改进一个网站时,成千上万的其他网站也会得到改进。

3.后置性能优化

我们目前并没有花太多精力优化瓢虫的性能。相反,我们的主要关注点是解决与正确性和兼容性相关的问题。这种方法能帮助我们在深入优化之前专注于确保浏览器按预期工作。当然这并不是说我们不关心浏览器性能。我们希望瓢虫浏览器最终能够实现快速响应。

这是一个遵循一定规律的选择,不要花太多时间优化一个还不能正常工作的产品。例如,虽然我们几乎可以确定将会优化JavaScript执行或渲染速度的区域,但我们会有意识地选择优先修复渲染错误或与流行网站的兼容性问题。

但有时我们也确实会为慢得难以忍受的事情破例。毕竟对于一个开源项目而言,我们不想让开发者的贡献过程变得不愉快。在遇到这种情况时,我们会花一定时间解决最重要的性能瓶颈,以保持相对良好的开发体验。但在这个阶段,我们并没有跟踪基准分数之类的东西。不过,一旦我们在正确性和兼容性方面取得了坚实的基础,那么下一步要做的便是优化性能。

4.强大的团队文化

在Ladybird开发团队一起工作的时间里,我们形成了强大的团队文化。这里的文化是高度乐观的,每个人都抱有“我能行”的态度。虽然由于采取开源协作的工作模式,Ladybird团队分布在世界各地,但我们都会在Discord上见面聊天,互相激励。团队中的开发人员也经常合作,参与彼此的项目。每个在Ladybird团队中工作的人都被鼓励在项目中探索自己的个人兴趣而不是被指定任务。团队中的大多数人在加入我们之前都从未接触过浏览器代码,但在加入项目后,他们会迅速成为世界级的浏览器开发人员,这也使得每一个项目的参与者能够收获足够的获得感。此外,由于瓢虫是SerenityOS项目的一个分支,它具有与SerenityOS同样的责任感和自力更生的文化。我们在开发瓢虫浏览器时几乎避免了所有的第三方依赖,由开发人员自己构建一切。这样做的一部分原因是由于从0开始是一件很有趣的事情,此外也正因如此,这种开发模式为我们的软件创建了全面的责任制,每个人都会尽力对自己所写的代码负责,在出现问题时也能更快的进行响应,而无需等待第三方的反馈。5.拥有一位经验丰富的领导在比较复杂的项目中,一位经验丰富的领导可以发挥重要作用。我曾有机会在产品浏览器领域工作多年(在苹果和诺基亚),这让我对浏览器的构建以及各组件的组成方面有着比较深刻的理解。当没有这方面经验的开发者看到需要组合一个浏览器的大量技术和规范时,可能会感到不知所措,但我能够清楚地知道如何将它们合理的组合在一起并使其工作。在瓢虫浏览器的开发过程中,参与其中的开发者不需要过多考虑自己的想法或所写的代码是否可行,而是可以直接在与团队进行简单沟通后便开始工作,这会为整个项目省了大量时间,参与者也不会因为过多的意见分歧而产生不良情绪。在更实际的情况下,我真正负责的工作通常是在各组件的链接与交互之间-浏览器的部分没有严格指定(例如布局和渲染)。对于缺乏经验的浏览器开发人员来说,他们可以更专注自己所擅长的领域而不必过多担心其他问题。

三、关于再造浏览器:杠精之间的讨论

既然有了Chrome、Firefox浏览器,为什么还要再造一个呢?这当然不是个好主意。在这里插入图片描述
一位Reddit用户对于之所以会出现“再造浏览器”的情况,是因为历史上所有的浏览器都构建了自己的“怪癖”库,或者超出了标准范围的功能,或者干脆不符合标准。他还举例说:IE、Chromium、Safari一直都是“越界”来满足用户的需求,并期待自己的实现版本能成为标准。这位用户还吐槽:Safari是唯一一个给我带来真正麻烦的浏览器。
简言之,用户所期望的域浏览器的标准本身就存在差距。即便再造一个,也可能只会是制造适用于某些站点的浏览器。因为有的网站只支持Chrome。很多用户在遇到类似的情况下只能选择它,而放弃Firefox。
在这里插入图片描述
有网友进一步分析,这个浏览器跟Chrome相比,是不需要完美的像素渲染的。并指出“如果排名前100的网站能在其上正常运行,那这个项目才是成功的”。
有网友反驳道:这个浏览器是为开发人员自己准备的,不应吹毛求疵。

四、写在最后

虽然时至今日,Ladybird浏览器中的部分功能依然存在一些错误,甚至一些功能还需要很长时间才能真正投入日常使用。但目前这只小瓢虫已经震动双翅飞向了天空。Ladybird 的出现,增加了浏览器和浏览器引擎的多样性,不少开发者也表示了对项目的赞许:“这是一项令人难以置信的艰巨任务,虽然一个小型的非商业项目不太可提供一个可行的替代浏览器平台。但这只小瓢虫成功击碎了‘不可能’的标签。”对此,Andreas Kling也表示:我们依然在努力让Ladybird变得更好、更快,我们会持续关注关注Ladybird各类功能的正确性和功能支持,并对整体新能进行优化。在博客末尾,Andreas Kling提到:尽管我不确定我们的工作方式可以直接转移到其他软件项目上(除非它们也是浏览器)并给其他团队带来帮助,但是通过一个由聪明、专注的个人组成的小团队和一个知识渊博的领导者来指导他们,你可以尝试构建任何你想要的软件。你当然可以做到,即使没有数十亿美元和数百名员工,没必要听取那些从未开发过浏览器的失败主义者的纸上谈兵。

探索全新浏览体验:独立网页浏览器Ladybird来袭 在现代网络的世界中,“浏览器”已经成为我们日常生活中不可或缺的一部分。然而,选择一款真正独立且创新的浏览器似乎并不是那么简单。今天,我们将为您介绍一款旨在为用户提供完整、实用浏览体验的开源项目——Ladybird,一个建立在Web标准基础之上的创新浏览器引擎。 阅读详情

相关推荐

独立自主的网络浏览器——Ladybird

Ladybird是一款独立自主的网络浏览器,采用全新引擎和多进程架构,旨在提供安全、流畅的浏览体验。其核心进程包括主用户界面、WebContent渲染、ImageDecoder和RequestServer,确保系统资源管理和安全性。Ladybird支持跨平台运行,如Linux、macOS和Windows,并继承SerenityOS的核心库,如LibWeb、LibJS和LibCrypto。开发者可通过官方文档和Discord服务器参与项目。Ladybird注重用户界面交互、安全与隐私,未来有望成为现代浏览器的

weixin_44626085的博客 1406

【亲测免费】 探索未来浏览体验:SerenityOS中的Ladybird浏览器

在一个数字化世界中,创新的Web浏览器总是能引起我们的关注。**Ladybird** 是这样一个项目,它不仅仅是一个浏览器,而是一次对网页浏览体验的重新定义。现在,这个引人注目的项目已被合并到**SerenityOS** 的单仓库(monorepo)之中,为用户提供了一个全新的探索互联网的方式。 在[SerenityOS](https://github.com/SerenityOS/sereni...

gitblog_00069的博客 1796

Bootstrap 创建一个网页

Bootstrap 是一个开源的前端框架,由 Twitter 公司于 2011 年发布。Bootstrap 提供了一套丰富的 CSS、HTML 和 JavaScript 组件,可以帮助开发者快速搭建网页。Bootstrap 支持多种浏览器,包括 Chrome、Firefox、Safari、Edge 等。Bootstrap 是一个功能强大的前端框架,可以帮助开发者快速搭建响应式、移动优先的网页。通过本文的介绍,相信你已经掌握了使用 Bootstrap 创建网页的基本方法。

froginwe11的博客 391

探索未来浏览新境界:Ladybird开源浏览器项目简介

探索未来浏览新境界:Ladybird开源浏览器项目简介 【免费下载链接】ladybird Ladybird 是独立的浏览器项目,处于预 alpha 阶段。能浏览网页,采用多进程架构,图像解码、网络连接更稳健。 项目地址: https://gitcode.com/G...

gitblog_00006的博客 1371

理解并合理使用JavaScript无限制弹窗技术

本文还有配套的精品资源,点击获取 简介:无限制弹出窗口技术是通过JavaScript实现的一种功能,允许开发者创建无限数量的弹窗。这种技术若被滥用,可能会导致用户体验差和安全风险。尽管如此,现代浏览器有防止滥用的策略。本文解释了如何使用 window.open() 函数来创建弹窗,介绍了浏览器的限制措施以及开发者如何遵循最佳实践来避免滥用,并强调了合理使用弹窗...

weixin_29496633的博客 2418

VB浏览器创建实战教程

在Visual Basic中,开发者可以使用标准控件和自定义控件。标准控件是Visual Basic自带的控件,如按钮、文本框、列表框等,这些控件易于使用,功能明确,并且因为广泛使用而被大多数用户所熟悉。相比之下,自定义控件是由开发者根据特定需求编写或获取的。它们可以提供额外的功能或更加灵活的用户界面。自定义控件可以增加应用程序的独特性,但同时也需要更多的开发和测试工作。此外,因为自定义控件可能不是所有用户都熟悉,这可能增加用户的使用障碍。

weixin_35748962的博客 707

如何才能打造一个更好用的浏览器?

反正我是常年开着十几个页面,不会关的那种,也不是乱开,是真的都有用,如果关掉再次找起来不仅麻烦,有很多还会关闭自动清 Token,所以会把 Tab 栏积压的只剩一个小图标,一个网站找半天;最右侧就是当前浏览器已经打开的网站,竖向显示,可以容纳超多页面而不会被积压,而且不同工作窗打开的网站都可以显示在这,只需要点击会自动激活工作窗跳到对应的页面,就问你神不神奇;

qq_37195906的博客 1141

Ladybird浏览器

Truly independent web browser

如何用 Extension.js 快速创建你的第一个浏览器扩展:完整实战教程

浏览器扩展开发一直是前端开发者必备的重要技能,但传统的开发流程配置复杂、调试困难。今天我要向你介绍一个革命性的工具——Extension.js,它能让你在几分钟内创建出功能完整的浏览器扩展。这个零配置、跨浏览器的扩展开发工具彻底改变了扩展开发体验,让每个前端开发者都能轻松上手。 ## 🚀 为什么选择 Extension.js? Extension.js 是一个即插即用的浏览器扩展开发框架,它

gitblog_00010的博客 471

快手did did_gt edid的注册过程

接口 https://gdfp.ksapisrv.com/rest/infra/gdfp/report/kuaishou/android did 是本地生成的16进制 或者 获取的 android_id did_gt 是did生成时间戳 1595073601970 public static final Random f16237a = new Random(System.currentTimeMillis()); public static long m19668a() {  &n

HURUWO的技术博客 1万+

Kettle实战:如何用JavaScript脚本实现数据库表批量操作(附完整代码)

本文详细介绍了如何利用Kettle的JavaScript脚本实现数据库表批量操作,包括表名采集、循环遍历和动态SQL生成等关键步骤。通过实战案例和完整代码示例,帮助ETL工程师高效处理数据密集型任务,提升数据库操作的自动化水平。

weixin_29019241的博客 233

用Vue创建一个新的项目

vue的安装 Vue.js不支持IE8及以下版本。因为Vue.js使用了ECMAScript5特性,IE8显然不能模拟。Vue.js支持所有兼容ECMAScript5的浏览器。 在用Vue.js构建大型应用时,推荐使用npm安装,npm能很好的和webpack等打包工具配合使用。如果使用npm过程中安装速度过慢,可以考虑使用淘宝镜像的cnpm来代替npm。下文中仅使用npm来安装。 ...

weixin_33807284的博客 311

【随机过程】 3 - 随机过程的频域分析1 - 功率谱

随机过程的频域分析 文章目录随机过程的频域分析1. 什么是谱2. 确定信号的频谱2.1 周期信号的频谱2.2 非周期信号的频谱3. 随机信号的谱3.1 随机信号做傅里叶分析的困难3.2 功率谱密度的物理和数学表示形式3.2.1 功率谱密度的物理表示3.2.2 功率谱密度的数学表示3.3 功率谱密度的解读3.3.1 量纲分析3.3.2 谱3.3.3 密度3.3.4 wiener和khinchin3.4 功率谱密度的性质3.4.1 非线性3.4.2 偶函数3.5 wiener-khinchin关系的应用3.6

qq_41741344的博客 3133

谷歌浏览器的标签页组功能使用技巧

如果你想要将更多的标签页添加到同一个组中,可以右击这些标签页,然后选择“添加到现有组”,并从下拉列表中选择你想要加入的组。通过合理运用谷歌浏览器的多标签页管理功能,特别是标签页组功能,可以极大地提升你的工作效率和浏览体验。右击你想要加入新组的标签页,然后从弹出的菜单中选择“向新群组中添加标签页(Add tab to new group)”。启用标签分组:在实验性功能页面中,找到“Tab Groups”选项,并将其右侧的状态从“Default”或“Disabled”更改为“Enabled”。

2403_86768603的博客 2816

带有验证码的爆破(包含Burp suite工具爆破)

关于含有验证码爆破的一些总结!

weixin_43960066的博客 8699

auboi5 + d435i 使用easy handeye进行标定时,遇到相关问题记录。

解决办法:在easy_handeye默认的 calibrate.launch 文件中move group 的默认值为 "manipulator",但针对每个人的机械臂,这个值需要更改。以aubo_i5为例,需要将其改为"manipulator_i5",或者自己编写launch文件时,传入参数move group的值,便能顺利解决问题!easy_handeye_calibration_server 进程出现崩溃。

weixin_61025092的博客 958

如何创建一个无限循环

无限循环是指没有明确结束条件的循环。在JavaScript中,可以通过设置一个永远不会满足的条件来创建无限循环。这种循环会持续执行直到遇到break语句或程序崩溃。

一个做过前端开发的产品经理,经历过睿智产品的折磨导致脱发之后,励志要翻身"农奴"把歌唱,一边打入敌人内部一边持续提升自己,为我们广大开发同胞谋福祉,坚决抵制睿智产品折磨我们码农兄弟! 1360

【跳频通信】基于MATLAB的跳频通信系统仿真

同时,跳频通信也具有良好的抗干扰能力,即使有部分频点被干扰,仍能在其他未被干扰的频点上进行正常的通信。由于跳频通信系统是瞬时窄带系统,它易于与其他的窄带通信系统兼容,也就是说,跳频电台可以与常规的窄带电台互通,有利于设备的更新。跳频是最常用的扩频方式之一,其工作原理是指收发双方传输信号的载波频率按照预定规律进行离散变化的通信方式,也就是说,通信中使用的载波频率受伪随机变化码的控制而随机跳变。从通信技术的实现方式来说,“跳频”是一种用码序列进行多频频移键控的通信方式,也是一种码控载频跳变的通信系统。

FPGA/MATLAB学习教程/源码/项目合作开发 6267

【CSS】浏览器合成层的生成方式及其优缺点

可以拥有渲染层的元素渲染层(RenderLayer)浏览器会为其创建新的渲染层的元素 渲染层(RenderLayer) 这是浏览器渲染期间构建的第一个层模型,处于相同坐标空间(z轴空间)的渲染对象,都将归并到同一个渲染层中,因此根据层叠上下文,不同坐标空间的的渲染对象将形成多个渲染层,以体现它们的层叠关系。所以,对于满足形成层叠上下文条件的渲染对象,浏览器会自动为其创建新的渲染层。 浏览器会为其创建新的渲染层的元素 能够导致浏览器为其创建新的渲染层的,包括以下几类常见的情况: 根元素 document

weixin_44100002的博客 1730

YOLOv8融合可变形注意力(DAT)实战教程:暴力涨点的科研级注意力机制优化方案

DAT的“可变形注意力”为目标检测的“精准特征捕捉”提供了全新思路,而YOLOv8的工程化优势让这种科研创新能快速落地到工业场景。希望这篇教程能帮你在“注意力机制优化+复杂场景检测”的痛点上找到突破口。如果你在实操中遇到“涨点不明显”的问题,不妨回到“DAT的采样点是否贴合目标形状”“注意力权重是否有效过滤背景”这些细节上找原因——科研的价值,就在于在细节打磨中推动技术进步。祝你在DAT与YOLOv8的结合探索中,既能做出有说服力的实验成果,又能沉淀出解决异形目标检测难题的实用经验。

know_F0727的博客 88

MATLAB点云处理(八):为点云添加高斯噪声

本文对如何借助MATLAB,为点云添加高斯噪声做出了说明,并给出实现代码。

孙悟空 2844

谷歌浏览器的多标签页功能详解

Workona Tab Manager是一款功能强大的标签页管理扩展,可以将多个标签页分组,以便更好地组织和管理标签页。:如果你想创建一个全新的浏览器窗口,可以使用快捷键 Ctrl+Shift+N (Windows) 或 Cmd+Shift+N (Mac),或者从菜单中选择“打开新的窗口”。通过合理使用这些功能和技巧,我们可以更好地管理标签页,减少混乱,提高工作效率。:右键单击标签页可以打开标签页的右键菜单,其中提供了一些常用的标签页管理选项,例如新建标签页、关闭标签页、重新加载标签页等。

2403_86768603的博客 1545

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

合理利用缓存,创建高性能网站

1、缓存的分类 客户端缓存分为强缓存和协商缓存,它们之间最重要的区别是强缓存不会发起网络请求,而协商缓存会发起网络请求 强缓存:如果强缓存命中,则浏览器从自身的缓存中获取资源,不会发起请求到服务端。从网络请求中可以看到size列为memory cache或者disk cache。 强缓存可以通过HTTP头部的Expires和Cache-Control字段来控制。 Expires是浏览器返回的...

qq_31403519的博客 194

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

指纹浏览器怎么用?创建环境、配置代理与首次登录教程

指纹浏览器怎么用?从创建独立环境、配置代理,到检查 IP、时区和语言,再到首次登录与后续恢复,梳理第一次使用指纹浏览器需要完成的基本步骤和常见错误。

Web4Browser的博客 560

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

浏览器:一个浏览器是如何工作的?(阶段五)

在这一节课程中,我们讲解了浏览器中的位图操作部分,这包括了渲染、合成和绘制三个部分。渲染过程把元素变成位图,合成把一部分位图变成合成层,最终的绘制过程把合成层显示到屏幕上。当绘制完成时,就完成了浏览器的最终任务,把一个 URL 最后变成了一个可以看的网页图像。当然了,我们对每一个部分的讲解,都省略了大量的细节,比如我们今天讲到的绘制,就有意地无视了滚动区域。

qq_37756660的博客 816
上一篇: 马斯克掷重金收购英
下一篇: 机器学习正以惊人的速度破解宇宙奥秘
老贾的AI世界
博客等级 码龄7年 3335粉丝 254原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老贾的AI世界

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值