
大前端
文章平均质量分 74
基于nodejs的大前端
天問_
天問的个人网站(天问博客),专注于Node.js、Vue.js、Svelte、Electron.js、Tauri、Vite、Nginx等大前端技术。不断学习新技术,记录日常开发问题,持续分享coding,极客开源,共同进步。
展开
-
HTTP 3xx状态码:重定向的场景与区别
HTTP 状态码是服务器响应请求时传递给客户端的重要信息。3xx 系列的状态码主要与重定向有关,用于指示请求的资源已被移动到不同的位置,需要采取不同的操作来访问。原创 2024-01-09 15:41:56 · 1103 阅读 · 0 评论 -
Property ‘unmount‘ does not exist on type ‘Window & typeof globalThis‘
在 Vue3 + Vite + TS 的项目中,接入 MicroApp 微前端时,编辑器出现 TS2339: Property 'unmount' does not exist on type 'Window & typeof globalThis'. 的错误提示。原创 2023-12-12 10:36:53 · 1271 阅读 · 0 评论 -
js中 ||=、&&=、??=、?.、?? 运算符的使用
JavaScript 中存在一些特殊的运算符,如 ||=、&&=、??=、?.、??,它们在特定的场景下能够帮助开发者简化代码逻辑或增强代码的健壮性。本文将介绍这些运算符的定义、语法、使用场景以及示例。原创 2023-11-08 14:48:51 · 3103 阅读 · 0 评论 -
axios / fetch 实现 stream 流式请求
axios 是一个支持node端和浏览器端的易用、简洁且高效的http库。本文主要介绍 axios / fetch 如何实现 stream 流式请求,注意这里需要区分 node 环境和浏览器环境。原创 2023-08-18 19:29:12 · 12844 阅读 · 7 评论 -
Tauri 应用中发送 http 请求
最近基于Tauri和React开发一个用于http/https接口测试的工具Get Tools,其中使用了提供的fetchAPI,在开发调试过程中遇到了一些权限和参数问题,在此记录下来。原创 2023-07-11 11:13:40 · 3754 阅读 · 6 评论 -
windows系统cmd命令设置别名,并添加到环境变量
众所周知,Linux 命令很强大,使用起来也很方便,但是想在 windows 系统上使用 Linux 命令有些困难,要么下载第三方终端工具,要么就是安装一系列命令环境。作为一个前端开发,其实可以全局安装一下 npm 命令行工具,然后再配置别名,并添加到环境变量中,就可以替代一些常用的 Linux 命令了。原创 2023-06-11 16:18:19 · 1563 阅读 · 2 评论 -
Vue 打包优化之 生产环境删除 console 日志
使用 vue-cli 3.0 (@vue/cli) 脚手架构建的项目,一般在本地开发过程中,会有不少 console 调试信息。如果不处理这些日志信息,默认情况下,即使是构建生产环境的包,这些 console 打印也不会被移除,这显然是不够严谨的。所以就介绍一下怎么来配置根据环境删除 console 日志。原创 2022-11-30 19:18:11 · 903 阅读 · 1 评论 -
Vue 打包优化之 externals 抽离公共的第三方库
使用 @vue/cli 脚手架构建的 Vue 全家桶项目,默认配置下,打包后会把 vue、vue-router、axios、vuex、element-ui、echarts 等公共库打包在一起,导致基础 chunk、vendor 包体积特别大,有时一个文件能达到 3-5MB,这会大大影响首次加载速度。因此需要抽离第三方公共库,配合使用 CDN 加速。原创 2022-11-29 15:10:07 · 3749 阅读 · 2 评论 -
Svelte 实现 keypress 快捷键功能
有些框架中内置了常用的事件修饰符和按键修饰符,例如:Vue 中就提供了按键 .enter(.13),修饰键 .ctrl、.alt、.shift、.meta等修饰符,简化了很多快捷键功能的实现。在 Svelte 中也提供了 preventDefault、stopPropagation、once 等事件修饰符,但是没有内置快捷键修饰符。原创 2022-11-18 00:15:00 · 510 阅读 · 0 评论 -
阻止移动端 touchmove 与 scroll 事件冲突
在移动端开发过程中,如果要实现一个元素或按钮的拖动定位,会出现很多坑。例如:元素上下移动过程中,会触发 body 的 scroll 事件,导致整体的位置偏移,这时就需要 阻止移动端 touchmove 与 scroll 事件冲突 。原创 2022-11-17 14:19:24 · 3902 阅读 · 2 评论 -
Shell 中常用 Date 日期的计算
在使用 Crontab 定时任务和 Shell 脚本切割 Nginx 日志文件时,要用到时间戳、当月、上月、下月、上月初、上月末、下月初、下月末等等,其中有些日期不能直接获取,需要经过一定的计算才能得到。原创 2022-11-15 20:14:30 · 903 阅读 · 0 评论 -
Blob 文件下载对应的常见 MIME 类型列表
Blob 对象表示一个不可变、原始数据的类文件对象。它的数据可以按文本或二进制的格式进行读取,也可以转换成 ReadableStream 来用于数据操作。在 JS 中通常使用 Blob 进行文件下载保存,new 转换过程中需要指定下载文件 MIME 类型。原创 2022-11-03 16:21:24 · 1174 阅读 · 0 评论 -
URLSearchParams快速解析URL查询参数
浏览器 Window 内置的 URLSearchParams 接口定义了一些实用的方法来处理 URL 的查询字符串,再也不用 & 字符串分割的方式去解析 url query 参数了。原创 2022-11-01 16:37:24 · 1655 阅读 · 0 评论 -
前端代码统计工具cloc的安装与使用
怎么来衡量一个web端项目的大小,一是看页面多少,二是看源代码行数。页面多少比较好统计,通过 Router 的配置大概就能知道。但是源代码行数,如果要一个文件一个文件去计算,那就费了劲了。有问题有需求,就会有人造轮子。本文就介绍一下 代码统计工具cloc的安装与使用。原创 2022-10-28 15:55:57 · 2682 阅读 · 0 评论 -
阻止 mousemove 或 touchmove 与 click 事件同时触发
最近做了自己的开源项目 Msw-Tools,参考了 VConsole 工具中按钮的拖拽功能,计划给 MSW 按钮也增加类似的拖拽效果,并兼容PC端和手机端,但是遇到一个问题:一个按钮绑定了多个事件,怎样才能阻止 mousemove 或 touchmove 与 click 事件同时触发。原创 2022-10-26 14:59:22 · 2865 阅读 · 0 评论 -
在ElementUI的$notify通知方法中渲染自定义组件
ElementUI 的 Notification 组件通常用于全局的通知提醒消息,其中展示内容默认是文本字符串,当然也可以设置 dangerouslyUseHTMLString: true 后传入 HTML 片段。如果要展示比较复杂的动态内容,一般会把传入的内容封装成组件,而直接传入组件是无法渲染的,本文就是解决 $notify 中怎么渲染自定义组件的问题。原创 2022-10-24 17:34:45 · 5057 阅读 · 5 评论 -
Vue3学习与实战 · Ref获取真实DOM
在使用 Vue 、React 等MVVM框架开发项目时,基本上很少需要直接手动去操作 DOM 了,但是也不可避免,例如获取元素的宽高、元素在屏幕的XY位置、DIV拖拽等等。随着 Vue 版本的升级,在 Vue3 中获取真实DOM的方法也有了变化。原创 2022-10-25 00:15:00 · 1330 阅读 · 0 评论 -
Git Commit 提交信息规范
在日常项目开发中,多人分工配合不可避免。一个好的团队,流程规范必不可少。而使用 Git 更是家常便饭,项目代码的提交,合并都需要有清晰的流程。为了团队成员方便查看每个版本的提交信息,又避免在提交记录中出现 “黑历史”,所以,Git Commit 提交信息的规范 尤为重要。原创 2022-10-11 00:15:00 · 647 阅读 · 0 评论 -
使用Crontab和Shell脚本切割Nginx日志
Nginx 日志会随着时间和访问流量的增加而日益增大,access.log 日志文件也会随之越来越大,最后会导致日志的读写效率下降,进而影响 Nginx 服务的性能。因此,需要对 Nginx 日志文件进行切割,本文就介绍一下:使用 Crontab 定时任务执行 shell 脚本来切割 Nginx 日志。原创 2022-10-10 10:13:30 · 928 阅读 · 0 评论 -
努力一周,开源一个超好用的接口Mock工具——Msw-Tools
从零开发了一个灵活无依赖,且集成简单的数据接口 Mock 工具——Msw-Tools,已开源到 NPM。Msw-Tools(Mock Service Worker Tools)是一个基于 Msw.js 和 Svelte 构建的数据 Mock 工具,用于前后端接口数据联调,方便开发者在不同数据、不同场景下进行Msw-Tools(Mock Service Worker tools)是一个基于 Msw.js 和 Svelte 构建的数据Mock 工具,用于前后端接口数据联调,和不同数据、不同场景的功能测试。原创 2022-09-28 17:34:46 · 2526 阅读 · 0 评论 -
Vite3 + Svelte3构建Web应用报错:‘process is not defined‘
Vite爬坑日记: 在使用 Vite3 + Svelte3 构建 Web 应用时,控制台报错:process is not defined。原创 2022-09-21 14:03:17 · 701 阅读 · 0 评论 -
主动同步npm上新发布的包到cnpm
由于各种原因 npm install 的速度比较慢,通常会使用 cnpm 来代替 npm 下载,而 cnpm 同步会有延迟,所以需要主动同步npm的包到cnpm。原创 2022-09-21 08:00:00 · 712 阅读 · 0 评论 -
Vite3 + Svelte3使用@import导入scss样式
近年来,前端技术日新月异,Vite、Vue3、Svelte、SolidJS 等框架工具大放异彩,身为一个前端开发总,感觉一刻不学习就要out了。最近使用 Vite3 + Svelte3 来构建封装自定义的 Web Components ,开始了艰难的爬坑之旅,本文记录一下:Vite3 + Svelte3配置 Sass 预处理器,在 Svelte 单文件组件中使用 @import 导入 scss 样式文件。原创 2022-09-20 17:50:25 · 1612 阅读 · 0 评论 -
Parcel配置public静态文件目录
最近使用 Parcel 搭建一个 Mock Service Worker (MSW)测试服务,遇到一个问题:在 MSW 中注册 Service Worker 的文件(mockServiceWorker.js)是以静态文件相路径加载,但是在 Parcel 启动的服务中加载不到此文件,导致 Service Worker 服务无法注册。...原创 2022-08-31 14:45:02 · 1362 阅读 · 0 评论 -
Nginx学习与实战 · 解决net::ERR_CONTENT_LENGTH_MISMATCH 206问题
Vue项目引入了d3.js,在打包部署到nginx静态服务后,页面不能正常展示,F12打开控制台,发现报了几个net::ERR_CONTENT_LENGTH_MISMATCH 206 (Partial Content)错误。第一次遇到Status Code为206的问题,所以本文记录一下。原创 2022-08-25 11:13:00 · 2992 阅读 · 0 评论 -
Git常用操作命令
是目前世界上最先进的分布式版本控制系统(没有之一)。在日常开发中使用到的git操作命令挺多的,在此记录一下,以备忘却之需。原创 2022-08-19 15:29:43 · 205 阅读 · 0 评论 -
移动端echarts手动控制tooltip和axisPointer的展示隐藏
在移动H5使用了 ECharts 开发可视化图表,遇到一个特殊需求:折线趋势图中需要默认展示最后一个坐标轴对应的数据,也就是主动触发 tooltip 的展示。原创 2022-08-18 02:30:00 · 6407 阅读 · 3 评论 -
Vue中使用keep-alive导致mounted和beforeDestroy钩子函数失效
最近在 Vue 项目中给页面加水印,发现了一个比较奇怪的现象,有的页面水印颜色深,有的页面水印颜色浅,特别是在主题色(背景色)很重的页面,水印看起来格外显眼。经 code review 发现页面使用了 组件缓存,导致 mounted 和 beforeDestroy 钩子函数中的方法不能正常被调用。...原创 2022-08-17 00:15:00 · 2784 阅读 · 0 评论 -
Vue3+Vite+Vant报错Uncaught SyntaxError: The requested module ‘/node_modules/.vite/vue.js?v=xxxx
在使用 Vue3 + Vite + Vant 搭建移动端项目时报错 Uncaught SyntaxError: The requested module '/node_modules/.vite/vue.js?v=xxxx' 。原创 2022-08-16 11:23:24 · 13750 阅读 · 0 评论 -
Sass中@each、@for、@if的搭配使用
CSS 预处理器赋予了 CSS 逻辑编程的能力,其中 Sass、Less、Stylus 最受欢迎,语法都是大同小异,上手也很快。在项目中使用最多的可能要数 Sass 了,本文就讲讲 Sass 中循环遍历 @each、@for 和 @if 判断的搭配使用。...原创 2022-08-15 19:05:44 · 549 阅读 · 0 评论 -
HTTP协议版本检测
HTTP/2.0在2015年就已经正式发布了,但是现在大部分网站还在使用HTTP/1.1协议。具体怎么查看网站采用的是HTTP/1.1,还是HTTP/2.0呢,本篇就介绍几种检测HTTP协议版本的方法。原创 2022-08-13 00:30:00 · 8402 阅读 · 7 评论 -
setTimeout引发的刨根问底
setTimeout(定时器)是JavaScript中一个比较重要且常用的方法,该方法用于在指定的毫秒数后调用函数或计算表达式。平时开发可能基本都是使用 setTimeout(fn, ms) 的形式,当然还有比较神奇的用法,特别是在前端面试中,经常被问到。...原创 2022-08-12 20:04:36 · 454 阅读 · 0 评论 -
node执行cmd或shell命令
在实现前端工程化的过程中,经常需要在一个js脚本中去执行其他node/npm或者其他shell命令。本篇就介绍两种node调用shell的方法。原创 2022-08-12 19:59:14 · 5321 阅读 · 0 评论 -
JS中setTimeout、promise、async、await的执行顺序
宏任务(从上到下、从左到右的整体)微任务的Event Queue(Promise.then,async / await整体,process.nextTick【node环境】)宏任务的Event Queue(setTimeout / setInterval / setImmediate【node环境】)同一轮微任务队列中,依次顺序执行、、和同一轮宏任务队列中,在setTimeout之后执行在浏览器环境同一轮任务队列中,在setTimeout之前执行script。...原创 2022-08-03 10:43:10 · 1647 阅读 · 0 评论 -
Nginx反向代理WebSocket服务连接报错:WebSocket connection to “wss://xxx/xxx“ failed
最近使用 node.js 搭建 WebSocket 服务,在本地测试 connection 都是正常,于是部署到 Linux 服务上,需要用 Nginx 来反向代理 WebSocket 服务。浏览器控制台报错:WebSocket connection to 'wss://tiven.cn/ws/xxx' failed:,经过一番折腾,终于解决了这个报错。...原创 2022-08-02 17:14:56 · 41376 阅读 · 14 评论 -
Git删除远程某个历史提交记录
在开发中经常会遇到在本地测试的代码或者隐私信息,一不小心提交到了远程仓库,即便立即删除了再提交,但是上次的提交记录在远程依旧可以查看。 特别是像账号密码、key文件这种,很可能造成隐私泄露。...原创 2022-07-29 15:51:19 · 5484 阅读 · 0 评论 -
Nginx学习与实战 · 解决SPA单页面应用CDN缓存问题
现在很多web应用都是使用Vue、React等框架开发的,这种SPA单页面应用在打包后,有些文件比较大。因此,大部分公司在生产环境会使用CDN加速,来加快首页渲染速度。但是使用CDN后静态文件会有缓存,重新打包上线后,可能不会立即更新修改的地方。浏览器上可以使用Ctrl + Shift + R强制清理缓存,但是手机上清理缓存就很麻烦。再说这种清理缓存的方式对用户来说极度不友好,所以需要在Nginx中配置相应的缓存策略。...原创 2022-07-29 00:40:18 · 769 阅读 · 0 评论 -
node+axios实现服务端文件上传
最近调研企业wx集成H5应用,其中有一个发送图文消息,需要上传图片到临时素材库。之前做过文件上传到阿里云、七牛云都是服务端提供封装好的文件上传接口,在客户端使用ajax的方式上传。所以就来踩踩坑,使用node+axios实现服务端文件上传。...原创 2022-07-26 20:28:22 · 933 阅读 · 0 评论 -
在Vue中获取DOM元素的实际宽高
最近使用 D3.js 开发可视化图表,因为移动端做了 rem 适配,所以需要动态计算获取图表容器的宽高,其中涉及到一些原生DOM API的使用,避免遗忘这里总结一下。原创 2022-07-19 17:19:15 · 11206 阅读 · 0 评论 -
JS中break、continue、return跳出循环的用法和区别
在前端开发中,使用循环遍历操作肯定不可避免。常用的循环语句如:for、do/while、while、for/in、for/of、forEach、map 等等,日常开发时经常会遇到遍历某些值要跳过循环、或者中断循环,这时就要用到 break、return、continue 等关键词来区别处理。...原创 2022-07-08 18:26:06 · 770 阅读 · 0 评论