<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[商务合作 / 项目定制开发 / 前端一对一培训、答疑]]></title><description><![CDATA[前端三评的博客（imqd.cn）]]></description><link>https://blog.youkuaiyun.com/imqdcn</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; imqdcn]]></copyright><item><title><![CDATA[编程已经面目全非：一位 AI 编程工具作者的 11 条断言]]></title><link>https://blog.youkuaiyun.com/imqdcn/article/details/169849230</link><guid>https://blog.youkuaiyun.com/imqdcn/article/details/169849230</guid><author>imqdcn</author><pubDate>Mon, 02 Nov 2026 21:26:55 +0800</pubDate><description><![CDATA[程序员讨论 AI，讨论的是它会抢走多少程序员的饭碗。很少有人意识到另一件事：饭碗还在不在是一回事，碗里的东西，已经换了。AI 推翻了传统的软件开发。即使将来泡沫破灭，AI 也不可能从编程工具链里消失——它已经永久成为软件开发的一部分，再也无法移除。Thorsten Ball，一位长期在做 AI 编程工具的一线开发者，最近在 X 上发了一条长文，讲 AI 到底改变了编程的哪些方面。]]></description><category></category></item><item><title><![CDATA[程序员转型又多了条叫FDE的路]]></title><link>https://blog.youkuaiyun.com/imqdcn/article/details/167282809</link><guid>https://blog.youkuaiyun.com/imqdcn/article/details/167282809</guid><author>imqdcn</author><pubDate>Thu, 08 Oct 2026 21:18:12 +0800</pubDate><description><![CDATA[AI时代，程序员的核心竞争力正从“会写代码”转向“用AI落地”。FDE（前线部署工程师）作为新兴岗位，强调深入客户现场，解决真实业务问题，交付可持续使用的系统。其关键在于懂业务、能沟通、重结果，推动AI真正融入流程。技术人若具备问题洞察、快速交付与责任意识，转型FDE将是突破瓶颈的新路径。]]></description><category></category></item><item><title><![CDATA[在用copilot专业版折腾了几个小时后，我总结出了2条宝贵的经验]]></title><link>https://blog.youkuaiyun.com/imqdcn/article/details/149334347</link><guid>https://blog.youkuaiyun.com/imqdcn/article/details/149334347</guid><author>imqdcn</author><pubDate>Mon, 14 Jul 2025 16:58:32 +0800</pubDate><description><![CDATA[PDF预览数字变方块问题的解决方案：通过升级pdfjs-dist版本到2.2.228以上并调整API调用方式解决字体加载问题。文章详细记录了从问题排查到解决的全过程，包括浏览器警告分析、版本对比测试、正确的升级步骤（npm安装+API调整），以及使用AI辅助调试的失败经验总结。特别强调：1）升级前做好Git备份；2）开发者需掌握问题本质而非过度依赖AI。最终成功修复PDF渲染异常，数字显示恢复正常。]]></description><category></category></item><item><title><![CDATA[收到微信小程序风控提示？你的小程序可能已经在泄露用户信息，只因一个 session_key]]></title><link>https://blog.youkuaiyun.com/imqdcn/article/details/147901492</link><guid>https://blog.youkuaiyun.com/imqdcn/article/details/147901492</guid><author>imqdcn</author><pubDate>Mon, 12 May 2025 17:51:29 +0800</pubDate><description><![CDATA[本文介绍了在开发微信小程序时，使用Strapi v5作为后端处理微信登录授权的经验。作者最初在接口中明文返回了微信的session_key，导致收到微信的风控提示。session_key是微信用于解密敏感数据的重要密钥，不应在通信中明文传输，以避免安全风险。正确的做法是客户端通过wx.login()获取code并发送给服务端，服务端再通过微信接口换取session_key和openid，并生成自定义token返回给客户端，后续请求仅携带token。文章强调了session_key的敏感性，并提供了正确的登录]]></description><category></category></item><item><title><![CDATA[strapi v5-无插件打通微信openid登录授权，strapi确实是前端能快速上手的绝佳后端API]]></title><link>https://blog.youkuaiyun.com/imqdcn/article/details/147900387</link><guid>https://blog.youkuaiyun.com/imqdcn/article/details/147900387</guid><author>imqdcn</author><pubDate>Mon, 12 May 2025 17:10:17 +0800</pubDate><description><![CDATA[在Strapi v5中，由于原有的微信登录插件已停止维护，作者决定自行开发一个自定义API来实现微信登录功能。该API通过接收前端传来的微信code，调用微信服务器API获取openid，并将其返回给前端或存储到Strapi数据库中。开发步骤包括：创建API端点、编辑控制器以处理code和获取openid、添加API路由、配置.env文件中的微信小程序AppID和密钥，以及必要时配置content-types。此自定义API不仅解决了插件维护问题，还提供了更灵活的微信登录功能实现方式。]]></description><category></category></item><item><title><![CDATA[WordPress报502错误问题解决-php-fpm-84.service loaded failed failed LSB: starts php-fpm]]></title><link>https://blog.youkuaiyun.com/imqdcn/article/details/146094182</link><guid>https://blog.youkuaiyun.com/imqdcn/article/details/146094182</guid><author>imqdcn</author><pubDate>Fri, 07 Mar 2025 13:55:21 +0800</pubDate><description><![CDATA[导致502的问题很多，比如站点访问量太大，站点受到了攻击等，但是我看了后台，重启了Nginx，也没解决。现在遇到问题，首选就用。如果你在开发WordPress时遇到了问题，可以在下方与我联系，作为你的WordPress顾问。所以很简单的解决方式就是将WordPress的PHP版本切换为7.4即可。表示我的环境中安装了2个php版本，其中Nginx 试图使用。在访问站点时，一直报502，而两天前还能正常访问。站点的，现在它的服务遇到了问题，导致502问题。所以归根结底还是服务器配置不够，并且因为我开启了。]]></description><category></category></item><item><title><![CDATA[strapi4，strapi5最新版安装部署教程]]></title><link>https://blog.youkuaiyun.com/imqdcn/article/details/145783859</link><guid>https://blog.youkuaiyun.com/imqdcn/article/details/145783859</guid><author>imqdcn</author><pubDate>Fri, 21 Feb 2025 18:46:09 +0800</pubDate><description><![CDATA[无头CMS strapi v4、strapi v5最新安装部署教程]]></description><category></category></item><item><title><![CDATA[【npm依赖包介绍】借助rimraf依赖包，在用npm run build构建项目时，清空dist目录，避免新旧混合]]></title><link>https://blog.youkuaiyun.com/imqdcn/article/details/144990401</link><guid>https://blog.youkuaiyun.com/imqdcn/article/details/144990401</guid><author>imqdcn</author><pubDate>Tue, 07 Jan 2025 17:49:23 +0800</pubDate><description><![CDATA[rimraf是一个用于删除文件和文件夹的 Node.js 包。它的名字来源于 Unix 命令rm -rf，其中rm是删除命令，-rf选项表示递归删除文件和文件夹，并且不提示确认。]]></description><category></category></item><item><title><![CDATA[【bug修复系列】package.json中“type”: “module”的作用，解决明明是ES module却报是CommonJS的问题]]></title><link>https://blog.youkuaiyun.com/imqdcn/article/details/144984497</link><guid>https://blog.youkuaiyun.com/imqdcn/article/details/144984497</guid><author>imqdcn</author><pubDate>Tue, 07 Jan 2025 14:11:21 +0800</pubDate><description><![CDATA[当设置 “type”: “module”,时，允许package 中的所有的.js模块当做ES modules，但是如果该配置缺失或者设置为了"commonjs"，那么就会当做CommonJS模块来处理。按道理，不会有这种问题，因为其他模块也是这样，但是没有报错。而我的问题恰好是因为没有设置的原因，导致在构建时，当做了。Error [ERR_REQUIRE_ESM]: require() of ES Module D:\AIProject\translationChrome\node_modules\vit]]></description><category></category></item><item><title><![CDATA[wordpress开发之实现使用第三方库qrcode-generator生成二维码并上传和展示]]></title><link>https://blog.youkuaiyun.com/imqdcn/article/details/144927683</link><guid>https://blog.youkuaiyun.com/imqdcn/article/details/144927683</guid><author>imqdcn</author><pubDate>Sat, 04 Jan 2025 12:15:15 +0800</pubDate><description><![CDATA[比如我刚刚说的保函即为一种自定义文章类型，在该类型下，来生成保函信息和二维码的查询url等。也就是说二维码包含的信息可以是任意的，本文所实现的无非就是将特定的url转为二维码，并且将二维码图片上传到服务器而已。因为我不需要在媒体库中管理，所以，并没有调用上传到媒体库的钩子函数，无法在后台的媒体库中看到。这样就可以保存二维码到wp的上传目录，且写入该二维码的url到当前文章的qrCode字段了。所以最好的方式就是直接用。那么如何生成呢，我的思路就是，在保存保函的时候，通过wp的保存文章的钩子函数。]]></description><category></category></item><item><title><![CDATA[wordpress主题开发之function.php的10大作用]]></title><link>https://blog.youkuaiyun.com/imqdcn/article/details/144927561</link><guid>https://blog.youkuaiyun.com/imqdcn/article/details/144927561</guid><author>imqdcn</author><pubDate>Sat, 04 Jan 2025 12:06:05 +0800</pubDate><description><![CDATA[在 WordPress 中，functions.php 文件是主题的重要组成部分，它允许开发者为主题添加功能、修改默认行为以及注册新的功能或功能模块]]></description><category></category></item><item><title><![CDATA[elementUI新增date-picker，yearrange的2种方案。解决没有type=“yearrange“，不能选择年份的的问题]]></title><link>https://blog.youkuaiyun.com/imqdcn/article/details/144529634</link><guid>https://blog.youkuaiyun.com/imqdcn/article/details/144529634</guid><author>imqdcn</author><pubDate>Tue, 17 Dec 2024 11:11:16 +0800</pubDate><description><![CDATA[如果你是用按需引入的方式使用的elementUI，那么可以将下方链接中lib\date-picker.js文件，替换到node_modules\element-ui\lib\date-picker.js的同名文件；要是全局引用的可以将下方链接中lib\element-ui.common.js文件，替换到node_modules\element-ui\lib\element-ui.common.js的同名文件。就可以直接在项目中通过。要修改element-ui源码的程序员，可以将未编译的源码，下方链接中。]]></description><category></category></item><item><title><![CDATA[window系统，照片应用打开图片，但是提示操作系统找不到已输入的环境选项，请问怎么解决，以便能打开图片]]></title><link>https://blog.youkuaiyun.com/imqdcn/article/details/144312472</link><guid>https://blog.youkuaiyun.com/imqdcn/article/details/144312472</guid><author>imqdcn</author><pubDate>Sat, 07 Dec 2024 16:40:24 +0800</pubDate><description><![CDATA[这个问题可能是由于Windows系统中的照片应用程序或相关的环境变量配置问题引起的。如果你在web前端开发、面试、前端学习路线有困难可以在下方加我名片。这个问题，是我在安装了某些软件后导致的。但是它的第四点提醒了我的思路。]]></description><category></category></item><item><title><![CDATA[修改elementUI等UI组件样式的5种方法总结，哪些情况需要使用/deep/, :deep()等方式来穿透方法大全]]></title><link>https://blog.youkuaiyun.com/imqdcn/article/details/143577008</link><guid>https://blog.youkuaiyun.com/imqdcn/article/details/143577008</guid><author>imqdcn</author><pubDate>Wed, 06 Nov 2024 18:42:28 +0800</pubDate><description><![CDATA[使用全局 CSS覆盖默认的样式。通过特定类型的类名（如等）来修改特定类型的消息样式。如果在单个组件中修改样式，可以使用scoped CSS。使用JavaScript 动态添加类或修改样式，根据不同的需求动态改变样式。使用/deep/或:deep()时，通常是为了修改子组件或第三方组件库的样式。scoped CSS限制了父组件只能修改自己作用域内的样式，而通过/deep/或:deep()可以穿透这个限制，修改子组件或嵌套组件的样式。:deep()是 Vue 3 推荐的方式，而/deep/]]></description><category></category></item><item><title><![CDATA[【学员提问bug】小程序在onUnload里面调接口，用来记录退出的时间, 但是接口调用还没成功, 页面就关闭了。如何让接口在onUnload关闭前调用成功？]]></title><link>https://blog.youkuaiyun.com/imqdcn/article/details/143454547</link><guid>https://blog.youkuaiyun.com/imqdcn/article/details/143454547</guid><author>imqdcn</author><pubDate>Sat, 02 Nov 2024 18:42:48 +0800</pubDate><description><![CDATA[实时上报：可以在页面的onUnload或App的onHide中上报。延时补偿：如果离开过快导致请求未完成，可以用记录时间，在下次启动时检查并补偿上报。参考资料：https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/page-life-cycle.html如果你在web前端开发、面试、前端学习路线有困难可以在下方加我名片。免费答疑，行业深潜多年的技术牛人帮你解决bug。]]></description><category></category></item><item><title><![CDATA[CSS盒模型-怪异盒模型笔记-思维导图-案例等]]></title><link>https://blog.youkuaiyun.com/imqdcn/article/details/142661823</link><guid>https://blog.youkuaiyun.com/imqdcn/article/details/142661823</guid><author>imqdcn</author><pubDate>Mon, 30 Sep 2024 18:01:31 +0800</pubDate><description><![CDATA[可以通过修改样式display属性改变元素是以块级还是行内元素呈现，当display的值设为block时，元素将以块级方式呈现；我们把 padding 和 margin 统一地称为内边距和外边距，边框内的空白是内边距，边框外的空白是外边距。如果想让一个元素可以设置宽度高度，又让它以行内形式显示，我们可以设置display的值为inline-block。CSS盒模型本质上是一个盒子，封装周围的HTML元素，它包括：边距，边框，填充，和实际内容。内间距：指的是盒子的内容与边框的间距（4个边都有内间距）]]></description><category></category></item><item><title><![CDATA[【学员提问】在vuex4中，可以用modules划分多个模块，在pinia中怎么做？]]></title><link>https://blog.youkuaiyun.com/imqdcn/article/details/142566984</link><guid>https://blog.youkuaiyun.com/imqdcn/article/details/142566984</guid><author>imqdcn</author><pubDate>Thu, 26 Sep 2024 21:45:00 +0800</pubDate><description><![CDATA[在 Pinia 中，通过定义多个独立的 store 并在需要时组合使用，可以实现类似于 Vuex modules 的模块化管理]]></description><category></category></item><item><title><![CDATA[【学员提问】对于typescript的assert和casting，即类型断言和类型转换，我还不太理解，请结合例子梳理下知识点，并且出几道题考考我]]></title><link>https://blog.youkuaiyun.com/imqdcn/article/details/142206936</link><guid>https://blog.youkuaiyun.com/imqdcn/article/details/142206936</guid><author>imqdcn</author><pubDate>Fri, 13 Sep 2024 12:34:43 +0800</pubDate><description><![CDATA[项目中， 是 JSX 语法的一部分，表示一个空的 JSX 容器。类型断言是在 TypeScript 中告诉编译器，开发者更了解某个值的类型。通过类型断言，开发者可以明确告诉编译器这个值的类型，而不是让 TypeScript 推断其类型。在现代 TypeScript 中，推荐使用 as 语法来进行类型断言。a.没有使用 as 关键字：在这段代码中使用的是  语法来进行类型断言，这是。类型转换通常指的是在运行时将一种类型的数据转换为另一种类型。进行实际的类型转换，它仅仅是用于编译时的检查。]]></description><category></category></item><item><title><![CDATA[使用在线IDE开发而不是在本地使用vscode的5个理由]]></title><link>https://blog.youkuaiyun.com/imqdcn/article/details/142182692</link><guid>https://blog.youkuaiyun.com/imqdcn/article/details/142182692</guid><author>imqdcn</author><pubDate>Thu, 12 Sep 2024 18:11:13 +0800</pubDate><description><![CDATA[我已经在云端开发了几年了。我第一次接触云端是在我在 Meta 实习的时候，后来我将我的开发流程转移到了 CodeSandbox。云开发的概念非常简单：整个开发环境运行在服务器上，而不是您的笔记本电脑上。这是 CDE 的核心，但是每个 CDE 实现都可以非常不同。您在 CDE 上编码时首先注意到的就是它非常快。因为您运行在 VM 计算能力上，您可以访问在主流笔记本电脑上找不到的规格，这确实加快了编译时间等事情。然而，访问更多的计算能力只是使用 CDE 的众多好处之一。]]></description><category></category></item><item><title><![CDATA[腾讯云轻量云服务器打开报服务器暂时未响应，请刷新页面并重试问题解决]]></title><link>https://blog.youkuaiyun.com/imqdcn/article/details/141332297</link><guid>https://blog.youkuaiyun.com/imqdcn/article/details/141332297</guid><author>imqdcn</author><pubDate>Mon, 19 Aug 2024 18:40:20 +0800</pubDate><description><![CDATA[我检查了下，没有该问题，即使退出vpn，也无法解决该问题。1、首先确定，是不是被禁止在公司访问腾讯云的问题，比如某些IP被禁止。后面用自己的热点上，也是同样的问题，该原因排除。免费答疑，行业深潜多年的技术牛人帮你解决bug。这种跨域肯定不是预先有的，也就是如果是腾讯开发工程师配置不当，导致的跨域问题，那也不是我能发现的，他们早就解决了。3、我打开浏览器开发者工具，看控制台报了什么错，结果发现了如下。所以，肯定是因为我的浏览器有什么跨域的插件，导致了这种情况。在我浏览器中，我安装了一款允许跨域的插件，]]></description><category></category></item></channel></rss>