V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
bleaker
V2EX  ›  奇思妙想

用 JavaScript 实现的 WebKit

  •  
  •   bleaker · 2015-01-02 22:06:51 +08:00 · 4361 次点击
    这是一个创建于 3619 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如果这玩意存在的话,浏览器兼容问题是不是从此可以走进历史...
    21 条回复    2015-01-22 17:00:08 +08:00
    ricorico
        1
    ricorico  
       2015-01-02 22:44:27 +08:00 via iPad
    我还以为是真的实现了喵…
    hjc4869
        2
    hjc4869  
       2015-01-02 22:54:57 +08:00
    javascript不是连linux都实现了吗。。
    另外浏览器兼容性在统一的标准出现并被大多数人遵守之前是不会有完美的解决方案的……
    anewg
        3
    anewg  
       2015-01-02 22:58:37 +08:00
    @hjc4869 实现linux。。。太高估js了。
    SoloCompany
        4
    SoloCompany  
       2015-01-02 23:01:03 +08:00
    网页启动前前先下载1g的源码
    nilennoct
        5
    nilennoct  
       2015-01-02 23:10:40 +08:00 via iPad
    这个“用 JavaScript 实现的 WebKit”放在哪里呢?浏览器自带还是用户手动下载?用V8、SpiderMonkey还是Nitro解析?不同版本的“用 JavaScript 实现的 WebKit”兼容性问题怎么解决?
    bleaker
        6
    bleaker  
    OP
       2015-01-02 23:11:56 +08:00
    hjc4869
        7
    hjc4869  
       2015-01-02 23:12:30 +08:00
    ianva
        8
    ianva  
       2015-01-02 23:19:25 +08:00
    lz 明显没有明白,语言,语言的引擎,w3c 标准的设计和制定,webkit,以及兼容性等等,这些概念是什么,有什么关系 http://www.infoq.com/cn/articles/webkit-for-developers
    iwege
        9
    iwege  
       2015-01-02 23:22:05 +08:00
    anewg
        10
    anewg  
       2015-01-02 23:34:19 +08:00
    @bleaker 这个包括其他任何基于js引擎开发的都一样的。js引擎能由js来实现,那才是真的实现。目前根本做不到,之后做到了,那语言也跟现在的js天壤之别了。
    sanddudu
        11
    sanddudu  
       2015-01-02 23:42:12 +08:00   ❤️ 1
    anewg
        12
    anewg  
       2015-01-02 23:44:13 +08:00
    @sanddudu

    Narcissus is a JavaScript interpreter written in pure JavaScript (i.e., a meta-circular evaluator), using the SpiderMonkey engine.

    SpiderMonkey is written in C/C++.
    testla
        13
    testla  
       2015-01-02 23:51:48 +08:00
    JS和C\C++是图灵等价的,这意味着它们的功能理论上是一样强大的。
    所以完全有可能实现JS编写的将JS转换成ASM的编译器。
    sanddudu
        14
    sanddudu  
       2015-01-02 23:57:37 +08:00
    @anewg 我发现题目没有讨论是否通过引擎执行,所以你歪楼了。
    实现横竖都是实现,不通过引擎是你的要求。
    同意 @testla 的观点
    anewg
        15
    anewg  
       2015-01-03 00:08:59 +08:00
    @sanddudu 所认为的实现确实是仁者见仁的事情。

    比如python的subprocess或php的exec,我也可以认为只需要这两个语句我就能实现绝大部分linux功能了。
    NewYear
        16
    NewYear  
       2015-01-03 00:14:27 +08:00   ❤️ 4
    你们都没意识到为什么会出现兼容性问题么,说白了就是每家浏览器/内核自己支持一些独特的特性,而其他家不支持,或者调用方法不同。导致代码不能通用,甚至只能舍弃那些独特性。

    那么为什么做浏览器内核的要有独特性呢,那是因为要让别人觉得他家的内核好啊!(PS:就是IE,FF,Chrome)

    那么答案其实很简单,就是世界上只能有一家做浏览器内核的,那么兼容性就可以丢去历史了。

    当然很快你们又会发现,就算全世界都只用webkit的时候,又会发生webkit版本不同的问题(PS:版本过久那么新的版本的特性就执行不起来了)…… (IE6/7/8/9/10/11/12全是IE,但是版本不同,又不能通用了)

    于是兼容性话题又回来了……

    于是又有新的办法了,所有用这个内核的浏览器,不允许超出多久不升级到新版……

    这个方法终于解决了所谓的兼容性问题了……

    但是开发者又觉得坑爹了……因为我的老项目,要不断的去修改,才能适应新的webkit版本啊!上次写的一个项目,已经第七十二次非自身缘故去修改了,只为了去适应新版的webkit!(PS:嗯,PHP就是这样,不向上兼容,也不向下兼容)

    那么解决此问题也不是没办法,那就最新版附带所有旧版的库,在网页里标记下使用对应版本的webkit来执行就好了。(PS:传说中的Windows就是这样,一个程序可以在98系统运行,也可以在Windows 8系统运行)

    好了,那么新的问题又出来了,这么臃肿的浏览器,比操作系统安装程序还要大,因为附带所有老版本的支持库,最终造成的结果就是,几张dvd光盘拼起来才能放得下这个浏览器的安装程序……

    那么新问题最终如何解决呢?

    那就是横空出世,出来另一款超级精简快速的内核吧!名字就叫WebKit Mini!(PS:回顾下历史,这不就是Firefox抢IE垄断份额的年代么)

    新的WebKit Mini出来后,各方面都很优异,但是……有些部分还是无法做到完美,毕竟没有附带那么多支持库……那么怎么办呢?研究一下怎样兼容吧……

    然后请你翻到本文第一段,再读下来,你会发现,这就是一个轮回,永远轮不到下面一段,因为轮到这里的时候,又会轮回到第一段。

    反正我是不知道未来会如何解决此问题,楼主你要是找到了方法,记得at我。
    fwee
        17
    fwee  
       2015-01-03 00:17:25 +08:00   ❤️ 1
    用js实现为何能解决兼容性?
    NewYear
        18
    NewYear  
       2015-01-03 00:18:06 +08:00
    兼容性问题是永恒的话题,看完16楼的全文,你会发现,这玩意永远都不可能得到解决。因为技术在进步,时代在发展。
    @ricorico
    @hjc4869
    @anewg
    @SoloCompany
    @nilennoct
    @ianva
    @iwege
    @sanddudu
    @testla
    hjc4869
        19
    hjc4869  
       2015-01-03 00:31:07 +08:00 via iPhone
    @NewYear IE兼容做的挺好,向下的兼容无人能比,IE11甚至专门为企业设计了IE8模式,特定网站开启。
    只是别的平台的浏览器,根本没一个这么认真的,一边创造自己的那一套,一边破坏标准,搅得一塌糊涂。
    另外php是世界上最好的语言。
    favtube
        20
    favtube  
       2015-01-06 13:42:12 +08:00
    NeoAtlantis
        21
    NeoAtlantis  
       2015-01-22 17:00:08 +08:00
    @bleaker 为啥我觉得你发的链接是用js造了一个虚拟机然后把Linux放进去运行……
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2934 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 03:29 · PVG 11:29 · LAX 19:29 · JFK 22:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.