<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[composurext的博客]]></title><description><![CDATA[scope]]></description><link>https://blog.youkuaiyun.com/composurext</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; composurext]]></copyright><item><title><![CDATA[录音切片上传]]></title><link>https://blog.youkuaiyun.com/composurext/article/details/156057515</link><guid>https://blog.youkuaiyun.com/composurext/article/details/156057515</guid><author>composurext</author><pubDate>Thu, 18 Dec 2025 16:01:23 +0800</pubDate><description><![CDATA[录音上传系统是一个基于浏览器的录音和上传工具，具有简洁美观的界面设计。系统提供开始录音、停止录音和中止上传三个主要功能按钮，并实时显示录音状态、上传状态、录音时长和会话ID等信息。界面采用响应式布局，包含状态面板和日志面板，其中日志面板会记录各类操作信息并分类显示。系统使用现代Web技术实现，包括HTML5、CSS3和JavaScript模块化编程，整体设计注重用户体验和操作反馈。]]></description><category></category></item><item><title><![CDATA[js剪切板]]></title><link>https://blog.youkuaiyun.com/composurext/article/details/154495398</link><guid>https://blog.youkuaiyun.com/composurext/article/details/154495398</guid><author>composurext</author><pubDate>Thu, 06 Nov 2025 18:14:37 +0800</pubDate><description><![CDATA[这段代码实现了一个复制文本到剪贴板的函数，采用渐进增强策略：首先检测并优先使用现代异步API navigator.clipboard.writeText()，若不可用则回退到传统的execCommand方法。通过创建隐藏的textarea元素并执行选择/复制操作实现兼容性方案。函数返回Promise，处理了异常情况并确保始终返回布尔值表示操作是否成功，同时考虑了iOS等特殊平台的兼容性问题。]]></description><category></category></item><item><title><![CDATA[url自动协议修正]]></title><link>https://blog.youkuaiyun.com/composurext/article/details/154448228</link><guid>https://blog.youkuaiyun.com/composurext/article/details/154448228</guid><author>composurext</author><pubDate>Wed, 05 Nov 2025 17:02:47 +0800</pubDate><description><![CDATA[该代码实现了一个URL修正功能：当URL为相对路径时直接返回；当协议不匹配当前页面协议时自动转换（如http转https或反之）。主要处理两种情况：相对路径保留不变，绝对路径协议与当前页面不一致时进行转换。适用于前后端协议不一致时自动适配。]]></description><category></category></item><item><title><![CDATA[简洁函数库版]]></title><link>https://blog.youkuaiyun.com/composurext/article/details/154430513</link><guid>https://blog.youkuaiyun.com/composurext/article/details/154430513</guid><author>composurext</author><pubDate>Wed, 05 Nov 2025 10:34:26 +0800</pubDate><description><![CDATA[本文提供了一个实用的原生 JavaScript 工具函数合集，包含数组去重、对象操作、DOM处理、Promise工具等常用功能。主要特点包括：基于ES6+语法，支持按需导入；提供国际化日期货币格式化、懒加载图片等现代Web开发常用工具；包含安全默认值处理、批量异步请求等实用函数。该工具集同时兼容现代浏览器和Node.js ESM环境，可作为日常开发的基础工具库使用。]]></description><category></category></item><item><title><![CDATA[Vue项目中进行接口异常错误上报]]></title><link>https://blog.youkuaiyun.com/composurext/article/details/151149544</link><guid>https://blog.youkuaiyun.com/composurext/article/details/151149544</guid><author>composurext</author><pubDate>Wed, 03 Sep 2025 14:55:05 +0800</pubDate><description><![CDATA[文章摘要：本文介绍了一个完整的Web应用错误监控与上报方案实现。通过Axios拦截器统一处理请求/响应错误，封装可配置的ErrorReporter类实现错误收集与批量上报，支持采样率和错误过滤。方案包含全局错误处理（Vue错误、未捕获Promise）、页面卸载前自动上报剩余错误等功能，采用sendBeacon和fetch降级策略确保可靠性。该方案能有效监控前端各类异常，提供详细的错误上下文信息，同时避免对用户体验造成影响。]]></description><category></category></item><item><title><![CDATA[图片边缘采样]]></title><link>https://blog.youkuaiyun.com/composurext/article/details/146913652</link><guid>https://blog.youkuaiyun.com/composurext/article/details/146913652</guid><author>composurext</author><pubDate>Tue, 01 Apr 2025 15:44:28 +0800</pubDate><description><![CDATA[2）实现边缘区域的平均采样，避免单点采样可能带来的颜色偏差；4）优化错误处理机制，确保在各种情况下都能返回合适的颜色值；1）采样多个点而不是只取中间一点，提高颜色准确性；3）添加颜色增强处理，使背景色更加美观；]]></description><category></category></item><item><title><![CDATA[提示器模板]]></title><link>https://blog.youkuaiyun.com/composurext/article/details/145729962</link><guid>https://blog.youkuaiyun.com/composurext/article/details/145729962</guid><author>composurext</author><pubDate>Wed, 19 Feb 2025 15:09:41 +0800</pubDate><description><![CDATA[输出：convertToCamelCase（★★★★☆）, formatAsCamelCase（★★★☆☆）输出：extractDataKeys（★★★★★）, listMappedKeys（★★★★☆）{ “name”: “备选名称1”, “score”: 3 },{ “name”: “推荐名称”, “score”: 4 },{ “name”: “备选名称2”, “score”: 3 }‘验证’: [‘validate’, ‘verify’],“rationale”: “命名逻辑说明（中文）”]]></description><category></category></item><item><title><![CDATA[js高亮文本]]></title><link>https://blog.youkuaiyun.com/composurext/article/details/145175326</link><guid>https://blog.youkuaiyun.com/composurext/article/details/145175326</guid><author>composurext</author><pubDate>Thu, 16 Jan 2025 10:34:43 +0800</pubDate><description><![CDATA[【代码】js高亮文本。]]></description><category></category></item><item><title><![CDATA[convertJSONStringsInObject]]></title><link>https://blog.youkuaiyun.com/composurext/article/details/145052653</link><guid>https://blog.youkuaiyun.com/composurext/article/details/145052653</guid><author>composurext</author><pubDate>Fri, 10 Jan 2025 11:01:16 +0800</pubDate><description><![CDATA[在 reviver 中，检查值是否是数字字符串且长度超过 15 位，如果是，保留原始字符串。如果 JSON.parse 抛出错误（非 JSON 格式字符串），直接保留原始值。通过检查字符串是否以 { 或 [ 开头来决定是否尝试解析。确保字符串是纯数字。]]></description><category></category></item><item><title><![CDATA[vue-config.js]]></title><link>https://blog.youkuaiyun.com/composurext/article/details/120064513</link><guid>https://blog.youkuaiyun.com/composurext/article/details/120064513</guid><author>composurext</author><pubDate>Thu, 02 Sep 2021 17:22:10 +0800</pubDate><description><![CDATA['use strict'
const webpack = require('webpack')
const CopyPlugin = require('copy-webpack-plugin')
const WebpackBar = require('webpackbar')
const path = require('path')
// stylelint
const StyleLintPlugin = require('stylelint-webpack-plugin')
const defaultSe]]></description><category></category></item><item><title><![CDATA[jenkins  忘记密码]]></title><link>https://blog.youkuaiyun.com/composurext/article/details/106591077</link><guid>https://blog.youkuaiyun.com/composurext/article/details/106591077</guid><author>composurext</author><pubDate>Sat, 06 Jun 2020 17:44:08 +0800</pubDate><description><![CDATA[jenkins  忘记密码用户名 admin修改配置文件
用户名 admin
今天登陆 jenkins  忘记密码了
修改配置文件
进入安装目录
cd	/var/lib/jenkins


