为第三方 npm 包编写声明文件
1. 如何查看当前包是否有现成的声明文件?在我们尝试给一个 npm 包创建声明文件之前,需要先看看它的声明文件是否已经存在。一般来说,npm 包的声明文件可能存在于两个地方: 与该 npm 包绑定在一起。判断依据是 package.json 中有 types 字段,或者有一个 index.d.t ...

不花一分钱,把老旧安卓手机改为Linux服务器,并实现内网穿透
0. 前言前一阵子,突然想搞个树莓派玩玩,但是一看某宝,之前顶天也就300块钱的树莓派现在竟然四五百起,新款的都到七八百了,闲鱼也都要价要疯了。 作为不可能多花一分钱给黄牛的我,突然想要家里还有太不用的小米 mix3(淘一台二手手机也比买树莓派强啊),要是能发挥这台手机的性能,那不比树莓派高多了! ...

浅谈 Content Security Policy(CSP) 内容安全策略
1. 何为 CSPCSP 是一种有效防止用户浏览器页面安全的一种策略,通过设置 CSP,浏览器能够阻止恶意的 XSS 攻击。 举个例子: 在某一博客类的网站上,用户可以插入任何富文本内容。于是黑客就向页面插入了一个恶意的图片链接,浏览器加载了图片,就发送了一个 GET 请求。但我们无法保证图片的链接 ...

macOS 下安装php指南
1. 前言macOS 自带 PHP,以 Big Sur 为例,自带 PHP7.3: 1234567$ php --versionWARNING: PHP is not recommendedPHP is included in macOS for compatibility with legacy ...

[CSS Trick] CSS渐变遮罩的实现
1. 前言在设计稿中,经常遇到渐变场景,说到渐变那必须要谈及 linear-gradient,这里推荐去看《CSS 揭秘》一书中对渐变的介绍。 大部分我们都是在 background 中去使用 linear-gradient,来实现一个渐变背景。但是在一些场景下,我们希望内容部分有个整体的渐变,比如 ...

令人头大的ES Module 与 CommonJS
1. ES Module 与 CommonJS 的概念模块化编程是个老生常谈的问题了,Javascript 有着沉重的模块化历史包袱,之前引入 Javascript 代码只能通过 Script 标签引入,这样就容易产生如下的问题: js文件作用域都是顶层,这会造成变量污染 js文件多,变得不好维护 ...

数制前端整体架构概览
1. 子项目以及子模块公司的整体项目是有多个模块构成的,比如物流管理、销售管理、人力资源管理 …… 如果将公司的所有模块作为一个整体项目来开发,那么维护代码库随着后面的模块开发将会变得越来越庞大,整个项目的上线也将变得逐渐难以控制。 因此我们为每个模块开了不同的 git 仓库来管理,以一个基座项目为 ...

Git Submodules 分库加密的工程化解决方案
1. 前言由于公司的项目分为多个模块,为了方便多个模块分开开发,防止代码混淆,因此每个项目模块都另外开了一个分库来维护,然后有一个整体的项目基座用来关联各个模块的页面跳转,项目上线时也可以单个模块增量上线。 但是这么一套架构就带来另外一个问题,对于每个模块的共用部分,如 utils、hooks、co ...

从零开始创建一个 React Native Native Modules
1. 什么是 Native Modules首先我们要明白 Native Native 之所以能够跨端调用 Android、iOS 的能力,就是因为 Javascript 只是提供了 Bridge 层的调用,具体的实现代码还是由原生的 Android、iOS 代码来实现的: 因此,理论上如果我们编写 ...

灵魂拷问:浏览器为什么禁止跨域
前言跨域问题是个老生常谈的问题了,当一个页面访问非同域(域名、协议、端口号不同的都是非同域)的接口,就会由于浏览器的同源策略限制被拒绝访问。 那么问题来了,好端端的浏览器,为什么禁止我访问跨域接口呢,这个问题在知乎上也有很激烈的讨论:https://www.zhihu.com/question/26 ...