<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[halations的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/halations</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; halations]]></copyright><item><title><![CDATA[Taro4开发微信/支付宝小程序支付功能]]></title><link>https://blog.youkuaiyun.com/halations/article/details/155986199</link><guid>https://blog.youkuaiyun.com/halations/article/details/155986199</guid><author>halations</author><pubDate>Tue, 16 Dec 2025 17:31:17 +0800</pubDate><description><![CDATA[taro4共用一套代码实现支付宝、微信小程序支付功能]]></description><category></category></item><item><title><![CDATA[antd Form表单实践模板（Form.useForm）]]></title><link>https://blog.youkuaiyun.com/halations/article/details/154563756</link><guid>https://blog.youkuaiyun.com/halations/article/details/154563756</guid><author>halations</author><pubDate>Sat, 08 Nov 2025 10:32:47 +0800</pubDate><description><![CDATA[antd Form表单快速上手模板，采用Form.useForm]]></description><category></category></item><item><title><![CDATA[qs-一个序列化和反序列化的JavaScript库]]></title><link>https://blog.youkuaiyun.com/halations/article/details/134576177</link><guid>https://blog.youkuaiyun.com/halations/article/details/134576177</guid><author>halations</author><pubDate>Thu, 23 Nov 2023 14:31:48 +0800</pubDate><description><![CDATA[qs.parse]]></description><category></category></item><item><title><![CDATA[封装一个常用的Enum]]></title><link>https://blog.youkuaiyun.com/halations/article/details/132214959</link><guid>https://blog.youkuaiyun.com/halations/article/details/132214959</guid><author>halations</author><pubDate>Thu, 10 Aug 2023 17:58:42 +0800</pubDate><description><![CDATA[封装Enum]]></description><category></category></item><item><title><![CDATA[前端进阶之React原理、源码解读-下篇]]></title><link>https://blog.youkuaiyun.com/halations/article/details/123073519</link><guid>https://blog.youkuaiyun.com/halations/article/details/123073519</guid><author>halations</author><pubDate>Tue, 22 Feb 2022 17:37:04 +0800</pubDate><description><![CDATA[不折腾的前端，和咸鱼有什么区别！]]></description><category></category></item><item><title><![CDATA[前端进阶之React原理、源码解读-上篇]]></title><link>https://blog.youkuaiyun.com/halations/article/details/122984824</link><guid>https://blog.youkuaiyun.com/halations/article/details/122984824</guid><author>halations</author><pubDate>Thu, 17 Feb 2022 18:32:44 +0800</pubDate><description><![CDATA[不折腾的前端，和咸鱼有什么区别！]]></description><category></category></item><item><title><![CDATA[前端进阶之TS总结]]></title><link>https://blog.youkuaiyun.com/halations/article/details/122432280</link><guid>https://blog.youkuaiyun.com/halations/article/details/122432280</guid><author>halations</author><pubDate>Tue, 11 Jan 2022 20:02:11 +0800</pubDate><description><![CDATA[TS知识点总结]]></description><category></category></item><item><title><![CDATA[前端进阶之React VDom的理解]]></title><link>https://blog.youkuaiyun.com/halations/article/details/122377054</link><guid>https://blog.youkuaiyun.com/halations/article/details/122377054</guid><author>halations</author><pubDate>Sat, 08 Jan 2022 10:49:28 +0800</pubDate><description><![CDATA[1.虚拟 DOM

通过 3 个要点讲解虚拟 DOM：

描述浏览器的渲染过程
	真实 DOM 操作昂贵，所以需要虚拟 DOM
	Diff简要做了什么，key在当中扮演什么角色
1.1要点：浏览器的渲染过程

创建 DOM 树。用 HTML 解析器分析 HTML 元素，创建一棵 DOM 树。
	创建 CSS 规则树（CSS rule tree）。用 CSS 解析器解析 CSS 文件和inline样式，生成页面的样式表。
	创建 Render 树。将 DOM 树和 CSS 规则树关联起来，构建 Ren...]]></description><category></category></item><item><title><![CDATA[前端进阶之PromiseA+规范]]></title><link>https://blog.youkuaiyun.com/halations/article/details/122152338</link><guid>https://blog.youkuaiyun.com/halations/article/details/122152338</guid><author>halations</author><pubDate>Sun, 26 Dec 2021 10:54:39 +0800</pubDate><description><![CDATA[PromiseA+规范文档

