<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[chenjixue的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/chenjixue</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; chenjixue]]></copyright><item><title><![CDATA[记录下我理解的安卓，鸿蒙，ios, rn , fullter, Jetpack Compose,react 的相似与不同]]></title><link>https://blog.youkuaiyun.com/chenjixue/article/details/160235419</link><guid>https://blog.youkuaiyun.com/chenjixue/article/details/160235419</guid><author>chenjixue</author><pubDate>Fri, 17 Apr 2026 10:08:56 +0800</pubDate><description><![CDATA[前提说明本人注重实操主意对理论的理解有可能不对。]]></description><category></category></item><item><title><![CDATA[阿里lowcode低码引擎源码（二）设计器渲染]]></title><link>https://blog.youkuaiyun.com/chenjixue/article/details/150470892</link><guid>https://blog.youkuaiyun.com/chenjixue/article/details/150470892</guid><author>chenjixue</author><pubDate>Tue, 14 Oct 2025 13:30:10 +0800</pubDate><description><![CDATA[之前有写一批关于低代码引擎代码大体框架的文章，看这篇之前可以先看看那篇，读不懂的地方可以评论我即使更新。本期主要讲解设计器是如何注册资产包和渲染器renderer是如何渲染shema，这次代码过于庞大不适合像上期那样展示大量代码，本期主要讲解概率和实现方式在进入渲染流程之前先了解一些对象在本轮渲染的作用。]]></description><category></category></item><item><title><![CDATA[使用wsl跑react native项目踩坑]]></title><link>https://blog.youkuaiyun.com/chenjixue/article/details/148399871</link><guid>https://blog.youkuaiyun.com/chenjixue/article/details/148399871</guid><author>chenjixue</author><pubDate>Wed, 04 Jun 2025 10:03:00 +0800</pubDate><description><![CDATA[因为有的项目组环境是全mac ,但mac和linux之类的系统和window在路径处理的方式上有点不同容易出现打包出来的文件不一样 ，"例如：windows下面是路径一般这么显示"node_modules\\xxx\\xxx",linux下面路径一般 "node_modules/xxx/xxx""，很容易出现配置与路径不匹配的问题，达不到预期效果而且容易出现意外的Bug。]]></description><category></category></item><item><title><![CDATA[windows平台打包出现exports is not defined，Linux打包不出现]]></title><link>https://blog.youkuaiyun.com/chenjixue/article/details/148364078</link><guid>https://blog.youkuaiyun.com/chenjixue/article/details/148364078</guid><author>chenjixue</author><pubDate>Sun, 01 Jun 2025 11:55:25 +0800</pubDate><description><![CDATA[例如我出问题的文件路径在window下面是“C:\\webProject\\App\\node_modules\\expensify-common\\dist\\ExpensiMark.js” 很明显匹配不上node_modules/，文件最终还是编译处理。被替换成Object.defineProperty(__webpack_exports__, \"__esModule\", ({\n  value: true\n}));而这个condition来自于。]]></description><category></category></item><item><title><![CDATA[Vue Flow实现Ai应用workflow编辑器]]></title><link>https://blog.youkuaiyun.com/chenjixue/article/details/147601400</link><guid>https://blog.youkuaiyun.com/chenjixue/article/details/147601400</guid><author>chenjixue</author><pubDate>Tue, 29 Apr 2025 10:22:43 +0800</pubDate><description><![CDATA[主要总结了下vue flow实现ai应用workflow一些核心实现点 


二、自定义节点

常规节点




循环节点 




循环内部开始节点




三、自定义边


三、 demo地址

