> For the complete documentation index, see [llms.txt](https://shenjunhong.gitbook.io/blog/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://shenjunhong.gitbook.io/blog/yuan-ma.md).

# 源码

- [React](https://shenjunhong.gitbook.io/blog/yuan-ma/react.md)
- [核心知识点](https://shenjunhong.gitbook.io/blog/yuan-ma/react/react-yuan-ma-fen-xi-zhi-ru-kou-he-you-hua.md)
- [errorBoundaries](https://shenjunhong.gitbook.io/blog/yuan-ma/react/errorboundaries.md)
- [immutable.js 的实现原理](https://shenjunhong.gitbook.io/blog/yuan-ma/react/immutable.js-de-shi-xian-yuan-li.md)
- [React.Suspense](https://shenjunhong.gitbook.io/blog/yuan-ma/react/react-yuan-ma-fen-xi-zhi-suspense.md)
- [react源码分析之Fiber](https://shenjunhong.gitbook.io/blog/yuan-ma/react/react-yuan-ma-fen-xi-zhi-fiber.md)
- [batchedUpdate](https://shenjunhong.gitbook.io/blog/yuan-ma/react/react-yuan-ma-fen-xi-zhi-batchedupdate.md)
- [Component](https://shenjunhong.gitbook.io/blog/yuan-ma/react/react-yuan-ma-fen-xi-zhi-component.md)
- [Context](https://shenjunhong.gitbook.io/blog/yuan-ma/react/react-yuan-ma-fen-xi-zhi-context.md)
- [react 源码分析之 diff 算法](https://shenjunhong.gitbook.io/blog/yuan-ma/react/react-yuan-ma-fen-xi-zhi-diff-suan-fa.md)
- [React 中的 key 属性：原理、使用场景与注意事项](https://shenjunhong.gitbook.io/blog/yuan-ma/react/react-yuan-ma-fen-xi-zhi-key.md)
- [使用方式](https://shenjunhong.gitbook.io/blog/yuan-ma/react/react-yuan-ma-fen-xi-zhi-lazy.md)
- [react源码分析之memo](https://shenjunhong.gitbook.io/blog/yuan-ma/react/react-yuan-ma-fen-xi-zhi-memo.md)
- [react 源码分析之mixin](https://shenjunhong.gitbook.io/blog/yuan-ma/react/react-yuan-ma-fen-xi-zhi-mixin.md)
- [实战篇](https://shenjunhong.gitbook.io/blog/yuan-ma/react/react-yuan-ma-fen-xi-zhi-portals.md)
- [react源码分析之react-dom](https://shenjunhong.gitbook.io/blog/yuan-ma/react/react-yuan-ma-fen-xi-zhi-reactdom.md)
- [使用方式](https://shenjunhong.gitbook.io/blog/yuan-ma/react/react-yuan-ma-fen-xi-zhi-ref.md)
- [scheduleWork](https://shenjunhong.gitbook.io/blog/yuan-ma/react/schedulework.md)
- [useImperativeHandle的使用与原理](https://shenjunhong.gitbook.io/blog/yuan-ma/react/useimperativehandle-de-shi-yong-yu-yuan-li.md)
- [React 书写小技巧](https://shenjunhong.gitbook.io/blog/yuan-ma/react/shu-xie-ji-qiao.md)
- [入口和优化](https://shenjunhong.gitbook.io/blog/yuan-ma/react/ru-kou-he-you-hua.md)
- [合成事件和原生事件的区别](https://shenjunhong.gitbook.io/blog/yuan-ma/react/he-cheng-shi-jian.md)
- [react 性能优化](https://shenjunhong.gitbook.io/blog/yuan-ma/react/xing-neng-you-hua-fang-an.md)
- [构建一个 hooks](https://shenjunhong.gitbook.io/blog/yuan-ma/react/gou-jian-yi-ge-hooks.md)
- [浅析 styled-components](https://shenjunhong.gitbook.io/blog/yuan-ma/react/qian-xi-styledcomponents.md)
- [生命周期](https://shenjunhong.gitbook.io/blog/yuan-ma/react/sheng-ming-zhou-qi.md)
- [组合 vs 继承](https://shenjunhong.gitbook.io/blog/yuan-ma/react/zu-he-vs-ji-cheng.md)
- [通信机制](https://shenjunhong.gitbook.io/blog/yuan-ma/react/tong-xin-ji-zhi.md)
- [高阶组件](https://shenjunhong.gitbook.io/blog/yuan-ma/react/gao-jie-zu-jian.md)
- [慕课网](https://shenjunhong.gitbook.io/blog/yuan-ma/react/mu-ke-wang.md)
- [应用篇](https://shenjunhong.gitbook.io/blog/yuan-ma/react/mu-ke-wang/react-yuan-ma-fen-xi-zhi-reactelement.md)
- [课程导学](https://shenjunhong.gitbook.io/blog/yuan-ma/react/mu-ke-wang/ke-cheng-dao-xue.md)
- [ReactHook](https://shenjunhong.gitbook.io/blog/yuan-ma/reacthook.md)
- [useCallback](https://shenjunhong.gitbook.io/blog/yuan-ma/reacthook/usecallback.md)
- [useContext](https://shenjunhong.gitbook.io/blog/yuan-ma/reacthook/usecontext.md)
- [useEffect 与 useLayoutEffect](https://shenjunhong.gitbook.io/blog/yuan-ma/reacthook/useeffect.md)
- [useHook](https://shenjunhong.gitbook.io/blog/yuan-ma/reacthook/usehook.md)
- [useMemo](https://shenjunhong.gitbook.io/blog/yuan-ma/reacthook/usememo.md)
- [useReducer](https://shenjunhong.gitbook.io/blog/yuan-ma/reacthook/usereducer.md)
- [原理](https://shenjunhong.gitbook.io/blog/yuan-ma/reacthook/useref.md)
- [useState](https://shenjunhong.gitbook.io/blog/yuan-ma/reacthook/usestate.md)
- [总结](https://shenjunhong.gitbook.io/blog/yuan-ma/reacthook/zong-jie.md)
- [Redux](https://shenjunhong.gitbook.io/blog/yuan-ma/redux.md)
- [mobx 原理解析](https://shenjunhong.gitbook.io/blog/yuan-ma/redux/mobx-yuan-li-jie-xi.md)
- [redux-saga](https://shenjunhong.gitbook.io/blog/yuan-ma/redux/redux-saga.md)
- [redux-thunk](https://shenjunhong.gitbook.io/blog/yuan-ma/redux/redux-thunk.md)
- [Mobx 和 Redux 对比](https://shenjunhong.gitbook.io/blog/yuan-ma/redux/yu-mobx-dui-bi.md)
- [使用方法](https://shenjunhong.gitbook.io/blog/yuan-ma/redux/shi-yong-fang-fa.md)
- [redux 原理](https://shenjunhong.gitbook.io/blog/yuan-ma/redux/yuan-li-jie-xi.md)
- [Vite](https://shenjunhong.gitbook.io/blog/yuan-ma/vite.md)
- [Vite原理](https://shenjunhong.gitbook.io/blog/yuan-ma/vite/vite-yuan-li.md)
- [Vite配置](https://shenjunhong.gitbook.io/blog/yuan-ma/vite/vite-pei-zhi.md)
- [热更新原理](https://shenjunhong.gitbook.io/blog/yuan-ma/vite/re-geng-xin-yuan-li.md)
- [vite 为什么生产环境用 Rollup](https://shenjunhong.gitbook.io/blog/yuan-ma/vite/mian-shi.md)
- [Webpack](https://shenjunhong.gitbook.io/blog/yuan-ma/webpack.md)
- [PostCSS](https://shenjunhong.gitbook.io/blog/yuan-ma/webpack/postcss.md)
- [Webpack5 核心原理与应用实践-loader](https://shenjunhong.gitbook.io/blog/yuan-ma/webpack/webpack5-he-xin-yuan-li-yu-ying-yong-shi-jian-loader.md)
- [Webpack5 核心原理与应用实践-plugin](https://shenjunhong.gitbook.io/blog/yuan-ma/webpack/webpack5-he-xin-yuan-li-yu-ying-yong-shi-jian-plugin.md)
- [Webpack5 核心原理与应用实践](https://shenjunhong.gitbook.io/blog/yuan-ma/webpack/webpack5-he-xin-yuan-li-yu-ying-yong-shi-jian.md)
- [区分](https://shenjunhong.gitbook.io/blog/yuan-ma/webpack/bundle-vs-chunk-vs-module.md)
- [升级详情](https://shenjunhong.gitbook.io/blog/yuan-ma/webpack/webpack3-dao-4-sheng-ji-yi-lai.md)
- [treeShaking（树摇Tree Shaking）](https://shenjunhong.gitbook.io/blog/yuan-ma/webpack/webpack-zhi-treeshaking.md)
- [编写一个自己的webpack插件plugin](https://shenjunhong.gitbook.io/blog/yuan-ma/webpack/webpack-zhi-cha-jian.md)
- [代码分离(code-splitting)](https://shenjunhong.gitbook.io/blog/yuan-ma/webpack/webpack-dai-ma-fen-li.md)
- [webpack 打包优化](https://shenjunhong.gitbook.io/blog/yuan-ma/webpack/webpack-chang-yong-you-hua.md)
- [基础配置](https://shenjunhong.gitbook.io/blog/yuan-ma/webpack/webpack-chang-yong-pei-zhi.md)
- [webpack 打包优化](https://shenjunhong.gitbook.io/blog/yuan-ma/webpack/webpack-da-bao-you-hua.md)
- [webpack 工作原理](https://shenjunhong.gitbook.io/blog/yuan-ma/webpack/webpack-da-bao-yuan-li.md)
- [webpack 按需加载原理](https://shenjunhong.gitbook.io/blog/yuan-ma/webpack/webpack-an-xu-jia-zai-de-yuan-li.md)
- [webpack 热更新 HMR(Hot Module Replacement)](https://shenjunhong.gitbook.io/blog/yuan-ma/webpack/webpack-re-geng-xin-yuan-li.md)
- [缓存](https://shenjunhong.gitbook.io/blog/yuan-ma/webpack/webpack-huan-cun.md)
- [webpack 自定义 plugin](https://shenjunhong.gitbook.io/blog/yuan-ma/webpack/webpack-zi-ding-yi-plugin.md)
- [next](https://shenjunhong.gitbook.io/blog/yuan-ma/next.md)
- [tailwind](https://shenjunhong.gitbook.io/blog/yuan-ma/next/tailwind.md)
- [什么是水合](https://shenjunhong.gitbook.io/blog/yuan-ma/next/mian-shi.md)
- [sveltejs](https://shenjunhong.gitbook.io/blog/yuan-ma/sveltejs.md)
- [index](https://shenjunhong.gitbook.io/blog/yuan-ma/sveltejs/index.md)
- [tinymce](https://shenjunhong.gitbook.io/blog/yuan-ma/tinymce.md)
- [并发篇](https://shenjunhong.gitbook.io/blog/yuan-ma/tinymce/yuan-ma-yan-du-yi.md)
- [源码手写系列](https://shenjunhong.gitbook.io/blog/yuan-ma/yuan-ma-shou-xie-xi-lie.md)
- [create](https://shenjunhong.gitbook.io/blog/yuan-ma/yuan-ma-shou-xie-xi-lie/object.create.md)
- [call](https://shenjunhong.gitbook.io/blog/yuan-ma/yuan-ma-shou-xie-xi-lie/apply.md)
- [bind](https://shenjunhong.gitbook.io/blog/yuan-ma/yuan-ma-shou-xie-xi-lie/bind.md)
- [call](https://shenjunhong.gitbook.io/blog/yuan-ma/yuan-ma-shou-xie-xi-lie/call.md)
- [es6 单例](https://shenjunhong.gitbook.io/blog/yuan-ma/yuan-ma-shou-xie-xi-lie/es6-shi-xian-dan-li.md)
- [forEach vs Map](https://shenjunhong.gitbook.io/blog/yuan-ma/yuan-ma-shou-xie-xi-lie/foreach-vs-map.md)
- [instanceOf](https://shenjunhong.gitbook.io/blog/yuan-ma/yuan-ma-shou-xie-xi-lie/instanceof.md)
- [new](https://shenjunhong.gitbook.io/blog/yuan-ma/yuan-ma-shou-xie-xi-lie/new.md)
- [reduce](https://shenjunhong.gitbook.io/blog/yuan-ma/yuan-ma-shou-xie-xi-lie/reduce.md)
- [取两个重复数组的交集](https://shenjunhong.gitbook.io/blog/yuan-ma/yuan-ma-shou-xie-xi-lie/liang-ge-you-xu-shu-zu.md)
- [函数柯理化](https://shenjunhong.gitbook.io/blog/yuan-ma/yuan-ma-shou-xie-xi-lie/han-shu-ke-li-hua.md)
- [动态规划](https://shenjunhong.gitbook.io/blog/yuan-ma/yuan-ma-shou-xie-xi-lie/dong-tai-gui-hua.md)
- [基于Generator函数实现async](https://shenjunhong.gitbook.io/blog/yuan-ma/yuan-ma-shou-xie-xi-lie/ji-yu-generator-han-shu-shi-xian-async-he-await-yuan-li.md)
- [新建 js 文件](https://shenjunhong.gitbook.io/blog/yuan-ma/yuan-ma-shou-xie-xi-lie/shou-xie-yi-ge-babel.md)
- [手写一个 slice 方法](https://shenjunhong.gitbook.io/blog/yuan-ma/yuan-ma-shou-xie-xi-lie/shou-xie-yi-ge-slice-he-splice-fang-fa.md)
- [手写一个 webpack loader](https://shenjunhong.gitbook.io/blog/yuan-ma/yuan-ma-shou-xie-xi-lie/shou-xie-yi-ge-webpack-de-loader.md)
- [Plugin](https://shenjunhong.gitbook.io/blog/yuan-ma/yuan-ma-shou-xie-xi-lie/shou-xie-yi-ge-webpack-de-plugin.md)
- [手写一个寄生组合式继承](https://shenjunhong.gitbook.io/blog/yuan-ma/yuan-ma-shou-xie-xi-lie/shou-xie-yi-ge-ji-sheng-zu-he-shi-ji-cheng.md)
- [二叉树](https://shenjunhong.gitbook.io/blog/yuan-ma/yuan-ma-shou-xie-xi-lie/shou-xie-er-cha-shu.md)
- [链表相关的操作](https://shenjunhong.gitbook.io/blog/yuan-ma/yuan-ma-shou-xie-xi-lie/shou-xie-lian-biao.md)
- [手动实现发布订阅](https://shenjunhong.gitbook.io/blog/yuan-ma/yuan-ma-shou-xie-xi-lie/shou-dong-shi-xian-fa-bu-ding-yue.md)
- [数组去重](https://shenjunhong.gitbook.io/blog/yuan-ma/yuan-ma-shou-xie-xi-lie/shu-zu-qu-zhong.md)
- [数组扁平化](https://shenjunhong.gitbook.io/blog/yuan-ma/yuan-ma-shou-xie-xi-lie/shu-zu-bian-ping-hua.md)
- [数组](https://shenjunhong.gitbook.io/blog/yuan-ma/yuan-ma-shou-xie-xi-lie/shu-zu-mo-ni-zhan-he-dui-lie.md)
- [构造大顶堆和小顶堆](https://shenjunhong.gitbook.io/blog/yuan-ma/yuan-ma-shou-xie-xi-lie/gou-zao-da-ding-dui-he-xiao-ding-dui.md)
- [深浅拷贝 深拷贝](https://shenjunhong.gitbook.io/blog/yuan-ma/yuan-ma-shou-xie-xi-lie/shen-qian-kao-bei.md)
- [两者对比](https://shenjunhong.gitbook.io/blog/yuan-ma/yuan-ma-shou-xie-xi-lie/jie-liu-he-fang-dou.md)
- [vue](https://shenjunhong.gitbook.io/blog/yuan-ma/vue.md)
- [vue2](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue2.md)
- [vm.attrs与$listeners](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue2/attrs-yu-listeners.md)
- [vue 和 react 的 diff 算法比较](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue2/vue-he-react-de-diff-suan-fa-bi-jiao.md)
- [vue 源码分析](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue2/vue-yuan-ma-fen-xi-zhi-data.md)
- [vue 优化的 diff 策略](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue2/vue-yuan-ma-fen-xi-zhi-diff.md)
- [extends](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue2/vue-yuan-ma-fen-xi-zhi-extends.md)
- [核心原理篇](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue2/vue-yuan-ma-fen-xi-zhi-is.md)
- [keep-alive](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue2/vue-yuan-ma-fen-xi-zhi-keepalive.md)
- [vue 源码分析之 mixins](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue2/vue-yuan-ma-fen-xi-zhi-minxins.md)
- [vue 源码分析之 nextTick](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue2/vue-yuan-ma-fen-xi-zhi-nexttick.md)
- [vue之slot](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue2/vue-yuan-ma-fen-xi-zhi-slot.md)
- [vnode](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue2/vue-yuan-ma-fen-xi-zhi-vnode.md)
- [vue 源码分析之 watch](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue2/vue-yuan-ma-fen-xi-zhi-watch.md)
- [原理](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue2/vue-yuan-ma-fen-xi-zhi-props.md)
- [vue 源码分析之transition](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue2/vue-yuan-ma-fen-xi-zhi-transition.md)
- [vue 源码分析之异步组件](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue2/vue-yuan-ma-fen-xi-zhi-yi-bu-zu-jian.md)
- [调用的是 watch](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue2/vue-yuan-ma-fen-xi-zhi-ji-suan-yu-zhen-ting.md)
- [安装](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue2/vuex-yuan-li.md)
- [react源码分析之portals](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue2/vue-yuan-ma-zhi-method.md)
- [event 的实现原理(事件的实现原理)](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue2/vue-yuan-ma-fen-xi-zhi-event.md)
- [什么是h](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue2/vue-yuan-ma-fen-xi-zhihhan-shu.md)
- [分析provide 和 inject](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue2/vue-yuan-ma-fen-xi-zhi-provider-he-inject.md)
- [vue 源码分析之 use](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue2/vue-yuan-ma-fen-xi-zhi-use.md)
- [v-model](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue2/vue-yuan-ma-fen-xi-zhi-vmodel.md)
- [vue源码分析之vuex](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue2/vue-yuan-ma-fen-xi-zhi-vuex.md)
- [响应式原理](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue2/vue-yuan-ma-fen-xi-zhi-shen-ru-xiang-ying-shi-yuan-li.md)
- [初始化的流程](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue2/vue-yuan-ma-fen-xi-zhi-zu-jian-hua.md)
- [组件更新](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue2/vue-yuan-ma-fen-xi-zhi-zu-jian-geng-xin.md)
- [编译](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue2/vue-yuan-ma-fen-xi-zhi-bian-yi.md)
- [父子组件生命周期](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue2/vue-yuan-ma-jie-xi-zhi-fu-zi-zu-jian-sheng-ming-zhou-qi.md)
- [原理](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue2/vue-de-scoped-yang-shi.md)
- [多实例](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue2/vue-de-duo-shi-li.md)
- [Vue 面试](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue2/vue-mian-shi-de-fu-xi.md)
- [源码研读一](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue2/vue-xiang-mu-pei-he-shi-yong-canvas-lian-dong.md)
- [响应式原理](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue2/xiang-ying-shi-yuan-li.md)
- [常见问题](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue2/chang-jian-wen-ti.md)
- [数组的劫持](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue2/shu-zu-jie-chi-yu-xiang-ying-shi.md)
- [vue之自定义指令](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue2/zi-ji-ding-yi-de-zhi-ling.md)
- [运行机制全局概览](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue2/yun-xing-ji-zhi-quan-ju-gai-lan.md)
- [vue3相比vue2的提升点](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue3-xiang-bi-vue2-de-ti-sheng-dian.md)
- [vue composition api](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue3-xiang-bi-vue2-de-ti-sheng-dian/vue3-he-vue2-de-qu-bie.md)
- [vue3的虚拟dom优化](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue3-xiang-bi-vue2-de-ti-sheng-dian/vue3-ceng-mian-dui-dom-jin-xing-de-you-hua.md)
- [vue3层面的双向数据绑定](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue3-xiang-bi-vue2-de-ti-sheng-dian/vue3-ceng-mian-de-shuang-xiang-shu-ju-bang-ding.md)
- [预处理优化](https://shenjunhong.gitbook.io/blog/yuan-ma/vue/vue3-xiang-bi-vue2-de-ti-sheng-dian/vue3-de-diff-fang-shi-dui-bi.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://shenjunhong.gitbook.io/blog/yuan-ma.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
