Web worker 的简单使用

  1. 1. Main.js
  2. 2. Worker.js

Main.js

注意在 chrome 下 worker 不能正常加载,需要在服务器环境下

    var worker = new Worker('Worker.js');

    // 给 worker 发送消息
    worker.postMessage('Hi, I am a message from Main');

    // 监听来自 worker 的消息
    worker.onmessage  = function (e) {
        console.log(e);
        console.log('Main had receive a message: ', e.data);

        // 接收 worker 传回的指令
        if (e.data.command) {
            eval('(' + e.data.command + ')')
        }
    };

    // 中止 worker
    // 立即杀死 worker
    // worker.terminate();

Worker.js

    console.log('Worker: I am working!');

    // 发送消息给主线程
    postMessage('Hi, I am a message from Worker!');

    // 监听主线程传来的消息
    onmessage = function (e) {
        console.log(e);
        console.log('Worker had receive a message: ', e.data);
    };


    // 注意: 通常来说,后台线程 – 包括 worker – 无法操作 DOM。
    // 如果后台线程需要修改 DOM,那么它应该将消息发送给它的创建者,让创建者来完成这些操作。
    // document.write('I will not be executed :(');  => 报错:alert is not defined


    //  所以为了操作 DOM, 可以通过传递命令的方式来让主线程来执行
    postMessage({
        command: "document.write('hello I am from Worker')"
    });    

    // 除了在 Main.js 杀死线程,也可以自己杀死自己
    // self.close();  

常用字符集和编码格式

  1. 1. 常用字符集和编码

常用字符集和编码

  • ASCII 美国信息交换标准代码

编码规则: 7位表示一个字符,共128个字符

缺点:只能显示26个拉丁字母、阿拉伯数字和英文标点符号

  • EASCII 欧洲扩展字符集

编码规则:8位表示一个字符,共256个字符

缺点:虽解决了部分西欧语言的字符显示问题,但对其他更多的语言依然无力

  • GB2312/GB2312-80 等中文字符集

编码规则:把127号的字符取消掉(即EASCII),两个大于128的字符连在一起表示一个汉字,高字节从 0xA1 到 0xF7, 低字节从 0xA1 到 0xFE

  • GBK 中文字符集

微软对 GB2312-80 进行扩充后制定了 GBK 编码。

  • Unicode 统一字符集

包含超过十万个字符,让电脑能够解析世界上数十种语言。

编码规则:使用4个字节的数字来表达字母、符号、文字。

Unicode 指的是字符集,而 UTF-32, UTF-16, UTF-8 则说的是编码方案。

  • UTF-32

编码规则:用上述 Unicode 的4字节的数字来表达字母、符号、文字

  • UTF-16

编码规则:

若字符编码 U 小于 0x10000, 也就是小于十进制的 65535,则使用2个字节表示;

若字符编码 U 大于 0x10000, 也就是大于十进制的 65535,则使用4个字节表示。
  • UTF-8

是针对对 Unicode 的可变长度字符编码,可表示 Unicode 中任何字符,且编码中第一个字节与 ASCII 兼容。

编码规则是使用1到4个字节为每个字符编码:

128个 US-ASCII 字符只需用1个字节编码,从 U+0000 到 U+007F

带有附加符号的拉丁文、希腊文、西里尔字母、亚美尼亚语、希伯来文、阿拉伯文、叙利亚文等,则使用第2个字节编码,从 U+0080 到 U+07FF

其他基本多文中平面中的字符则使用3个字节编码

其他极少辅助平面中的字符则使用4个字节编码