https://github.com/chenjixue/flowEditor]]></description><category></category></item><item><title><![CDATA[选中文本后，页面聚焦到输入框时，保持文本的选中状态不取消]]></title><link>https://blog.youkuaiyun.com/chenjixue/article/details/144252431</link><guid>https://blog.youkuaiyun.com/chenjixue/article/details/144252431</guid><author>chenjixue</author><pubDate>Wed, 04 Dec 2024 23:35:44 +0800</pubDate><description><![CDATA[css方面就记得给模拟选中条的容器层（highlight_layer）加上 point-event:none让鼠标事件穿透，不然容器highlight_layer盖住了文本区会导致文本没法进行选中。这几天在写一个通过AI,生成markdown文章的需求，涉及到给markdown文章选中片段提修改点，但选中片段后 弹出输入框聚焦输入 选中文本片段会取消，尝试了网上文章常用的阻止事件冒泡等都无效。实在没办法参考了开源项目专门模拟选中效果了进行控制了。]]></description><category></category></item><item><title><![CDATA[鸿蒙next 蓝牙连接穿戴设备数据交互流程]]></title><link>https://blog.youkuaiyun.com/chenjixue/article/details/143252529</link><guid>https://blog.youkuaiyun.com/chenjixue/article/details/143252529</guid><author>chenjixue</author><pubDate>Sat, 26 Oct 2024 13:35:15 +0800</pubDate><description><![CDATA[连接之前为app开启后台长时任务防止app在后台被挂起或者冻结，导致收不到设备指令。获取apptokenId,然后判断蓝牙的可接近权限。我们以正常同步数据为例一般是为蓝牙设备写入特征码值。监听蓝牙特征码改变用于手表与手机之间同步数据。获取权限后若系统蓝牙未开启要进行开启。手动开启蓝牙扫描并监听蓝牙扫描结果。1.检查app是否有授予蓝牙权限。解析数据，以同步数据为例。]]></description><category></category></item><item><title><![CDATA[阿里lowcode低码引擎源码（一）页面ui结构和插件系统]]></title><link>https://blog.youkuaiyun.com/chenjixue/article/details/139674660</link><guid>https://blog.youkuaiyun.com/chenjixue/article/details/139674660</guid><author>chenjixue</author><pubDate>Fri, 21 Jun 2024 15:46:23 +0800</pubDate><description><![CDATA[注册插件->初始化插件为sketen添加配置->根据配置信息对应用的Area添加配置->Area调用自己的container进行配置添加->WidgetContainer添加配置的不同为自己创建不同的item->Area对象以属性的形式传入UI组件->UI组件遍历Area中WidgetContainer的items进行渲染。接下来就是 skeleton.add ->this.xxxArea.add->WidgetContainer.add解析配置->调用来自Area的handle方法。]]></description><category></category></item><item><title><![CDATA[前端组件库本地开发调试的自动化流程实现]]></title><link>https://blog.youkuaiyun.com/chenjixue/article/details/136141227</link><guid>https://blog.youkuaiyun.com/chenjixue/article/details/136141227</guid><author>chenjixue</author><pubDate>Sat, 17 Feb 2024 19:34:58 +0800</pubDate><description><![CDATA[本地开发调试阶段在 library 侧，进入 library 所在目录启动监听器（nodemon），并附上 watch 变化后重新构建和推送新包的脚本命令（Makefile）；在项目侧，注册对本地 library 的依赖并安装（yalc add @package），并启动本地开发服务（webpack-dev-server），负责调试服务和热更新等内容；在发布流程前在 library 侧，关闭监听器并编译打包（npm run build），发布新版本至 npm；]]></description><category></category></item><item><title><![CDATA[无限数据的双向虚拟滚动]]></title><link>https://blog.youkuaiyun.com/chenjixue/article/details/135953808</link><guid>https://blog.youkuaiyun.com/chenjixue/article/details/135953808</guid><author>chenjixue</author><pubDate>Wed, 31 Jan 2024 16:45:13 +0800</pubDate><description><![CDATA[很多关于虚拟滚动的文章，我发现都是基于固定庞大数据量提前计算好可滚动的高度向下滚动的虚拟滚动，]]></description><category></category></item><item><title><![CDATA[echarts折线图区域颜色使用areaStyle绘制某个折线范围值数据中间有空点显示解决方案]]></title><link>https://blog.youkuaiyun.com/chenjixue/article/details/134413975</link><guid>https://blog.youkuaiyun.com/chenjixue/article/details/134413975</guid><author>chenjixue</author><pubDate>Wed, 15 Nov 2023 10:59:06 +0800</pubDate><description><![CDATA[首先范围线段想采用两条开启stack属性堆叠折线图然后上划线加areaStyle属性进行绘制，但是后台返回的数据节点有空点而且间隔随机，即便开启了connectNulls:true只能保证线段不间断，但对于折线范围null数据节点依然会导致堆叠效果异常。让其区域areaStyle颜色遮住上划线空节点的areaStyle颜色间接达到效果，但是这会出现一个问题就是zlevel区域颜色areaStyle提升了会遮住坐标轴和两外两条线段。两条线都好绘制主要是那个范围线段出了点问题。]]></description><category></category></item><item><title><![CDATA[React使用过程中的坑]]></title><link>https://blog.youkuaiyun.com/chenjixue/article/details/128430629</link><guid>https://blog.youkuaiyun.com/chenjixue/article/details/128430629</guid><author>chenjixue</author><pubDate>Tue, 03 Jan 2023 16:06:21 +0800</pubDate><description><![CDATA[个人最近在react使用中遇到的一些坑]]></description><category></category></item><item><title><![CDATA[Vue3对比Vue2差异]]></title><link>https://blog.youkuaiyun.com/chenjixue/article/details/125978573</link><guid>https://blog.youkuaiyun.com/chenjixue/article/details/125978573</guid><author>chenjixue</author><pubDate>Sun, 07 Aug 2022 19:39:02 +0800</pubDate><description><![CDATA[vue3对比vue2的一些常见差异点]]></description><category></category></item><item><title><![CDATA[深入了解浏览器异步原理]]></title><link>https://blog.youkuaiyun.com/chenjixue/article/details/124222115</link><guid>https://blog.youkuaiyun.com/chenjixue/article/details/124222115</guid><author>chenjixue</author><pubDate>Sat, 16 Apr 2022 22:35:13 +0800</pubDate><description><![CDATA[什么是进程与线程（包括进程与线程的区别）浏览器中的进程，各个进程的职责浏览器中渲染进程的线程，各个线程的职责js单线程的执行机制js单线程存在的问题，解决方案js线程和GUI线程的关系js线程解析执行js时，与其他线程的关系 ***宏任务与微任务1. 什么是进程和线程进程：进程是系统中正在运行的一个程序，程序一旦运行就是进程。进程可以看成程序执行的一个实例，可以视作为浏览器打开了多个tab页，每个tab页相当于独立的进程。进程是系统资源分配的独立实体，每个进程都拥有独立的地址空间。一个进程无法访问另一个进程]]></description><category></category></item><item><title><![CDATA[Vue实例methods中的方法this指针，在eventBus和addListener中的指向问题]]></title><link>https://blog.youkuaiyun.com/chenjixue/article/details/122522500</link><guid>https://blog.youkuaiyun.com/chenjixue/article/details/122522500</guid><author>chenjixue</author><pubDate>Sun, 16 Jan 2022 14:19:05 +0800</pubDate><description><![CDATA[首先说结论，Vue中的methods方法this在源码中全部被bind到当前Vue组件实例，上源码

