前端
文章平均质量分 88
getTheCheeseOfGod
这个作者很懒,什么都没留下…
展开
-
Observable 的由来
Observable 是 RxJS 的核心概念,是一切响应式操作的基础类,下面是 RxJS 文档中给出的基本示例:import { Observable } from 'rxjs'; const observable = new Observable(subscriber => { subscriber.next(1); subscriber.next(2); subscriber.next(3); setTimeout(() => { subscriber.nex原创 2021-09-12 11:19:32 · 254 阅读 · 0 评论 -
Referer头和Web安全
使用Referer防止CSRF攻击 统计用户特征(推荐还是用埋点) 第三方盗取(跨域referer泄露)Referrer-PolicyGET /a/b HTTP/1.1Host: www.baidu.comConnection: keep-alivePragma: no-cacheCache-Control: no-cacheUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTM.原创 2021-09-09 21:18:09 · 1352 阅读 · 0 评论 -
vue3响应式原理浅析
Vue3是新一代的Vue响应式框架,其中一项重大的改变是重写了响应式模块,使用了新版浏览器提供的Proxy代替Object.defineProperty实现响应式,本文对新版本响应式原理进行了一些分析。简单创建一个vue3项目使用vite工具即可快速生成一个vue3项目,并且自带热更新功能:$ npm init vite-app <project-name>$ cd <project-name>$ npm install$ npm run dev我们可以先使用Co.原创 2021-08-16 14:30:08 · 420 阅读 · 0 评论 -
利用verdaccio搭建npm源入门
我们在开发中一般会把npm源换成淘宝源(https://registry.npm.taobao.org)来加速下载软件包,有些公司也有做自己内部搭建的npm源,可以将一些内部包发布在其中,调用起来更加方便,那么可不可以做一款自己的npm源,将我们自己鼓捣的一些奇怪软件包发进去呢?vadaccio是一款零配置的个人私有npm源,让搭建一个私有源变得非常简便!使用它的docker镜像来安装更加便捷,我们需要准备的只有一台服务器,下面是搭建源的步骤。启动vadaccio服务首先拉取镜像:docker pul原创 2021-08-15 22:11:23 · 589 阅读 · 0 评论 -
typescript声明文件写法
目前typescript已经非常流行了,我们经常在开发中用到类型、接口、枚举等功能,但一般业务开发中很少需要用到声明文件,只有在诸如扩展一个全局变量、声明一些全局类型的情况下会用到。但如果要写一个node包,那么声明文件就是必不可少的,typescript的声明文件有多种形式,而且不同形式的用法差别很大,本文主要汇总了声明文件的书写方法。声明文件的定义声明文件一般包含一些变量和函数的类型定义,如C、C++的.h头文件。在typescript中以.d.ts为扩展名的文件是声明文件。声明文件的查找规则.原创 2021-08-15 21:39:24 · 955 阅读 · 0 评论 -
CORS预检
CORS是一种常见的跨域机制,一般由服务端提供一个Access-Control-Allow-Origin头来解决问题,但是这仅对一些“简单请求”有效。那么何谓“简单请求”呢?根据MDN的介绍,一个请求如果同时满足:请求方法为GET HEAD POST中任意一种请求头仅包含浏览器(代理)添加的头字段(User-Agent, Connection)、描述资源的头字段(Accept, Accept...原创 2020-02-13 23:59:44 · 434 阅读 · 0 评论 -
Vue实现组件化的基本思路
Vue.js(以下简称Vue)是时下流行的前端开发库,一般搭配其插件Vue-Router,Vuex一起使用,行业中称为Vue全家桶。Vue使用了MVVM的理念,将表现层(DOM)和数据层进行了分离,其基本思想是数据和DOM的一体化,操作数据即可变更DOM,表单交互亦可通过v-model指令改变数据,将前端开发者从DOM、数据两手抓的泥潭中解放出来。但是,使用这种方法的代价还是明显的,那就是Vu...原创 2020-01-15 00:22:30 · 478 阅读 · 0 评论 -
前端深拷贝的简易实现
JS这门语言没有提供深拷贝的内建方法,诸如slice, concat, Object.assign这些方法其实都是对象的浅拷贝,修改深层次引用时就会变更原始数据,这在一些必须使用深拷贝的场景是无法接受的,所以如何实现一个有用又靠谱的深拷贝方法变得至关重要。如果不想搞得太复杂,可以直接使用这个懒汉大法:JSON.parse(JSON.stringify(target)),它的思路很简单,先序列化再...原创 2020-01-12 10:43:28 · 444 阅读 · 0 评论 -
Vue获取DOM的几种方法
虽然Vue实现了MVVM模型,将数据和表现进行了分离,我们只需要更新数据就能使DOM同步更新,但是某些情况下,还是需要获取DOM元素进行操作(比如引入的某个库要求传入一个根dom元素作为根节点,或者写一些自定义指令),本文主要介绍几种在Vue中获取DOM元素的方法。使用DOM API直接找元素<script> ... mounted () { let elm = this....原创 2019-10-07 13:14:10 · 3163 阅读 · 0 评论 -
抓包工具Filddler和Willow的安装
抓包工具Filddler和Willow的安装原创 2019-04-10 15:36:36 · 959 阅读 · 0 评论 -
Js正则表达式——引用匹配组
Javascript的正则支持向后引用,即在正则式中使用已经匹配到的子串。什么意思呢?先看个问题:我要一个正则,匹配2080-02-26和2080.02.26这两个时间格式,怎么写呢?/^\d+[.\-]\d+[.\-]\d+$/显然是不行的,因为它也能匹配2080-02.26,2080.02-26,直接扑街。这时我们就可以使用正则提供的引用功能。它的写法是\n,看起来怎么跟个换行符一样?其实n...原创 2019-08-20 14:45:53 · 1320 阅读 · 0 评论 -
Js正则表达式——匹配一个空位置
以前说到正则表达式,我以为就是匹配一些字符,然后拿到匹配的元素一顿操作,或者使用类似String.replace这种方法对匹配到的元素进行替换。但是最近发现,它也能匹配空字符,并做一些事情。考虑这个问题:我要把123456789这个数字从个位数起每隔三位加一个,——即把它变成123,456,789这种格式,要怎么做?这是一个很实用的问题,与钱相关的东西或多或少都会被要求处理格式。我们可以用Ja...原创 2019-08-18 17:43:58 · 1103 阅读 · 0 评论 -
Javascript函数记忆及应用
记忆化(memoization)是一种构建函数的处理过程,让函数能够记住计算的结果。简而言之,就是把第一次计算的结果按照传参保存到某个地方,当以后以相同参数调用时不需重复执行,直接返回上次的结果,从而避免重复而繁琐的计算,提高了函数的执行性能。那么,到底把这些值保存到哪里呢?根据Javascript语法,函数是第一类对象,我们可以自由地给函数定义一些属性,于是很自然地可以想到,我们可以给函数定义...原创 2019-06-30 11:28:10 · 194 阅读 · 0 评论 -
Object.defineProperty函数的configurable配置
以前一直觉得Object.defineProperty是个非常普通的点,无非就是配置一下属性描述符,包括对象是否可枚举(enumerable)、可写(writable)之类的,然后就是定义一个get, set这种。而在实际写代码的过程中,这个东西用到的频率不大,更多的是出现在一些库的源码里头。最近注意到一个以前漏掉的点,就是属性是否可配置,configurable这个属性。以下是MDN对conf...原创 2019-06-16 17:42:00 · 9193 阅读 · 4 评论