理解 WebView
理解 WebView
原文地址:Understanding WebViews作者:kirupa
我们通常使用 Chrome, Firefox, Safari, Internet Explorer 和 Edge 等浏览器来浏览网页。你也许正在使用其中一种浏览器阅读本文!虽然浏览器对于访问互联网内容的任务来说非常流行,它们还有一些我们从未过多关注过的竞争对手。这些竞争对手以 WebView 的形式被我们所熟知。这片文章将讲解 WebView 的神秘之处以及为什么它这么棒。
WebView 入门知识让我们来点无聊的定义。WebView 是一种嵌入式浏览器,原生应用可以用它来展示网络内容。这句话有两部分要注意:
第一,原生应用(亦称 app)。原生应用由专门为特定平台设计的编程语言和 UI 框架编写:
换句话说,应用不是指在浏览器中运行的跨平台网络应用。相反,你的应用主要是用像 Swift、Objective-C、Java、C++、C# 语言来编写的。这种工作方式与系统更加贴近。在这样的背景下,你使用的大多数应用都应该是原生应用。许多流行的应用,比如你的台式机/笔记本上的 Microso ...
npm install 原理分析
npm install 原理分析
本文转载于公众号『code秘密花园』
开门见山,npm install 大概会经过上面的几个流程,本篇文章来讲一讲各个流程的实现细节、发展以及为何要这样实现。
嵌套结构我们都知道,执行 npm install 后,依赖包被安装到了 node_modules ,下面我们来具体了解下,npm 将依赖包安装到 node_modules 的具体机制是什么。
在 npm 的早期版本, npm 处理依赖的方式简单粗暴,以递归的形式,严格按照 package.json 结构以及子依赖包的 package.json 结构将依赖安装到他们各自的 node_modules 中。直到有子依赖包不在依赖其他模块。
举个例子,我们的模块 my-app 现在依赖了两个模块:buffer、ignore:
1234567{ "name": "my-app", "dependencies": { "buffer": "^5.4.3", " ...
TypeScript 装饰器之依赖注入
TypeScript 装饰器之依赖注入
墙裂建议先看上一篇文章:TypeScript 装饰器完全指南
什么是依赖注入依赖注入是将一个对象所依赖的其他对象直接提供给这个对象,而不是在当前对象中直接实例化这些依赖的对象。
在Dependency Injection Demystified一文中的解释更是让人啧啧称赞:
Dependency injection means giving an object its instance variables. Really. That’s it.“Dependency Injection” is a 25-dollar term for a 5-cent concept. That’s not to say that it’s a bad term… and it’s a good tool. But the top articles on Google focus on bells and whistles at the expense of the basic concept. I figured I should say somethin ...
TypeScript 装饰器完全指南
TypeScript 装饰器完全指南
本文大多部分参考A Complete Guide to TypeScript Decorators,对作者表示感谢~
概览装饰器本质上是一种特殊的函数被应用于:
类
类属性
类方法
类访问器
类方法的参数
所以装饰器其实很像是在组合一系列函数,类似于高阶函数和类。通过装饰器我们可以轻松实现代理模式使代码更简洁以及实现一些更有趣的能力。
装饰器的语法十分简单,只需要在想使用的装饰器前面加上@符号,装饰器就会被应用到目标上:
123456function decorator() { console.log('I am a decorator');}@decoratorclass A {}
装饰器的类型一共可以分为:
类装饰器
属性装饰器
方法装饰器
访问器装饰器
参数装饰器
让我们快速认识一下这 5 种装饰器
1234567891011121314151617181920212223// 类装饰器@classDecoratorclass Bird { // 属性装饰器 ...
What does the "as const" mean in TypeScript and what is its use case?
What does the “as const” mean in TypeScript and what is its use case?在stack overflow 上看到这样一个问题:What does the “as const” mean in TypeScript and what is its use case?,其中最高票的回答让人收获匪浅,于是转载至博客。
This is known as a const assertion. A const assertion tells the compiler to infer the narrowest** or most specific type it can for an expression. If you leave it off, the compiler will use its default type inference behavior, which will possibly result in a wider or more general* type.
Note that it is called ...
一道 3 层的 TypeScript 面试题,你能答到第几层?
一道 3 层的 TypeScript 面试题,你能答到第几层?前言本文转载自公众号神光的编程秘籍,对文章作者神说要有光表示感谢~
原文链接:https://mp.weixin.qq.com/s/wWqeF5JJO3WlmBpDIcSuiw
正文最近遇见一道不错的 TS 面试题,分享一下。
这道题有 3 个层次,我们一层层来看。
第一层的要求是这样的:
实现一个 zip 函数,对两个数组的元素按顺序两两合并,比如输入 [1,2,3], [4,5,6] 时,返回 [[1,4], [2,5],[3,6]]
这层就是每次各从两个数组取一个元素,合并之后放到数组里,然后继续处理下一个,递归进行这个流程,直到数组为空即可。
12345678function zip(target, source) { if (!target.length || !source.length) { return []; } const [firstTargetItem, ...restTarget] = target; const [firstSourceItem, .. ...
如何实现并发请求数量控制?
如何实现并发请求数量控制?
前言本文为转载文章,原文地址:关于前端:如何实现并发请求数量控制?
对文章作者表示感谢。
文章代码实现部分根据理解做了部分修改,整体效果无差异。
场景假设有这么一个场景:现在有20个异步请求需要发送,但是由于某些原因,要求我们必须将同一时刻的并发请求数量控制在3个以内,并且还要尽可能快速的拿到响应结果。其实这个场景在一些大厂的面试题中也有过提及,如下:
1234实现一个并发请求函数 concurrencyRequest(urls, maxNum),要求如下:• 要求最大并发数 maxNum• 每当有一个请求返回,就留下一个空位,可以增加新的请求• 所有请求完成后,结果按照 urls 里面的顺序依次打出(发送请求的函数可以直接使用fetch即可)
设计思路首先来看将上面的文字转化为图之后的效果:
这样就直观的看到,有一个最大并发数maxNum,20个异步请求的urls集合和并发返回之后的results集合。
下面就开始演示这个思路是如何开始的,如下:
首先按照每次只能并发3个请求的要求,这里就对应A、B、C,当其中有一个请求完之后就会再从urls里面再 ...
使用JS生成UUID的常用方法
使用JS生成UUID的常用方法
UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部分。
一、使用 Math.random()1234567function getUuid() { return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { var r = (Math.random() * 16) | 0, v = c == 'x' ? r : (r & 0x3) | 0x8; return v.toString(16); });}
二、使用crypto提供的randomUUID方法
MDN Cropto API
1const UUID = crypto.randomUUID();
三、使用crypto提供的getRandomValues方法123functio ...
腾讯云服务器部署 code-server
腾讯云服务器部署 code-server背景在2021年12月份,经历了人生第一次『毕业』,面临着马上要回家过年,希望在回家前可以把新工作确定下来,于是乎进入比较繁忙的准备面试和找工作的阶段,博客也就很少更新了。所幸在回家过年前找到了工作。
确定工作之后,计划写点什么,但是有不知道怎么去表达这个东西,所以就没了下文。后来有一天发现博客的图片全都成了裂图。后来才知道码云(Gitee)上托管的图片都加了防盗链;想起博客部署在github-page上打开速度又比较慢,因此在这种背景下决定自己重新搞一下博客,于是有了以下准备:
购买云服务器(腾讯云)
购买域名
申请七牛云图片存储空间(免费)
在工作之余慢慢的把博客做了迁移,之前的博客虽然没有下掉,但是也不再更新了。
之所以会部署 code-server 主要是之前就知道这个在线的VScode编辑器,但是苦于没有服务器一直没有搞(记得第一次在B站了解到这个东西的时候还想着可以用ipad写代码)。因此在博客迁移结束之后,就想着搞一把,爽一把。哈哈哈~(此处是杠铃般的笑声)
天也不早了,咱言归正传,说一下部署过程及遇到的问题和相应的解法。
冲冲 ...
Linux软链接和硬链接
Linux软链接和硬链接Linux链接概念Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。
关于硬链接在之前的node模块fs中的fs.link()有过介绍。
硬链接硬链接指通过索引节点来进行链接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种链接就是硬链接。硬链接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬链接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的链接。只删除一个链接并不影响索引节点本身和其它的链接,只有当最后一个链接被删除后,文件的数据块及目录的链接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬链接文件均被删除。
软链接另外一种链接称之为符号链接(Symbolic Link),也叫软链接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号链接中, ...