<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[sma2mmm的博客]]></title><description><![CDATA[记录前进脚步的点滴]]></description><link>https://blog.youkuaiyun.com/sma2mmm</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sma2mmm]]></copyright><item><title><![CDATA[惹毛我的手动建站-免费的图片压缩网站]]></title><link>https://blog.youkuaiyun.com/sma2mmm/article/details/161285971</link><guid>https://blog.youkuaiyun.com/sma2mmm/article/details/161285971</guid><author>sma2mmm</author><pubDate>Thu, 21 May 2026 14:54:09 +0800</pubDate><description><![CDATA[0基础建站；购买域名；购买云服务器以及配置；图片压缩]]></description><category></category></item><item><title><![CDATA[Commonjs 模块输出值的拷贝-难点剖析]]></title><link>https://blog.youkuaiyun.com/sma2mmm/article/details/157213190</link><guid>https://blog.youkuaiyun.com/sma2mmm/article/details/157213190</guid><author>sma2mmm</author><pubDate>Wed, 21 Jan 2026 13:56:47 +0800</pubDate><description><![CDATA[该代码示例演示了Node.js模块导出时基本类型和引用类型的区别。当导出基本类型num时，会进行值拷贝，模块内外num互不影响；而导出对象user时，由于是引用类型，模块内外共享同一内存地址，修改会相互影响。示例中调用addNum()只修改模块内num，而setName()会同时影响模块内外user.name的值。这清楚地展示了Node.js模块导出时值传递和引用传递的不同行为特征。]]></description><category></category></item><item><title><![CDATA[浏览器中输入URL后发生了什么-一览表]]></title><link>https://blog.youkuaiyun.com/sma2mmm/article/details/148629605</link><guid>https://blog.youkuaiyun.com/sma2mmm/article/details/148629605</guid><author>sma2mmm</author><pubDate>Fri, 13 Jun 2025 12:00:45 +0800</pubDate><description><![CDATA[浏览器输入URL后的解析过程；dom树，渲染树；js解析]]></description><category></category></item><item><title><![CDATA[视频机码流播放方案Flvjs vs Jessibuca]]></title><link>https://blog.youkuaiyun.com/sma2mmm/article/details/146987414</link><guid>https://blog.youkuaiyun.com/sma2mmm/article/details/146987414</guid><author>sma2mmm</author><pubDate>Thu, 03 Apr 2025 19:14:22 +0800</pubDate><description><![CDATA[flv是bilibili的前开发人员写的，使用和点星数量还行，但是该开发人员离职，不维护了。FLVJS流畅度完虐Jessibuca,但是我用的是开源版的Jessibuca。jessibuca因为有Pro收费版，所以一直在维护，而且有专门的群解答问题。jessibuca支持flv/hls/mp4。flvjs支持flv和mp4。2、播放的视频流格式。]]></description><category></category></item><item><title><![CDATA[微前端实现方案对比Qiankun VS npm组件]]></title><link>https://blog.youkuaiyun.com/sma2mmm/article/details/146872292</link><guid>https://blog.youkuaiyun.com/sma2mmm/article/details/146872292</guid><author>sma2mmm</author><pubDate>Mon, 31 Mar 2025 17:35:07 +0800</pubDate><description><![CDATA[npm组件：开发修改比较繁琐，特别是有嵌套比较深的底层组件，整个改动需要更新嵌套流程的所有npm项目；1、Qiankun是典型的微前端架构，侧重构建多个独立前端应用协同工作的架构，主应用负责自用用的加载、卸载和通信；NPM组件：技术栈依赖，除了用JS封装的组件可以通用之外，React封装的组件只能在React中应用，Vue的组件只能在Vue中应用。Qiankun：独立开发部署，不影响其他子应用和主应用，部署比较复杂，主要是自应用和主应用的部署顺序和版本兼容问题。Qiankun：大型复杂，多团队协作的项目；]]></description><category></category></item><item><title><![CDATA[Webpack 模块联邦 vs npm 私服]]></title><link>https://blog.youkuaiyun.com/sma2mmm/article/details/146320438</link><guid>https://blog.youkuaiyun.com/sma2mmm/article/details/146320438</guid><author>sma2mmm</author><pubDate>Mon, 17 Mar 2025 17:17:57 +0800</pubDate><description><![CDATA[模块联邦允许在运行时动态加载远程模块，无需重新构建或发布应用。适合需要频繁更新或动态加载的场景。每个应用可以独立开发和部署，模块联邦在运行时将它们组合在一起。适合微前端架构或跨团队协作。可以通过shared配置共享依赖（如 React、Lodash），避免重复加载。减少包体积，提升性能。可以直接复用远程应用的模块，避免重复开发。支持按需加载，减少初始加载时间动态加载远程模块依赖于网络，可能增加延迟。在网络较差的环境中，性能可能受到影响。配置和使用模块联邦需要一定的学习成本。]]></description><category></category></item><item><title><![CDATA[Webpack 模块联邦 VS npm 私服]]></title><link>https://blog.youkuaiyun.com/sma2mmm/article/details/146316153</link><guid>https://blog.youkuaiyun.com/sma2mmm/article/details/146316153</guid><author>sma2mmm</author><pubDate>Mon, 17 Mar 2025 17:11:31 +0800</pubDate><description><![CDATA[Webpack 模块联邦：可以在多个独立应用之间共享和复用核心业务逻辑，避免代码重复，提高开发效率和维护性模块联邦是Webpack 5引入的功能，允许将应用拆分为多个独立的模块，并在运行时动态加载和共享这些模块。Host（宿主应用）：消费其他应用模块的应用。Remote（远程应用）：提供模块给其他应用使用的应用。Shared（共享模块）：在多个应用之间共享的依赖（如 React、Lodash）]]></description><category></category></item><item><title><![CDATA[小程序蓝牙接入流程图]]></title><link>https://blog.youkuaiyun.com/sma2mmm/article/details/146240383</link><guid>https://blog.youkuaiyun.com/sma2mmm/article/details/146240383</guid><author>sma2mmm</author><pubDate>Thu, 13 Mar 2025 19:36:30 +0800</pubDate><description><![CDATA[小程序，蓝牙，]]></description><category></category></item><item><title><![CDATA[作用域易忽略知识点总结]]></title><link>https://blog.youkuaiyun.com/sma2mmm/article/details/146231592</link><guid>https://blog.youkuaiyun.com/sma2mmm/article/details/146231592</guid><author>sma2mmm</author><pubDate>Thu, 13 Mar 2025 15:22:07 +0800</pubDate><description><![CDATA[作用域，变量提升，JS代码月度]]></description><category></category></item><item><title><![CDATA[为什么append到父节点后的子节点发生修改，父节点打印出来的也会变化]]></title><link>https://blog.youkuaiyun.com/sma2mmm/article/details/133644279</link><guid>https://blog.youkuaiyun.com/sma2mmm/article/details/133644279</guid><author>sma2mmm</author><pubDate>Sat, 07 Oct 2023 16:30:51 +0800</pubDate><description><![CDATA[3）通过BatteryCapacityDiv对象修改值内存中的值改变，但是BatteryCapacityDiv对象、parentNode中的key对应的内存地址并没有改变。2）使 parentNode 指向 BatteryCapacityDiv 对象, parentNode也对应 BatteryCapacityDiv 的内存地址。今天走查前端代码，发现历史代码写出来的不规范，但是他还是在生产运行了很久的代码，仔细思量后发现，其实原理是对的，只是看起来不美观，不易读而已。看出来没，一模一样，怎么理解呢？]]></description><category></category></item><item><title><![CDATA[一个域名,无任何变化，实现新旧版本的无缝切换]]></title><link>https://blog.youkuaiyun.com/sma2mmm/article/details/129048663</link><guid>https://blog.youkuaiyun.com/sma2mmm/article/details/129048663</guid><author>sma2mmm</author><pubDate>Wed, 15 Feb 2023 19:13:56 +0800</pubDate><description><![CDATA[nginx 的location目录增加 /new的配置，直接代理到新版本；新版通过域名+/new访问：eg:www.test.com/new。1、新旧版本的切换设置cookie，通过isNew来进行标记。2、nginx中获取标记的方式$cookie_isNew;3、默认进入旧版，旧版访问方式：www.test.com;加一个路径，作为新版本的访问方式，配置nginx实现。旧版直接通过域名访问；]]></description><category></category></item><item><title><![CDATA[webstorm 中回退到git某个历史版本]]></title><link>https://blog.youkuaiyun.com/sma2mmm/article/details/127528357</link><guid>https://blog.youkuaiyun.com/sma2mmm/article/details/127528357</guid><author>sma2mmm</author><pubDate>Wed, 26 Oct 2022 10:57:57 +0800</pubDate><description><![CDATA[git 版本回退实操记录]]></description><category></category></item><item><title><![CDATA[typescript 基础知识]]></title><link>https://blog.youkuaiyun.com/sma2mmm/article/details/127387655</link><guid>https://blog.youkuaiyun.com/sma2mmm/article/details/127387655</guid><author>sma2mmm</author><pubDate>Tue, 18 Oct 2022 14:15:43 +0800</pubDate><description><![CDATA[typescript,基础]]></description><category></category></item><item><title><![CDATA[typescript+rollup打包SDK学习摘要]]></title><link>https://blog.youkuaiyun.com/sma2mmm/article/details/76811193</link><guid>https://blog.youkuaiyun.com/sma2mmm/article/details/76811193</guid><author>sma2mmm</author><pubDate>Tue, 18 Oct 2022 10:36:32 +0800</pubDate><description><![CDATA[typescript,rollup]]></description><category></category></item><item><title><![CDATA[vscode 使用nvm管理node版本采坑解决指南]]></title><link>https://blog.youkuaiyun.com/sma2mmm/article/details/78875306</link><guid>https://blog.youkuaiyun.com/sma2mmm/article/details/78875306</guid><author>sma2mmm</author><pubDate>Mon, 21 Mar 2022 11:05:46 +0800</pubDate><description><![CDATA[vscode 
nvm采坑]]></description><category></category></item><item><title><![CDATA[用户在浏览器输入URL或者跳转到一个URL后发生了什么]]></title><link>https://blog.youkuaiyun.com/sma2mmm/article/details/88574369</link><guid>https://blog.youkuaiyun.com/sma2mmm/article/details/88574369</guid><author>sma2mmm</author><pubDate>Fri, 15 Mar 2019 15:42:23 +0800</pubDate><description><![CDATA[一、从URL到页面渲染的整个过程