修改配置文件
vi config.xml 
# true 改为 false
 &lt;useSecurity&gt;false&lt;/useSecurity&gt;


重启 jenkins
# 查看状态
systemctl status jenkins
# 重启
sudo systemctl restart jenk]]></description><category></category></item><item><title><![CDATA[React & Redux 进阶]]></title><link>https://blog.youkuaiyun.com/composurext/article/details/105527393</link><guid>https://blog.youkuaiyun.com/composurext/article/details/105527393</guid><author>composurext</author><pubDate>Wed, 15 Apr 2020 10:08:04 +0800</pubDate><description><![CDATA[1. React 的思想
文章涉及到的在线事例
用密：admin/admin


虚拟 DOM


标签就是函数，标签的属性就是函数的参数
&lt;Parent name={this.state.name}/&gt;



我们自定义组件的时候必须要大写开头，因为只有这样 createElement 把组件当成一个变量而不是字符串。





组件名不能是表达式，应该是以大写字母开头的变量。


...]]></description><category></category></item><item><title><![CDATA[React 实现列表拖动效果]]></title><link>https://blog.youkuaiyun.com/composurext/article/details/104664765</link><guid>https://blog.youkuaiyun.com/composurext/article/details/104664765</guid><author>composurext</author><pubDate>Wed, 04 Mar 2020 22:50:15 +0800</pubDate><description><![CDATA[React 实现列表拖动效果
当我们想在 React 中实现一个列表拖动的效果的时候，有很多的第三方库（React dnd）可以借鉴，但是学习第三方库也是一个成本，或者拖动本身并不复杂，只需要第三方库的某一个 api 。这样情况下，我们可以自己实现一个。

