6.1 应用与扩展的区别

优质
小牛编辑
128浏览
2023-12-01

Chrome将其平台上的程序分为扩展与应用,并且使用了同样的文件结构,那么两者的区别是什么呢?在早期的Chrome版本中两者的区别非常模糊,而且有些扩展也可以用应用实现,反之亦然。但今天看来,Google正在努力使两者的界限变得清晰。

总的来说,扩展与浏览器结合得更紧密些,更加强调扩展浏览器功能。而应用无法像扩展一样轻易获取用户在浏览器中浏览的内容并进行更改,实际上应用有更加严格的权限限制。所以应用更强调是一个独立的与Chrome浏览器关联不大的程序,此时你可以把Chrome看成是一个开发环境,而不是一个浏览器。

不过到目前为止,Google还没有强制规定只能用扩展做什么,只能用应用做什么,所以对于那些扩展和应用都可以实现的功能,到底用何种方式实现,那是你自己的选择。不过我建议大家遵照上述的原则选择实现方式。

除此之外,Chrome应用还分为Hosted App(托管应用)和Packaged App(打包应用),这两者也是有明显区别的。相对而言,Hosted App更像是一个高级的书签,这种应用只提供一个图标和Manifest文件,在Manifest中声明了此应用的启动页面URL,以及包含的其他页面URL和这些页面请求的高级权限。比如下面的例子创建了一个启动页面为http://mail.google.com/mail/,包含mail.google.com/mail/和www.google.com/mail/且请求unlimitedStoragenotifications权限的应用。

{
    "name": "Google Mail",
    "description": "Read your gmail",
    "version": "1",
    "app": {
        "urls": [
            "*://mail.google.com/mail/",
            "*://www.google.com/mail/"
        ],
        "launch": {
            "web_url": "http://mail.google.com/mail/"
        }
    },
    "icons": {
        "128": "icon_128.png"
    },
    "permissions": [
        "unlimitedStorage",
        "notifications"
    ]
}

Packaged App,顾名思义,就是将所有文件打包在一起的应用,这类应用通常可以在离线时使用,因为它运行所需的全部文件都在本地。

由于Hosted App结构和功能都相对简单,所以后面的内容都将重点讲解Packaged App。