1 处理用户输入

2 开始导航

3 读取响应

4 查找渲染进程

5 确认导航

6 渲染页面

二、每一步做了哪些事情

1 处理用户的输入

浏览器的UI 线程处理用户的输入，判断是跳转过来的还是用户自己的输入

判断依据是请求报文中referer这个参数，值是NUll，用户自己手动输入

2 开始导航

用户敲了回车之后，监听用户行为的UI线程告诉n...]]></description><category></category></item><item><title><![CDATA[小程序开发总结]]></title><link>https://blog.youkuaiyun.com/sma2mmm/article/details/88022357</link><guid>https://blog.youkuaiyun.com/sma2mmm/article/details/88022357</guid><author>sma2mmm</author><pubDate>Thu, 28 Feb 2019 12:43:18 +0800</pubDate><description><![CDATA[注意

同一套代码应用于不同小程序时，appId一定要切换

一、cover-view


1、只支持overflow-y:auto;不支持横向滚动  
2、cover-view 样式实时更新有问题，不能通过判断更新样式



二、web-view


1、内嵌h5的jssdk最好切换至版本1.3.2；支持返回小程序
2、内嵌h5用到公众号的功能（例如扫一扫），使用公众号的APPid和APPSe...]]></description><category></category></item><item><title><![CDATA[关于OCR身份证识别]]></title><link>https://blog.youkuaiyun.com/sma2mmm/article/details/86313810</link><guid>https://blog.youkuaiyun.com/sma2mmm/article/details/86313810</guid><author>sma2mmm</author><pubDate>Fri, 11 Jan 2019 19:30:45 +0800</pubDate><description><![CDATA[PC端输入漫长的身份证号码，想想还可以接受；

