根据我的理解,每个Chrome应用/扩展程序/旧版本都由其manifest.json
中的属性定义,这些属性如下:
Chrome应用:
Chrome应用会在其mainfest.json
中包含以下内容:
"app":
{
"background":
{
"scripts": ["background.js"]
}
}
background.js
调用chrome代码 chrome.app.window.create
,这将打开一个新的独立应用程序。
Chrome扩展程序:
Chrome扩展程序的mainfest.json
:
"browser_action":
{
"default_popup": "index.html"
}
这将为Chrome添加扩展程序。扩展程序是Chrome浏览器的插件。
Chrome Legacy:
"app":
{
"launch":
{
"local_path": "index.html"
}
}
这就像在Chrome中的新标签页中打开的网络应用程序。
请你确认这是正确的。
答案 0 :(得分:2)
extension不必具有浏览器操作,也不必具有任何可见的UI。在清单中没有app
部分的任何内容都是扩展名。
它用于与普通浏览交互的任何类型的功能。请参阅available APIs。
legacy packaged app是一种现已弃用的应用类型,可在浏览器标签中打开,但使用本地组件并可访问Chrome API。
确实,通过在清单中使用app.launch.local_path
密钥来识别它们。
引用文档:
旧版打包应用已停止使用,Chrome将于2015年6月停止加载
此外,Chrome网上应用店no longer accepts legacy apps。
基本上,hosted app是一小段元数据,主要用作网站的便捷快捷方式。
通过使用app.launch.web_url
键来定义。正如您所推断的,它们与旧版打包应用程序同时出现。
如果您已经拥有一个网络应用但希望在Chrome网上应用店中存在一些内容,那么这是一种有用的应用类型。但是,用户经常对此类应用感到愤怒,因为他们“只是指向网站的链接”。
一个Chrome App(也是“打包应用”,以区别于托管应用,但不推荐使用此术语,因为它用于旧版应用)是一个独立的HTML5应用程序,可以打开与浏览器。这是“新的”应用范例。
通过使用app.background
键来定义。这定义了应用程序regulates the lifecycle的事件页面。
谷歌长期以来认为Chrome应用程序尽可能独立于浏览器,因此their API在很大程度上不允许与浏览器进行交互。然而,这一立场正在慢慢侵蚀 [citation needed] 。
Google有nice (if slightly outdated) flowchart来决定您的功能需要哪种类型的应用/扩展程序: