HTML拾遗

HTML拾遗

Ruby 标签

定义和用法

<ruby> 标签定义 ruby 注释(中文注音或字符)。在东亚使用,显示的是东亚字符的发音。与 <ruby> 以及 <rt> 标签一同使用:
ruby 元素由一个或多个字符(需要一个解释/发音)和一个提供该信息的 rt 元素组成,还包括可选的 rp
元素,定义当浏览器不支持 “ruby“ 元素时显示的内容,类似于noscript标签

阅读更多
JavaScript中的防抖动和限流

JavaScript中的防抖动和限流

防抖动(debounce)和限流函数(throttle)

debounce 与 throttle 是开发中常用的高阶函数,作用都是为了防止函数被高频调用,换句话说就是,用来控制某个函数在一定时间内执行多少次。

阅读更多
正则表达式和IndexOf函数的效率问题

正则表达式和IndexOf函数的效率问题

事情的起因

事情的起因是一道LeetCode题目,具体如下:

1003. 检查替换后的词是否有效

给定有效字符串 “abc”。

对于任何有效的字符串 V,我们可以将 V 分成两个部分 X 和 Y,使得 X + Y(X 与 Y 连接)等于 V。(X 或 Y 可以为空。)那么,X + “
abc” + Y 也同样是有效的。

例如,如果 S = “abc”,则有效字符串的示例是:”abc”,”aabcbc”,”abcabc”,”abcabcababcc”。无效字符串的示例是:”abccba”,”ab”,”
cababc”,”bac”。

如果给定字符串 S 有效,则返回 true;否则,返回 false。

阅读更多
使用Dockerfile创建一个JupyterLab镜像

使用Dockerfile创建一个JupyterLab镜像

Dockerfile中的一些常用命令

FROM指令

FROM指令是整个Dockerfile的入口,必须是第一条指令。其代表新制作镜像的基础镜像。基础镜像可以自己制作,也可以从开源的仓库
pull,例如dockerhub或是国内阿里云的免费仓库。

Docker中存在一种特殊的情况,就是不以任何基础镜像为基准,此时可以第一句话使用:

1
FROM scratch

来表示以空白镜像为基础,也就是直接将可执行文件复制进镜像。例如swarm、coreos/etcd等。

阅读更多
在React脚手架中配置使用stylus

在React脚手架中配置使用stylus

创建一个项目

我们此次使用react脚手架工具创建一个空白的项目,具体为:

1
$ create-react-app with-stylus

创建完空白项目后,我们为项目添加一个我们自己的Remote地址(可选)。

1
2
$ git remote add origin GIT_URL
$ git push -u origin master
阅读更多
React源码解读-事件注册
搭建本地React源码调试环境

搭建本地React源码调试环境

一般来说,我们想要去学习 React 的源码的时候,可能会先Build一下,然后使用源码包下的fixtures
内的测试样例进行调试,但是,不管是productionbuild还是Developmentbuild
,源码都是被打包在一个文件中的,结构混乱,即使代码没有被压缩,也很难看得懂具体那一个方法是属于哪一个模块的。所以,为何不使用源码包直接来调试源代码呢?

本文将会介绍如何直接使用React源码包来调试源码。

相关代码以全部放置在:

https://gitee.com/cyrusky/StudyReact.git

阅读更多
React和Vue中的数据绑定

React和Vue中的数据绑定

数据的单向绑定

我们在做原生页面开发的时候,如果涉及到前端的数据动态展现,是如何做的呢?(这里排除了后端直接返回嵌入数据的HTML
页面的模式,比如说PHP中的模式),比如下面的例子:

1
<p></p>
1
2
const data = { value: 'hello' }
document.querySelector('p').innerText = data.value;

通过 JavaScript 原生的DOM操作方式,将数据动态填充到DOM中,就是数据(Data)到模板(DOM)的绑定,这就是数据单向绑定。

阅读更多
JavaScript事件冒泡与事件捕获

JavaScript事件冒泡与事件捕获

事件冒泡与事件捕获

事件冒泡事件捕获分别由微软网景公司提出,这两个概念都是为了解决页面中事件流(事件发生顺序)的问题。

比如说,下面的代码:

1
2
3
4

<div id="outer">
<p id="inner">Click me!</p>
</div>

上面的代码当中一个div元素当中有一个p子元素,如果两个元素都有一个click的处理函数,如果点击了inner的话,其实outer
也算是被点击了的。那么我们怎么才能知道哪一个函数会首先被触发呢?为了解决这个问题微软和网景提出了两种几乎完全相反的概念。

阅读更多
深入理解JavaScript中的EventLoop原理

深入理解JavaScript中的EventLoop原理

浏览器的多进程架构

在浏览器刚被设计出来的时候,那时的网页非常的简单,每个网页的资源占有率是非常低的,因此一个进程处理多个网页时可行的。然后在今天,大量网页变得日益复杂。把所有网页都放进一个进程的浏览器面临在健壮性,响应速度,安全性方面的挑战。

  • 健壮性:现代浏览器大多都是多tab架构,如果所有的tab都存在于一个进程内部的话,如果其中的一个tab崩溃,会影响其他的tab
    ,为每个tab分配一个进程,则会有效避免这个问题。

  • 响应速度:这个不赘述。

  • 安全性:由于同一进程内的线程是共享资源与地址空间的,所以如果把不同的网页放在同一进程内,可能会导致数据泄露等问题。

阅读更多