手机端输入。。。。

然后我们准备接入OCR，发现微信里也有，要不用用看，反正我没用，链接贴出来

https://mp.weixin.qq.com/wiki?t=resource/res_main&amp;amp;id=21516712284rHWMX

看到社区一堆吐槽，还要发邮件申请。。

看到百度云，腾讯云，阿里云。。都已经成熟，果断弃坑，转向百度云...]]></description><category></category></item><item><title><![CDATA[常见问题总结]]></title><link>https://blog.youkuaiyun.com/sma2mmm/article/details/84952262</link><guid>https://blog.youkuaiyun.com/sma2mmm/article/details/84952262</guid><author>sma2mmm</author><pubDate>Tue, 11 Dec 2018 11:35:30 +0800</pubDate><description><![CDATA[1 jquery中attr和prop的区别

对于HTML元素本身就带有的固有属性，在处理时，使用prop方法。
	对于HTML元素我们自己自定义的DOM属性，在处理时，使用attr方法
上面的描述也许有点模糊，举几个例子就知道了。 


&amp;lt;a href=&quot;http://www.baidu.com&quot; target=&quot;_self&quot; class=&quot;btn&quot;&amp;gt;百度&amp;lt;/a&amp;gt;

 这...]]></description><category></category></item><item><title><![CDATA[gulp 配置环境变量]]></title><link>https://blog.youkuaiyun.com/sma2mmm/article/details/84783085</link><guid>https://blog.youkuaiyun.com/sma2mmm/article/details/84783085</guid><author>sma2mmm</author><pubDate>Tue, 04 Dec 2018 10:26:58 +0800</pubDate><description><![CDATA[通过 process.argv 来获取通过命令行传入的参数

process 对象是一个全局变量，它提供当前 Node.js 进程的有关信息，以及控制当前 Node.js 进程。 因为是全局变量，所以无需使用 require()。

process.argv 属性返回一个数组，这个数组包含了启动Node.js进程时的命令行参数。第一个元素为process.execPath。如果需要获取argv[0...]]></description><category></category></item></channel></rss>