0%

概述

工作中用到两个iframe(兄弟关系)互相通信的问题,除了通过统一的父级之外,在思考还有没有其他更优解,这时候想到了Service Worker,既然谈到这个,那就重头捋一下,各种“woker”的前世今生。

谈到Web Worker 与 Service Worker,经常出现的高频词汇还有PWA,离线应用,缓存等,我们先了解下,这些名词的含义:

阅读全文 »

概述

我们知道,计算机内部,所有信息最终都是一个二进制值。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从00000000到11111111。

上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的对应关系,做了统一规定。这被称为 ASCII 码。ASCII 码一共规定了128个字符的编码,这对英文来说是够用的,但是对于中文来说就远远不够了。每个国家就各自来对 ASCII 字符集做了拓展,最具代表性的就是国内的 GB 类的汉字编码模式,如GB2312字符集。

但当各国互相接轨时就出现了问题:世界上各国都有不同的编码方式(虽然都兼容了ASCII码),同一个二进制数字可以被解码成不同的符号。因此,要想打开一个文本文件,就必须知道它的编码方式,否则用错误的编码方式解读,就会出现乱码。这时候为了解决这个问题,最终的集大成者 Unicode 字符集出现了,它将世界上所有的符号都纳入其中,成功实现了每个数字代表唯一的至少在某种语言中使用的符号。

阅读全文 »

概述

在日常开发中除了经常看到的png,jpg,bmp,gif外,还存在一些其他图片格式,因为没有正式纳入标准,所以兼容性存在一定问题,但随着web的日益壮大,越来越多的浏览器开始支持这些新的格式,本文我们介绍下APNG与WEBP

阅读全文 »

前言

React 16.8 新增了hooks特性,这是一项激动人心的功能,可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。

React的组件创建方式,一种是类组件,一种是纯函数组件,并且React团队希望,组件不要变成复杂的容器,最好只是数据流的管道。开发者根据需要,组合管道即可。也就是说组件的最佳写法应该是函数,而不是类。

阅读全文 »

概述

NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

随着前端技术的不断迭代,代表MongoDB(文档数据库),Express(Web服务器),AngularJS(前端框架)和Node.js(后端JavaScript运行时)的MEAN堆栈开始流行。除其他原因外,MEAN堆栈很有吸引力,因为您需要了解的唯一语言是JavaScript。与等效的LAMP/LNMP堆栈相比,它还需要更少的RAM。

MongoDB无疑是NoSQL数据库中最受欢迎的数据库。它的文档数据模型为开发人员提供了极大的灵活性,而其分布式体系结构则提供了很好的可伸缩性。因此,通常选择MongoDB用于必须管理大量数据,得益于水平可伸缩性并处理不适合关系模型的数据结构的应用程序。

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统,旨在为WEB应用提供可扩展的高性能数据存储解决方案。在其之上还具有一个基于图形的存储。MongoDB实际上并不存储JSON:它存储BSON(BSON 是一种类似 JSON 的二进制形式的存储格式,是 Binary JSON 的简称),该扩展了JSON表示(字符串)以包括其他类型,例如int,long,date,浮点,decimal128和地理空间坐标等。

阅读全文 »

数据库概述

我们先看一组数据:

2019 年最受欢迎的数据库分为开源数据库和商业数据库(原文地址):

  • 在开源数据库方面,MySQL排名第一,占开源数据库使用量的 30% 以上。PostgreSQL以 13.4% 的开源数据库用户比例位居第二,紧随其后的是MongoDB,占 12.2%,位列第三。

  • 在商业数据库方面,Oracle是世界上排名第一的数据库,它代表了超过 2/3 的商业和开源数据库组合。它与第二名的Microsoft SQL Server差距巨大,IBM DB2名列第三,占商业数据库与开源数据库组合的 11.1%。

对于数据库方向,重点就是两种数据库,一种是以 SQL 为代表的关系型数据库,另一种是以非 SQL 为代表的 NoSQL 数据库。关系型数据库主要有三个:Oracle、MySQL 和 Postgres。

对于web服务来说:Linux+Apache+Mysql+PHP(LAMP)与Linux+Nginx+Mysql+PHP(LNMP)的组合方式对于企业来说更是首选,一来开源免费,二来非常成熟,相关技术人员也很好招聘。从这些可以看出,学习数据库,Mysql是一个绕不过去的点。

MySql在2010年被Oracle收购后,依旧是开源的,但是开源不代表是完全免费的,目前只有MySQL Community Server(社区版) 版本是免费的,也是我们通常使用的版本。

阅读全文 »

概述

2020年第一篇博客,我们来探索下私有npm仓库的搭建~

在开发中经常会遇到一些公共的组件调用,将代码抽离成模块后,想通过npm进行管理,但很多时候这些代码是包含业务相关功能的,是不能对外发布的,这个时候就亟需搭建一个私有npm仓库来进行存放。

查阅资料可以发现,类似的开源库基本有以下两种: cnpm 和 sinopia(verdaccio)。本文选用的为verdaccio,它是sinopia的fork版本(sinopia2015年已经停止更新),不同于cnpm的繁琐,verdaccio基本是属于傻瓜式的操作。那么废话不多,开始搭建。

阅读全文 »

概述

WebAssembly(缩写为Wasm)是一种新的编码方式,编码标准。它并不是一门编程语言,而是一份字节码标准,需要用高级编程语言编译出字节码放到 WebAssembly 虚拟机中才能运行, 浏览器厂商需要做的就是根据 WebAssembly 规范实现虚拟机。
wasm格式的文件,接近java的字节码,它是通过编译工具(如Emscripten)从高级语言(如C / C ++ / Rust)等编译而来,他可以同js文件一样运行在客户端与服务端。2019年12月5日,W3C WebAssembly 工作组发布 WebAssembly 正式推荐标准(W3C Recommendation)。

WebAssembly具有巨大的意义——它提供了一条途径,以使得以各种语言编写的代码都可以以接近原生的速度在Web中运行。

阅读全文 »