可以看出vue里面的方法都被bind强制绑定了this上下文，也就是当前Vue组件实例


functionnativeBind(fn,ctx){returnfn.bind(ctx)
}
varbind=Function.prototype.bind?nativeBind:polyfillBind;functioninitMethods(vm,methods){/...]]></description><category></category></item><item><title><![CDATA[vue模板编译原理]]></title><link>https://blog.youkuaiyun.com/chenjixue/article/details/122040835</link><guid>https://blog.youkuaiyun.com/chenjixue/article/details/122040835</guid><author>chenjixue</author><pubDate>Mon, 20 Dec 2021 14:37:53 +0800</pubDate><description><![CDATA[https://segmentfault.com/a/1190000013763590

]]></description><category></category></item><item><title><![CDATA[Vue源码之响应式原理]]></title><link>https://blog.youkuaiyun.com/chenjixue/article/details/122040319</link><guid>https://blog.youkuaiyun.com/chenjixue/article/details/122040319</guid><author>chenjixue</author><pubDate>Mon, 20 Dec 2021 14:24:27 +0800</pubDate><description><![CDATA[前言
computed&nbsp;在&nbsp;vue&nbsp;中是很常用的属性配置，它能够随着依赖属性的变化而变化，为我们带来很大便利。那么本文就来带大家全面理解&nbsp;computed&nbsp;的内部原理以及工作流程。
在这之前，希望你能够对响应式原理有一些理解，因为&nbsp;computed&nbsp;是基于响应式原理进行工作。如果你对响应式原理还不是很了解，可以阅读我的上一篇文章：手摸手带你理解Vue响应式原理
&nbsp;
computed 用法
想要理解原理，最基本就是要知道如何使用，]]></description><category></category></item><item><title><![CDATA[leetcode算法常见解题思路--二叉树篇]]></title><link>https://blog.youkuaiyun.com/chenjixue/article/details/121212218</link><guid>https://blog.youkuaiyun.com/chenjixue/article/details/121212218</guid><author>chenjixue</author><pubDate>Fri, 17 Dec 2021 11:37:53 +0800</pubDate><description><![CDATA[1.填充二叉树节点的右侧指针



