全部文章

1299 篇文章

http-网络05-24
阅读

深入浅出HTTP2预检请求(CORS Preflight Request)_跨域预检请求

前言 在现代Web开发中, (Cross Origin Resource Sharing,简称CORS)是一项关键技术,它允许浏览器在不同源之间安全地执行Ajax请求。当一个来自不同源的请求涉及到一些特殊 HTTP 头部或者方法时,浏览器会先发送一个称为“预检请求”(Preflight Request)的OPTIONS请求以确认服务器是否允许这样的实际请求。本文将详细介绍预检请求的工作原理、应用场景以及相关配置。 什么是预检请求? 预检...

#学习
javascript05-23
阅读

如何巧妙应对iOS键盘难题

前言 写过移动端的同学或多或少都遇到过软键盘带来的各种各样的问题,最典型的就是输入框被软键盘遮挡、fixed元素失效等问题,并且这些问题在iOS上的表现让人难以接受。 webview的差异 在移动端上,我们的H5页面一般是运行在宿主APP提供的 中,简单点理解,你其实可以把它当作浏览器,就是用来展现页面内容的。目前移动端主流系统分为 与 ,然而两者提供的 容器也存在着诸多差异,今天我们就只探讨两者软键盘带来的影响。 首先,我们先来写个简...

#学习
vue05-21
阅读

vite+vue3实现低版本浏览器兼容的解决方案(白屏问题)

前言 项目全线使用vue3的时候,自然使用的是配套更加契合的vite打包工具,于是自然而然会用到很多新的语法,比如这两年开始普及的可选链语法,这个语法都已经纳入声呐的代码规范中了,但是vite自身打包的时候,并不会做过多的兼容处理。 默认情况vite的兼容目标是支持 原生ES模块 , 原生ESM动态导入 和 的浏览器,官方预设的兼容目标如下: 1. es2020 2. edge 88 3. firefox 78 4. chrome 87...

#学习
vite工具05-20
阅读

Vite 的实现原理,确实很巧妙

vite 是新兴的构建工具,它相比 webpack 最大的特点就是快。 那它是如何做到这么快的呢? 因为 vite 在开发环境并不做打包。 我们创建个 vite 项目: 安装依赖,然后把服务跑起来: 浏览器访问下: 本地是 main.tsx 引入了 App.tsx,并且还有 react 和 react dom/client 的依赖: 用 devtools 看下: 可以看到,main.tsx、App.tsx 还有 react 和 reac...

#学习
vue05-20
阅读

vue3+vite 安卓8.0下打开白屏问题记录

问题:vue3+vite 开发移动端应用,上线后现场反馈安卓8.0下进入页面白屏 分析:原因就是因为语法兼容问题。根据vite官方文档描述, 默认支持 Chrome =87、Firefox =78、Safari =14、Edge =88 ,所以需要我们手动兼容低版本。 处理方案: 增加打包兼容代码 vite.config.js下增加 打包运行发现依然白屏。 请注意,默认情况下 Vite 只处理语法转译,且 默认不包含任何 polyfil...

#学习
javascript05-20
阅读

Zustand不仅使用起来简单,源码更简单

说起 Zustand,很多使用 React 的小伙伴肯定不陌生 它是一个 React 状态管理库,类似于 Redux、Mobx 一起来看下 Zustand 的周下载量,大概在 250w,妥妥的第一梯队 再来看下 Zustand 的 github 标星,截止目前(2024 3 27)已经有 41.6k,妥妥的高赞仓库 如此优秀的 React 状态管理库不得不研究下。 顺便说一下,Zustand 的作者写了三个状态管理库,凭借一己之力,搅混...

#学习
vite工具05-20
阅读

研究vite心得

vite作为我们前端开发工具利器,在开发时,作为开发服务器时提供极速的启动体验、调试接口时提供代理服务器功能,开发时提供HMR能力支持修改无感刷新,提供兼容rollup的打包生态,提供方便扩展的插件系统等等,这些是怎么做的呢,本文在学习了文档&源码后与大家探讨一下 vite 以下功能的实现思路: 开发服务器 proxy代理 预构建 hmr 插件系统 1. 浏览器原生支持 ,当碰到 import 一个(非本地)模块时,浏览器会发一个请求(...

#学习
Golang05-15
阅读

Go module 目录为什么带 ! 感叹号?

如下图的模块存储路径: 认真一看,会发现一个神奇的现象。那就是有的文件夹名称是带 ! 感叹号的。但是包本身并没有这样命名。 如下图红框中的感叹号: 这是怎么回事,目录名乱码了吗,还是说是一种加解密的编码? 在 的官方文档下 Escaped Paths\[1\] 我们能够找到相关的解释。如下图: 这个问题的缘由是因为 Go 模块是从 OS 文件系统读取数据的,模块不能单纯的依靠 OS 文件系统来区分大小写,也不能依靠网络服务器去区分。 也...

#学习
javascript05-15
阅读

最全的docx,pptx,xlsx(excel),pdf文件预览方案总结

最近遇到了文件预览的需求,但一搜索发现,这还不是一个简单的功能。于是又去查询了很多资料,调研了一些方案,也踩了好多坑。最后总结方案如下 1. 花钱解决(使用市面上现有的文件预览服务) 1. 微软 2. google 3. 阿里云 IMM 4. XDOC 5. Office Web 365 6. wps开放平台 2. 前端方案 1. pptx的预览方案 2. pdf的预览方案 3. docx的预览方案 4. xlsx(excel)的预览方...

#学习