术语

promise 是一个有then方法的对象或者是函数，行为遵循本规范
	thenable 是一个有then方法的对象或者是函数
	value 是promise状态成功时的值，也就是resolve的参数, 包括各种数据类型, 也包括undefined/thenable或者是 promise
	reason 是promise状态失败时的值, 也就是reject的参数, 表示拒绝的原因
	exception 是一个使用throw抛出的异常值
规范

Promise Stat.]]></description><category></category></item><item><title><![CDATA[闭包的概念及应⽤场景]]></title><link>https://blog.youkuaiyun.com/halations/article/details/121910100</link><guid>https://blog.youkuaiyun.com/halations/article/details/121910100</guid><author>halations</author><pubDate>Tue, 14 Dec 2021 11:45:49 +0800</pubDate><description><![CDATA[定义 


闭包是指那些能够访问⾃由变量的函数。

⾃由变量是指在函数中使⽤的，但既不是函数参数也不是函数局部变量的变量。


	从理论⻆度：所有的函数都是闭包。因为它们都在创建的时候就将上层上下⽂的数据保存起来了。哪怕是简单的全局变量也是如此，因为函数中访问全局变量就相当于是在访问⾃由变量，这个时候使⽤最外层的作⽤域。
	
	
	从实践⻆度：以下函数才算是闭包：即使创建它的上下⽂已经销毁，它仍然存在（⽐如，内部函数从⽗函数中返回）在代码中引⽤了⾃由变量
	
应用场景

1.柯⾥化函数

柯⾥化的⽬的在于：]]></description><category></category></item><item><title><![CDATA[Docker、Dockerfile基本使用]]></title><link>https://blog.youkuaiyun.com/halations/article/details/121588266</link><guid>https://blog.youkuaiyun.com/halations/article/details/121588266</guid><author>halations</author><pubDate>Sun, 28 Nov 2021 11:02:34 +0800</pubDate><description><![CDATA[基本命令

Linux安装docker


yum install -y yum-utils
yum-config-manager \\
    --add-repo \\
    &lt;https://download.docker.com/linux/centos/docker-ce.repo&gt;

# 安装最新的docker
yum install docker-ce docker-ce-cli containerd.io

# 安装执行版本
yum list docker-ce --showd]]></description><category></category></item><item><title><![CDATA[Javascript模块规范（CommonJS、AMD、CMD、ESM）]]></title><link>https://blog.youkuaiyun.com/halations/article/details/121560663</link><guid>https://blog.youkuaiyun.com/halations/article/details/121560663</guid><author>halations</author><pubDate>Fri, 26 Nov 2021 17:34:30 +0800</pubDate><description><![CDATA[​CommonJS

node.js的模块系统，就是参照CommonJS规范实现的。在CommonJS中，有一个全局性方法require()，用于加载模块。假定有一个数学模块math.js，就可以像下面这样加载。


var math = require('math');
math.add(2,3); // 5    

CommonJS的特点

所有代码都运行在模块作用域，不会污染全局作用域；
	模块是同步加载的，即只有加载完成，才能执行后面的操作；
	模块在首次执行后就会缓存，再次加载只返回缓存结果，如]]></description><category></category></item><item><title><![CDATA[nodejs-websocket简单实现多人聊天]]></title><link>https://blog.youkuaiyun.com/halations/article/details/120460406</link><guid>https://blog.youkuaiyun.com/halations/article/details/120460406</guid><author>halations</author><pubDate>Fri, 24 Sep 2021 18:07:55 +0800</pubDate><description><![CDATA[文件目录如下：





使用nodemon热更新启动server.js

目的是在局域网内能访问到聊天界面


nodemon server.js


代码如下


const Koa = require('koa')
const path = require('path')
const static = require('koa-static')
const Router = require('koa-router')

let router = new Router()
const app = ...]]></description><category></category></item><item><title><![CDATA[koa-static静态托管]]></title><link>https://blog.youkuaiyun.com/halations/article/details/119734702</link><guid>https://blog.youkuaiyun.com/halations/article/details/119734702</guid><author>halations</author><pubDate>Mon, 16 Aug 2021 15:53:40 +0800</pubDate><description><![CDATA[文件目录如下：