组件源码
完成项目 欢迎 star
效果预览用户名：admin；密码：admin；
1. 使用 React 的鼠标事件
React 鼠标事件
...]]></description><category></category></item><item><title><![CDATA[安卓9.0 http请求数据失败解决办法]]></title><link>https://blog.youkuaiyun.com/composurext/article/details/104006738</link><guid>https://blog.youkuaiyun.com/composurext/article/details/104006738</guid><author>composurext</author><pubDate>Thu, 16 Jan 2020 16:17:51 +0800</pubDate><description><![CDATA[为保证用户数据和设备的安全，Google针对下一代 Android(9.0 API 28	) 系统(Android P) 的应用程序，将要求默认使用加密连接(HTTPS)


解决办法：
找到AndroidManifest.xml
添加android:usesCleartextTraffic="true"
从新打包
&lt;?xml version="1.0" encoding="utf-8"?...]]></description><category></category></item><item><title><![CDATA[ANIC: Missing emulator engine program for 'x86' CPU. 更新Android模拟器位置]]></title><link>https://blog.youkuaiyun.com/composurext/article/details/103815970</link><guid>https://blog.youkuaiyun.com/composurext/article/details/103815970</guid><author>composurext</author><pubDate>Fri, 03 Jan 2020 10:26:02 +0800</pubDate><description><![CDATA[将 emulator 二进制文件从 ${ANDROID_SDK_ROOT}/tools/  “提升” 到其自己的顶级目录 ${ANDROID_SDK_ROOT}/emulator/

$ 看看在哪里
which emulator

$ 执行看下版本
/Users/test/Library/Android/sdk/emulator/emulator

$ 如果你按照教程的路径应该是
export ...]]></description><category></category></item><item><title><![CDATA[React Hooks 速学]]></title><link>https://blog.youkuaiyun.com/composurext/article/details/103815771</link><guid>https://blog.youkuaiyun.com/composurext/article/details/103815771</guid><author>composurext</author><pubDate>Fri, 03 Jan 2020 10:17:53 +0800</pubDate><description><![CDATA[持续更新中…
废话不多说，直接开始，运行中会下载很多东西，需要网络环境稳定良好。
1.安装 cordova
yarn global add cordova

2.创建一个 cordova 项目
cordova create 

3.进入项目,添加安卓平台（iOS同理）
cordova platform add android --save

4.检查你是否具备使用 Cordova 开发/运行 An...]]></description><category></category></item><item><title><![CDATA[Node 中 CommonJS 规范]]></title><link>https://blog.youkuaiyun.com/composurext/article/details/103489364</link><guid>https://blog.youkuaiyun.com/composurext/article/details/103489364</guid><author>composurext</author><pubDate>Wed, 11 Dec 2019 11:25:35 +0800</pubDate><description><![CDATA[CommonJS 是一个很大的规范 Node 和浏览器只是借用了它的一部分精华

先来Node环境运行的结果：
# a.js

console.log('我是a.js')


无引用的情况：
# b.js

const lib = require('./a')
console.log('我是b.js')

# 运行b.js

我是a.js
我是b.js

有引用的情况：
# b.js

cons...]]></description><category></category></item><item><title><![CDATA[React+antd+Redux+Express+MongoDB实现通用后台管理系统]]></title><link>https://blog.youkuaiyun.com/composurext/article/details/103190654</link><guid>https://blog.youkuaiyun.com/composurext/article/details/103190654</guid><author>composurext</author><pubDate>Thu, 21 Nov 2019 21:02:06 +0800</pubDate><description><![CDATA[点击访问
技术栈

项目运行之前，请确保系统已经安装以下应用


node (6.0 及以上版本)
mongodb (开启状态) 安装参考
全局安装nodemon(为了node服务热启动)

yarn global add nodemon


可以参考这里安装

运行启动
# 克隆到本地
1. git clone 

# 进入后台应用目录
2. cd react-manage/server

...]]></description><category></category></item><item><title><![CDATA[mongodb建立索引]]></title><link>https://blog.youkuaiyun.com/composurext/article/details/103067203</link><guid>https://blog.youkuaiyun.com/composurext/article/details/103067203</guid><author>composurext</author><pubDate>Thu, 14 Nov 2019 14:47:55 +0800</pubDate><description><![CDATA[索引
index（索引）建索引是为了提高查询速度，要根据实际业务建立索引
const BaseModel=require('../models/base')
	const mongoose=require('mongoose')
	const {Schema}=mongoose
	const {ObjectId}=Schema
const ReplySchema=new Schema({
	con...]]></description><category></category></item><item><title><![CDATA[react-router-dom 组件之间跳转传递参数]]></title><link>https://blog.youkuaiyun.com/composurext/article/details/102865560</link><guid>https://blog.youkuaiyun.com/composurext/article/details/102865560</guid><author>composurext</author><pubDate>Fri, 01 Nov 2019 22:41:27 +0800</pubDate><description><![CDATA[方式：通过this.props.history.push的方式进入另一个组件，通过隐式传递；也可以通过query显式传递

方式一
当前组件通过路由传递一个state
 productDetail = () =&gt;{
    const data = [
      'Racing car sprays burning fuel into crowd.',
      'Japanese p...]]></description><category></category></item></channel></rss>