如何开发一个 Chrome App

发表于 · 归类于 代码 · 阅读完需 7 分钟 · 报告错误

2008 年,Google 开发一款全新的基于 WebKit 内核的网络浏览器 Chrome,如今已经占有全球 58% 的市场份额。而运行于 Chrome 浏览器之上的 Chrome App,是一个由 HTML、CSS 和 JavaScript 构成的应用程序,使用起来与操作系统的本地应用程序并无二致。本文通过编写一个简单的时钟应用,来讲解如何开发一个 Chrome App。

第一步、创建 manifest 文件

首先,需要在项目目录中新建一个 manifest.json 文件。manifest 文件用来告诉 Chrome 关于 App 的一些信息,比如名称、图标、如何运行以及需要的权限等。下面是一段代码示例:

{
    "name": "My clock",
    "version": "1.0.0",
    "manifest_version": 2,
    "app": {
        "background": {
            "script": ["background.js"]
        }
    },
    "icons": {
        "512": "icons/clock-512.png",
        "256": "icons/clock-256.png",
        "128": "icons/clock-128.png"
    },
    "permissions": ["browser"]
}

关于 manifest 的更多介绍,请查看 Manifest File Format

第二步、创建 background 脚本

每一个 Chrome App 都有一个不可见的 background 页,用来监听 App 的启动和退出等。

chrome.app.runtime.onLuanched.addListener(function () {
    var screenWidth  = screen.availWidth;
    var screenHeight = screen.availHeight;
    var width  = 1024;
    var height = 768;

    chrome.app.window.create('index.html', {
        id: 'myClockID',
        outerBounds: {
            width: width,
            height: height,
            left: Math.round((screenWidth - width) / 2),
            top: Math.round((screenHeight - height) / 2)
        }
    }, function (appWindow) {
        appWindow.onClosed.addListener(function () {
            chrome.log('App is closing ..');
        });
    });
});

上面的代码表示,当用户启动 App 时,onLuanched 事件被触发,然后 Chrome 会按照给定的宽高和位置信息打开一个窗口页,并且当窗口页关闭时,调用回调函数并在终端中显示一行信息。

第三步、创建一个窗口页

创建 index.html 文件作为 App 的 window 页面,代码如下所示。需要注意的是,由于 Chrome 的安全机制,JavaScript 代码不能直接写在 HTML文件中,必须通过 <script src="js/clock.js"></script> 的方式引入。

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>My clock</title>
    <link rel="stylesheet" href="css/styles.css">
</head>
<body>
    <div id="clock"></div>
    <script src="js/clock.js"><script>
</body>
</html>

第四步、添加 CSS 样式和 JS 逻辑

为第三步中创建的 HTML 文件添加一些简单的样式:

#clock {
    width: 600px;
    margin: 200px auto 0 auto;
    font-family: monospace;
    font-size: 42px;
    text-align: center;
}

对应的 JavaScript 代码如下:

function myClock(el) {
    var today = new Date();
    var h = today.getHours();
    var m = today.getMinutes();
    var s = today.getSeconds();

    m = (m >= 10) ? m : ('0' + m);
    s = (s >= 10) ? s : ('0' + s);
    el.innerHTML = h + ": " + m + ": " + s;
    setTimeOut(function () {
        myClock(el)
    }, 500);
}

var clock = document.getElementById('clock');
myClock(clock);

第五步、添加应用图标

将三种不同尺寸的应用图标放入 icons 目录中。

第六步、启动运行

首先,需要打开「扩展程序」页面,确定「开发者模式」为选中状态。然后点击「加载已解压的扩展程序」,选择本项目的目录并点「确定」按钮。

当加载完成后,打开一个新标签并点击时钟应用的图标,便可以启动我们开发的 Chrome App。