使用nodemon热更新启动server.js


nodemon server.js


代码如下


const Koa = require('koa')
const path = require('path')
const static = require('koa-static')
const Router = require('koa-router')
const request = require('request')
let router = new Router()
c..]]></description><category></category></item><item><title><![CDATA[实现html转pdf、多个pdf生成zip]]></title><link>https://blog.youkuaiyun.com/halations/article/details/119540090</link><guid>https://blog.youkuaiyun.com/halations/article/details/119540090</guid><author>halations</author><pubDate>Thu, 12 Aug 2021 18:09:47 +0800</pubDate><description><![CDATA[插件：


	jspdf
	
	
	html2canvas
	
	
	jszip
	
	
	file-saver
	
实现：

先写好html模版
	捕捉dom通过html2canvas生成图片
	通过jspdf生成pdf
	pdf先不实例化，等所有pdf生成完之后



util.ts



import jsPDF from 'jspdf'
import html2canvas from 'html2canvas'

export const printPDF = async (domClassName]]></description><category></category></item><item><title><![CDATA[react native实现文件下载、编辑、上传功能]]></title><link>https://blog.youkuaiyun.com/halations/article/details/118764755</link><guid>https://blog.youkuaiyun.com/halations/article/details/118764755</guid><author>halations</author><pubDate>Thu, 15 Jul 2021 18:28:58 +0800</pubDate><description><![CDATA[插件：react-native-fs

GitHub连接：https://github.com/itinance/react-native-fs#readme

实现：

文件下载保存到本地
	读取、编辑文件
	上传文件
	删除文件
API参考：

pathAPI


```JavaScript
MainBundlePath (String) 主包目录的绝对路径（在 Android 上不可用）
CachesDirectoryPath (String) 缓存目录的绝对路径
ExternalCachesDire]]></description><category></category></item><item><title><![CDATA[React Native剪贴板功能]]></title><link>https://blog.youkuaiyun.com/halations/article/details/118091577</link><guid>https://blog.youkuaiyun.com/halations/article/details/118091577</guid><author>halations</author><pubDate>Mon, 21 Jun 2021 17:47:19 +0800</pubDate><description><![CDATA[getString: 读取剪贴板内容

setString：设置剪贴板内容


import React from 'react'
import { Clipboard, TouchableOpacity, Text,Toast } from 'react-native'

function index(){
    return (
        &lt;TouchableOpacity
            onPress={()=&gt;{
              Clipboard.set.]]></description><category></category></item><item><title><![CDATA[浏览器页面呈现与浏览器缓存]]></title><link>https://blog.youkuaiyun.com/halations/article/details/114822485</link><guid>https://blog.youkuaiyun.com/halations/article/details/114822485</guid><author>halations</author><pubDate>Mon, 15 Mar 2021 11:09:16 +0800</pubDate><description><![CDATA[浏览器相关知识点]]></description><category></category></item><item><title><![CDATA[前端进阶之垃圾回收机制]]></title><link>https://blog.youkuaiyun.com/halations/article/details/114819081</link><guid>https://blog.youkuaiyun.com/halations/article/details/114819081</guid><author>halations</author><pubDate>Mon, 15 Mar 2021 09:49:51 +0800</pubDate><description><![CDATA[概念

原始数据类型是存储在栈空间中的，引用类型的数据是存储在堆空间中的。

不过有些数据被使用之后，可能就不再需要了，我们把这种数据称为垃圾数据。

如果这些垃圾数据一直保存在内存中，那么内存会越用越多。

所以我们需要对这些垃圾数据进行回收，以释放有限的内存空间。

这时候就引入了垃圾回收机制。

栈垃圾回收

当函数执行结束，JavaScript 引擎通过向下移动ESP指针（记录调用栈当前执行状态的指针），来销毁该函数保存在栈中的执行上下文（变量环境、词法环境、this、outer）。


fun..]]></description><category></category></item><item><title><![CDATA[前端进阶之原型、原型链]]></title><link>https://blog.youkuaiyun.com/halations/article/details/109578000</link><guid>https://blog.youkuaiyun.com/halations/article/details/109578000</guid><author>halations</author><pubDate>Tue, 10 Nov 2020 18:12:01 +0800</pubDate><description><![CDATA[Javascript底层原理之原型、原型链]]></description><category></category></item></channel></rss>