二叉树的问题难点在于，如何把题目的要求细化成每个节点需要做的事情，但是如果只依赖一个节点的话，肯定是没办法连接「跨父节点」的两个相邻节点的，那么，我们的做法就是增加函数参数，一个节点做不到，我们就给他安排两个节点，「将每一层二叉树节点连接起来」可以细化成「将每两个相邻节点都连接起来]。

//主函数
Nodeconnect(Noderoot){
if(root==null)returnnull;
connectTwoNode(root....]]></description><category></category></item><item><title><![CDATA[vue中如何监测数组的变化]]></title><link>https://blog.youkuaiyun.com/chenjixue/article/details/121922263</link><guid>https://blog.youkuaiyun.com/chenjixue/article/details/121922263</guid><author>chenjixue</author><pubDate>Tue, 14 Dec 2021 11:09:58 +0800</pubDate><description><![CDATA[一、数组监听与对象监听的不同

对象的监听是直接递归使用Object.defineProperty重新定义数组的每个属性，而数据是改写数组的7个数组方法：push，pop，shift，unshift，sort，splice，reverse

二、实现原理

vue在数据初始化时调用initData方法，然后通过new Observer对数据进行监测，然后对数据进行判断，如果是数组并且支持原型链就会执行protoAugment让目标原型链指向arrayMethods，arrayMethods用来改写数组的原型]]></description><category></category></item><item><title><![CDATA[vue源码分析之异步组件]]></title><link>https://blog.youkuaiyun.com/chenjixue/article/details/121921049</link><guid>https://blog.youkuaiyun.com/chenjixue/article/details/121921049</guid><author>chenjixue</author><pubDate>Tue, 14 Dec 2021 10:32:45 +0800</pubDate><description><![CDATA[去构造子组件的基础构造函数，此时会在构造函数上新增一个cid属性(在4789行),所以我们这里通过cid来判断该组件是否为一个函数。resolveAsyncComponent内部会定义一个resolve和reject函数，然后执行factory()函数，factory()就是我们在main.js里给HelloWorld组件定义的函数，函数内会执行require函数，由于require()是个异步操作，所以resolveAsyncComponent就会返回undefined。]]></description><category></category></item></channel></rss>