diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/.idea/Front-end.iml b/.idea/Front-end.iml
new file mode 100644
index 0000000..d6ebd48
--- /dev/null
+++ b/.idea/Front-end.iml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..7d862fb
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..5cf5456
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/CSS/笔记记录.lexical b/CSS/笔记记录.lexical
new file mode 100644
index 0000000..9b15502
--- /dev/null
+++ b/CSS/笔记记录.lexical
@@ -0,0 +1 @@
+{"editorState":{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"CSS 代表","type":"text","version":1},{"detail":0,"format":1,"mode":"normal","style":"","text":"层叠样式表","type":"text","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"(Cascading Style Sheets)","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1},{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"HTML","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"link","version":1,"rel":null,"target":null,"title":null,"url":"https://developer.mozilla.org/zh-CN/docs/Glossary/HTML"},{"detail":0,"format":0,"mode":"normal","style":"","text":" 是最常见的标记语言,但你可能也听说过其他可标记语言,如 ","type":"text","version":1},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"SVG","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"link","version":1,"rel":null,"target":null,"title":null,"url":"https://developer.mozilla.org/zh-CN/docs/Glossary/SVG"},{"detail":0,"format":0,"mode":"normal","style":"","text":" 或 ","type":"text","version":1},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"XML","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"link","version":1,"rel":null,"target":null,"title":null,"url":"https://developer.mozilla.org/zh-CN/docs/Glossary/XML"},{"detail":0,"format":0,"mode":"normal","style":"","text":"。","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"CSS 应用于文档的三种方法","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1},{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"使用外部样式表","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":1},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"使用内部样式表","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":2},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"使用内联样式","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":3}],"direction":"ltr","format":"","indent":0,"type":"list","version":1,"listType":"number","start":1,"tag":"ol"},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"CSS 声明通过空白字符分离不同的值,","type":"text","version":1},{"detail":0,"format":1,"mode":"normal","style":"","text":"属性名称不应该含有空白字符","type":"text","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"。","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"CSS是如何工作的","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"heading","version":1,"tag":"h1"},{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"浏览器载入 HTML 文件(比如从网络上获取)。","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":1},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"将 HTML 文件转化成一个 DOM(Document Object Model),DOM 是文件在计算机内存中的表现形式,下一节将更加详细的解释 DOM。","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":2},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"接下来,浏览器会拉取该 HTML 相关的大部分资源,比如嵌入到页面的图片、视频和 CSS 样式。JavaScript 则会稍后进行处理,简单起见,同时此节主讲 CSS,所以这里对如何加载 JavaScript 不会展开叙述。","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":3},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"浏览器拉取到 CSS 之后会进行解析,根据选择器的不同类型(比如 element、class、id 等等)把他们分到不同的“桶”中。浏览器基于它找到的不同的选择器,将不同的规则(基于选择器的规则,如元素选择器、类选择器、id 选择器等)应用在对应的 DOM 的节点中,并添加节点依赖的样式(这个中间步骤称为渲染树)。","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":4},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"上述的规则应用于渲染树之后,渲染树会依照应该出现的结构进行布局。","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":5},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"网页展示在屏幕上(这一步被称为着色)。","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":6}],"direction":"ltr","format":"","indent":0,"type":"list","version":1,"listType":"number","start":1,"tag":"ol"},{"children":[{"altText":"","caption":{"editorState":{"root":{"children":[],"direction":null,"format":"","indent":0,"type":"root","version":1}}},"height":0,"maxWidth":500,"showCaption":false,"src":"https://developer.mozilla.org/zh-CN/docs/Learn/CSS/First_steps/How_CSS_works/rendering.svg","type":"image","version":1,"width":0}],"direction":null,"format":"","indent":0,"type":"paragraph","version":1},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"一些 css 属性继承当前元素的父元素上设置的值,有些则不继承。这也可能导致一些和期望不同的结果。","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1},{"children":[],"direction":null,"format":"","indent":0,"type":"paragraph","version":1},{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"层叠","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"link","version":1,"rel":null,"target":null,"title":null,"url":"https://developer.mozilla.org/zh-CN/docs/Learn/CSS/Building_blocks/Cascade_and_inheritance#%E5%B1%82%E5%8F%A0"}],"direction":"ltr","format":"start","indent":0,"type":"heading","version":1,"tag":"h3"},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"样式表","type":"text","version":1},{"children":[{"detail":0,"format":1,"mode":"normal","style":"","text":"层叠","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"link","version":1,"rel":null,"target":null,"title":null,"url":"https://developer.mozilla.org/zh-CN/docs/Web/CSS/Cascade"},{"detail":0,"format":0,"mode":"normal","style":"","text":"——简单的说,就是 CSS 规则的顺序很重要;当应用两条同级别的规则到一个元素的时候,写在后面的就是实际使用的规则。","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1},{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"优先级","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"link","version":1,"rel":null,"target":null,"title":null,"url":"https://developer.mozilla.org/zh-CN/docs/Learn/CSS/Building_blocks/Cascade_and_inheritance#%E4%BC%98%E5%85%88%E7%BA%A7"}],"direction":"ltr","format":"start","indent":0,"type":"heading","version":1,"tag":"h3"},{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"继承","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"link","version":1,"rel":null,"target":null,"title":null,"url":"https://developer.mozilla.org/zh-CN/docs/Learn/CSS/Building_blocks/Cascade_and_inheritance#%E7%BB%A7%E6%89%BF"}],"direction":"ltr","format":"start","indent":0,"type":"heading","version":1,"tag":"h3"},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"继承也需要在上下文中去理解——一些设置在父元素上的 CSS 属性是可以被子元素继承的,有些则不能。","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"举一个例子,如果你设置一个元素的 ","type":"text","version":1},{"detail":0,"format":16,"mode":"normal","style":"","text":"color","type":"text","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":" 和 ","type":"text","version":1},{"detail":0,"format":16,"mode":"normal","style":"","text":"font-family","type":"text","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":",每个在里面的元素也都会有相同的属性,除非你直接在元素上设置属性。","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"一些属性是不能继承的——举个例子如果你在一个元素上设置 ","type":"text","version":1},{"children":[{"detail":0,"format":16,"mode":"normal","style":"","text":"width","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"link","version":1,"rel":null,"target":null,"title":null,"url":"https://developer.mozilla.org/zh-CN/docs/Web/CSS/width"},{"detail":0,"format":0,"mode":"normal","style":"","text":" 为 50% ,所有的后代不会是父元素的宽度的 50% 。如果这个也可以继承的话,CSS 就会很难使用了!","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"像 ","type":"text","version":1},{"detail":0,"format":16,"mode":"normal","style":"","text":"width","type":"text","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"、","type":"text","version":1},{"detail":0,"format":16,"mode":"normal","style":"","text":"margin","type":"text","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"、","type":"text","version":1},{"detail":0,"format":16,"mode":"normal","style":"","text":"padding","type":"text","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":" 和 ","type":"text","version":1},{"detail":0,"format":16,"mode":"normal","style":"","text":"border","type":"text","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":" 不会被继承","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1},{"children":[{"children":[{"detail":0,"format":16,"mode":"normal","style":"","text":"inherit","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"link","version":1,"rel":null,"target":null,"title":null,"url":"https://developer.mozilla.org/zh-CN/docs/Web/CSS/inherit"}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"设置该属性会使子元素属性和父元素相同。实际上,就是“开启继承”。","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"一个选择器的优先级可以说是由三个不同的值(或分量)相加,可以认为是百(ID)十(类)个(元素)","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"内联样式,即 ","type":"text","version":1},{"children":[{"detail":0,"format":16,"mode":"normal","style":"","text":"style","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"link","version":1,"rel":null,"target":null,"title":null,"url":"https://developer.mozilla.org/zh-CN/docs/Web/HTML/Global_attributes#style"},{"detail":0,"format":0,"mode":"normal","style":"","text":" 属性内的样式声明,优先于所有普通的样式,无论其优先级如何。","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"有一个特殊的 CSS 可以用来覆盖所有上面所有优先级计算,不过需要很小心的使用——","type":"text","version":1},{"detail":0,"format":16,"mode":"normal","style":"","text":"!important","type":"text","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"。","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1},{"children":[],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}}
\ No newline at end of file
diff --git a/Electron/electron-forge/lifecycle.webp b/Electron/electron-forge/lifecycle.webp
new file mode 100644
index 0000000..c2b22ee
Binary files /dev/null and b/Electron/electron-forge/lifecycle.webp differ
diff --git a/lexical/修改图片组件.lexical b/lexical/修改图片组件.lexical
new file mode 100644
index 0000000..ba2dae6
--- /dev/null
+++ b/lexical/修改图片组件.lexical
@@ -0,0 +1 @@
+{"editorState":{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"创建插件","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"heading","version":1,"tag":"h1"},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"最简单的插件是一个接受实例并返回清理函数的函数。","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"计划插入组件因此使用DecoratorNode。","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"export","type":"code-highlight","version":1,"highlightType":"keyword"},{"detail":0,"format":0,"mode":"normal","style":"","text":" ","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"class","type":"code-highlight","version":1,"highlightType":"keyword"},{"detail":0,"format":0,"mode":"normal","style":"","text":" ","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"ImageNode","type":"code-highlight","version":1,"highlightType":"class-name"},{"detail":0,"format":0,"mode":"normal","style":"","text":" ","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"extends","type":"code-highlight","version":1,"highlightType":"keyword"},{"detail":0,"format":0,"mode":"normal","style":"","text":" ","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"DecoratorNode","type":"code-highlight","version":1,"highlightType":"class-name"}],"direction":"ltr","format":"","indent":0,"type":"code","version":1,"language":"javascript"},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"必须方法","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"heading","version":1,"tag":"h2"},{"children":[{"children":[{"detail":0,"format":16,"mode":"normal","style":"","text":"constructor(...)","type":"text","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":" + class props – Allows us to store custom data within nodes at runtime as well as accept custom parameters.","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":1},{"children":[{"detail":0,"format":16,"mode":"normal","style":"","text":"getType()","type":"text","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":" & ","type":"text","version":1},{"detail":0,"format":16,"mode":"normal","style":"","text":"clone(...)","type":"text","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":" – methods allow Lexical to correctly identify node type as well as being able to clone it correctly as we may want to customize cloning behavior.","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":2},{"children":[{"detail":0,"format":16,"mode":"normal","style":"","text":"importJSON(...)","type":"text","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":" & ","type":"text","version":1},{"detail":0,"format":16,"mode":"normal","style":"","text":"exportJSON()","type":"text","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":" – define how our data will be serialized / deserialized to/from Lexical state. Here you define your node presentation in state.","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":3},{"children":[{"detail":0,"format":16,"mode":"normal","style":"","text":"createDOM(...)","type":"text","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":" – defines DOM that will be rendered by Lexical","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":4}],"direction":"ltr","format":"","indent":0,"type":"list","version":1,"listType":"bullet","start":1,"tag":"ul"},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"节点转换","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"heading","version":1,"tag":"h1"},{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Attempt to transform ","type":"text","version":1},{"detail":0,"format":16,"mode":"normal","style":"","text":"TextNode","type":"text","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":". It will be run on any change to ","type":"text","version":1},{"detail":0,"format":16,"mode":"normal","style":"","text":"TextNode","type":"text","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"'s.","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":1},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Check if emoji shortcodes (smiles) are present in the text within ","type":"text","version":1},{"detail":0,"format":16,"mode":"normal","style":"","text":"TextNode","type":"text","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":". Skip if none.","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":2},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Split ","type":"text","version":1},{"detail":0,"format":16,"mode":"normal","style":"","text":"TextNode","type":"text","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":" into 2 or 3 pieces (depending on the position of the shortcode in text) so target emoji shortcode has own dedicated ","type":"text","version":1},{"detail":0,"format":16,"mode":"normal","style":"","text":"TextNode","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":3},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Replace emoji shortcode ","type":"text","version":1},{"detail":0,"format":16,"mode":"normal","style":"","text":"TextNode","type":"text","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":" with ","type":"text","version":1},{"detail":0,"format":16,"mode":"normal","style":"","text":"EmojiNode","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":4}],"direction":"ltr","format":"","indent":0,"type":"list","version":1,"listType":"number","start":1,"tag":"ol"},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"放在一起执行","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"heading","version":1,"tag":"h1"},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"注册节点","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1},{"children":[],"direction":null,"format":"","indent":0,"type":"paragraph","version":1},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"图片现有功能","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"heading","version":1,"tag":"h1"},{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"shift+点击选中与取消选中","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":1},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"添加图片中注释","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":2},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"选中后可拖动","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":3},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"选中后可放大与缩小","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":4}],"direction":"ltr","format":"","indent":0,"type":"list","version":1,"listType":"number","start":1,"tag":"ol"},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"图片希望增加功能","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"heading","version":1,"tag":"h1"},{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"预览","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":1},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"删除图片中注释","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":2},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"图片说明占据大部分图片无法选择图片","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":3},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"希望图片接近无限放大缩小","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":4}],"direction":"ltr","format":"","indent":0,"type":"list","version":1,"listType":"number","start":1,"tag":"ol"},{"children":[],"direction":null,"format":"","indent":0,"type":"paragraph","version":1}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}}
\ No newline at end of file
diff --git a/lexical/开始.lexical b/lexical/开始.lexical
new file mode 100644
index 0000000..887122c
--- /dev/null
+++ b/lexical/开始.lexical
@@ -0,0 +1 @@
+{"editorState":{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"扩展编辑器","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"heading","version":1,"tag":"h1"},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"插件可以通过","type":"text","version":1},{"detail":0,"format":9,"mode":"normal","style":"","text":"命令、转换、节点","type":"text","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"和其他API扩展编辑器。","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"两种方式创建自己的节点","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"heading","version":1,"tag":"h1"},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"方式一","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"heading","version":1,"tag":"h2"},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"继承现有节点","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1},{"children":[{"children":[{"children":[{"detail":0,"format":16,"mode":"normal","style":"","text":"ElementNode","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"link","version":1,"rel":null,"target":null,"title":null,"url":"https://lexical.dev/docs/concepts/nodes#elementnode"},{"detail":0,"format":0,"mode":"normal","style":"","text":" – 用作其他节点的父节点,可以是块级或内联。","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":1},{"children":[{"children":[{"detail":0,"format":16,"mode":"normal","style":"","text":"TextNode","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"link","version":1,"rel":null,"target":null,"title":null,"url":"https://lexical.dev/docs/concepts/nodes#textnode"},{"detail":0,"format":0,"mode":"normal","style":"","text":" - 包含文本的节点的叶类型(","type":"text","version":1},{"detail":0,"format":2,"mode":"normal","style":"","text":"因此它不能有子元素","type":"text","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":")。","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":2},{"children":[{"children":[{"detail":0,"format":16,"mode":"normal","style":"","text":"DecoratorNode","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"link","version":1,"rel":null,"target":null,"title":null,"url":"https://lexical.dev/docs/concepts/nodes#decoratornode"},{"detail":0,"format":0,"mode":"normal","style":"","text":" - 用于在编辑器中插入任意视图(组件)。","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":3}],"direction":"ltr","format":"","indent":0,"type":"list","version":1,"listType":"bullet","start":1,"tag":"ul"},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"方式二","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"heading","version":1,"tag":"h2"},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"重写,Node Overrides","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"修改实例","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"heading","version":1,"tag":"h1"},{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Trigger an update with ","type":"text","version":1},{"detail":0,"format":16,"mode":"normal","style":"","text":"editor.update()","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":1},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Setting the editor state via ","type":"text","version":1},{"detail":0,"format":16,"mode":"normal","style":"","text":"editor.setEditorState()","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":2},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Applying a change as part of an existing update via ","type":"text","version":1},{"detail":0,"format":16,"mode":"normal","style":"","text":"editor.registerNodeTransform()","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":3},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Using a command listener with ","type":"text","version":1},{"detail":0,"format":16,"mode":"normal","style":"","text":"editor.registerCommand(EXAMPLE_COMMAND, () => {...}, priority)","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":4}],"direction":"ltr","format":"","indent":0,"type":"list","version":1,"listType":"bullet","start":1,"tag":"ul"},{"children":[],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}}
\ No newline at end of file
diff --git a/node/1.学习.lexical b/node/1.学习.lexical
new file mode 100644
index 0000000..bd22781
--- /dev/null
+++ b/node/1.学习.lexical
@@ -0,0 +1 @@
+{"editorState":{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"网址","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"heading","version":1,"tag":"h1"},{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Node.js — Differences between Node.js and the Browser (nodejs.org)","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"link","version":1,"rel":null,"target":null,"title":null,"url":"https://nodejs.org/en/learn/getting-started/differences-between-nodejs-and-the-browser"}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1},{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Arrow function expressions - JavaScript | MDN (mozilla.org)","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"link","version":1,"rel":null,"target":null,"title":null,"url":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions"}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":" ","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"// value可能为空","type":"code-highlight","version":1,"highlightType":"comment"},{"type":"linebreak","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":" ","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"// 后期不再读取文件,直接读取文件MD5","type":"code-highlight","version":1,"highlightType":"comment"},{"type":"linebreak","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":" ","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"importFile","type":"code-highlight","version":1,"highlightType":"function"},{"detail":0,"format":0,"mode":"normal","style":"","text":"(","type":"code-highlight","version":1,"highlightType":"punctuation"},{"detail":0,"format":0,"mode":"normal","style":"","text":"filePath","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":")","type":"code-highlight","version":1,"highlightType":"punctuation"},{"detail":0,"format":0,"mode":"normal","style":"","text":".","type":"code-highlight","version":1,"highlightType":"punctuation"},{"detail":0,"format":0,"mode":"normal","style":"","text":"then","type":"code-highlight","version":1,"highlightType":"function"},{"detail":0,"format":0,"mode":"normal","style":"","text":"(","type":"code-highlight","version":1,"highlightType":"punctuation"},{"detail":0,"format":0,"mode":"normal","style":"","text":"value","type":"code-highlight","version":1,"highlightType":"parameter"},{"detail":0,"format":0,"mode":"normal","style":"","text":" ","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"=>","type":"code-highlight","version":1,"highlightType":"operator"},{"detail":0,"format":0,"mode":"normal","style":"","text":" ","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"{","type":"code-highlight","version":1,"highlightType":"punctuation"},{"type":"linebreak","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":" ","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"let","type":"code-highlight","version":1,"highlightType":"keyword"},{"detail":0,"format":0,"mode":"normal","style":"","text":" save","type":"code-highlight","version":1},{"type":"linebreak","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":" ","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"let","type":"code-highlight","version":1,"highlightType":"keyword"},{"detail":0,"format":0,"mode":"normal","style":"","text":" oldFileMd5","type":"code-highlight","version":1},{"type":"linebreak","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":" ","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"let","type":"code-highlight","version":1,"highlightType":"keyword"},{"detail":0,"format":0,"mode":"normal","style":"","text":" newFileMd5 ","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"=","type":"code-highlight","version":1,"highlightType":"operator"},{"detail":0,"format":0,"mode":"normal","style":"","text":"md5","type":"code-highlight","version":1,"highlightType":"function"},{"detail":0,"format":0,"mode":"normal","style":"","text":"(","type":"code-highlight","version":1,"highlightType":"punctuation"},{"detail":0,"format":0,"mode":"normal","style":"","text":"resultSave","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":")","type":"code-highlight","version":1,"highlightType":"punctuation"},{"type":"linebreak","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":" ","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"if","type":"code-highlight","version":1,"highlightType":"keyword"},{"detail":0,"format":0,"mode":"normal","style":"","text":" ","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"(","type":"code-highlight","version":1,"highlightType":"punctuation"},{"detail":0,"format":0,"mode":"normal","style":"","text":"props","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":".","type":"code-highlight","version":1,"highlightType":"punctuation"},{"detail":0,"format":0,"mode":"normal","style":"","text":"filePath","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":".","type":"code-highlight","version":1,"highlightType":"punctuation"},{"detail":0,"format":0,"mode":"normal","style":"","text":"endsWith","type":"code-highlight","version":1,"highlightType":"function"},{"detail":0,"format":0,"mode":"normal","style":"","text":"(","type":"code-highlight","version":1,"highlightType":"punctuation"},{"detail":0,"format":0,"mode":"normal","style":"","text":"\".md\"","type":"code-highlight","version":1,"highlightType":"string"},{"detail":0,"format":0,"mode":"normal","style":"","text":")","type":"code-highlight","version":1,"highlightType":"punctuation"},{"detail":0,"format":0,"mode":"normal","style":"","text":")","type":"code-highlight","version":1,"highlightType":"punctuation"},{"detail":0,"format":0,"mode":"normal","style":"","text":"{","type":"code-highlight","version":1,"highlightType":"punctuation"},{"type":"linebreak","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":" ","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"// editorState","type":"code-highlight","version":1,"highlightType":"comment"},{"type":"linebreak","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":" oldFileMd5 ","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"=","type":"code-highlight","version":1,"highlightType":"operator"},{"detail":0,"format":0,"mode":"normal","style":"","text":" ","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"md5","type":"code-highlight","version":1,"highlightType":"function"},{"detail":0,"format":0,"mode":"normal","style":"","text":"(","type":"code-highlight","version":1,"highlightType":"punctuation"},{"detail":0,"format":0,"mode":"normal","style":"","text":"value","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":".","type":"code-highlight","version":1,"highlightType":"punctuation"},{"detail":0,"format":0,"mode":"normal","style":"","text":"toString","type":"code-highlight","version":1,"highlightType":"function"},{"detail":0,"format":0,"mode":"normal","style":"","text":"(","type":"code-highlight","version":1,"highlightType":"punctuation"},{"detail":0,"format":0,"mode":"normal","style":"","text":")","type":"code-highlight","version":1,"highlightType":"punctuation"},{"detail":0,"format":0,"mode":"normal","style":"","text":")","type":"code-highlight","version":1,"highlightType":"punctuation"},{"detail":0,"format":0,"mode":"normal","style":"","text":";","type":"code-highlight","version":1,"highlightType":"punctuation"},{"type":"linebreak","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":" save ","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"=","type":"code-highlight","version":1,"highlightType":"operator"},{"detail":0,"format":0,"mode":"normal","style":"","text":" ","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"(","type":"code-highlight","version":1,"highlightType":"punctuation"},{"detail":0,"format":0,"mode":"normal","style":"","text":"isEmpty","type":"code-highlight","version":1,"highlightType":"function"},{"detail":0,"format":0,"mode":"normal","style":"","text":"(","type":"code-highlight","version":1,"highlightType":"punctuation"},{"detail":0,"format":0,"mode":"normal","style":"","text":"value","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":")","type":"code-highlight","version":1,"highlightType":"punctuation"},{"detail":0,"format":0,"mode":"normal","style":"","text":")","type":"code-highlight","version":1,"highlightType":"punctuation"},{"detail":0,"format":0,"mode":"normal","style":"","text":" ","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"||","type":"code-highlight","version":1,"highlightType":"operator"},{"detail":0,"format":0,"mode":"normal","style":"","text":" newFileMd5 ","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"!==","type":"code-highlight","version":1,"highlightType":"operator"},{"detail":0,"format":0,"mode":"normal","style":"","text":" oldFileMd5","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":";","type":"code-highlight","version":1,"highlightType":"punctuation"},{"type":"linebreak","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":" ","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"}","type":"code-highlight","version":1,"highlightType":"punctuation"},{"detail":0,"format":0,"mode":"normal","style":"","text":"else","type":"code-highlight","version":1,"highlightType":"keyword"},{"detail":0,"format":0,"mode":"normal","style":"","text":" ","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"{","type":"code-highlight","version":1,"highlightType":"punctuation"},{"type":"linebreak","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":" oldFileMd5 ","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"=","type":"code-highlight","version":1,"highlightType":"operator"},{"detail":0,"format":0,"mode":"normal","style":"","text":" ","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"md5","type":"code-highlight","version":1,"highlightType":"function"},{"detail":0,"format":0,"mode":"normal","style":"","text":"(","type":"code-highlight","version":1,"highlightType":"punctuation"},{"detail":0,"format":0,"mode":"normal","style":"","text":"JSON","type":"code-highlight","version":1,"highlightType":"constant"},{"detail":0,"format":0,"mode":"normal","style":"","text":".","type":"code-highlight","version":1,"highlightType":"punctuation"},{"detail":0,"format":0,"mode":"normal","style":"","text":"stringify","type":"code-highlight","version":1,"highlightType":"function"},{"detail":0,"format":0,"mode":"normal","style":"","text":"(","type":"code-highlight","version":1,"highlightType":"punctuation"},{"detail":0,"format":0,"mode":"normal","style":"","text":"JSON","type":"code-highlight","version":1,"highlightType":"constant"},{"detail":0,"format":0,"mode":"normal","style":"","text":".","type":"code-highlight","version":1,"highlightType":"punctuation"},{"detail":0,"format":0,"mode":"normal","style":"","text":"parse","type":"code-highlight","version":1,"highlightType":"function"},{"detail":0,"format":0,"mode":"normal","style":"","text":"(","type":"code-highlight","version":1,"highlightType":"punctuation"},{"detail":0,"format":0,"mode":"normal","style":"","text":"value","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":".","type":"code-highlight","version":1,"highlightType":"punctuation"},{"detail":0,"format":0,"mode":"normal","style":"","text":"toString","type":"code-highlight","version":1,"highlightType":"function"},{"detail":0,"format":0,"mode":"normal","style":"","text":"(","type":"code-highlight","version":1,"highlightType":"punctuation"},{"detail":0,"format":0,"mode":"normal","style":"","text":")","type":"code-highlight","version":1,"highlightType":"punctuation"},{"detail":0,"format":0,"mode":"normal","style":"","text":")","type":"code-highlight","version":1,"highlightType":"punctuation"},{"detail":0,"format":0,"mode":"normal","style":"","text":")","type":"code-highlight","version":1,"highlightType":"punctuation"},{"detail":0,"format":0,"mode":"normal","style":"","text":")","type":"code-highlight","version":1,"highlightType":"punctuation"},{"detail":0,"format":0,"mode":"normal","style":"","text":";","type":"code-highlight","version":1,"highlightType":"punctuation"},{"type":"linebreak","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":" save ","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"=","type":"code-highlight","version":1,"highlightType":"operator"},{"detail":0,"format":0,"mode":"normal","style":"","text":" ","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"(","type":"code-highlight","version":1,"highlightType":"punctuation"},{"detail":0,"format":0,"mode":"normal","style":"","text":"isEmpty","type":"code-highlight","version":1,"highlightType":"function"},{"detail":0,"format":0,"mode":"normal","style":"","text":"(","type":"code-highlight","version":1,"highlightType":"punctuation"},{"detail":0,"format":0,"mode":"normal","style":"","text":"value","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":")","type":"code-highlight","version":1,"highlightType":"punctuation"},{"detail":0,"format":0,"mode":"normal","style":"","text":")","type":"code-highlight","version":1,"highlightType":"punctuation"},{"detail":0,"format":0,"mode":"normal","style":"","text":" ","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"||","type":"code-highlight","version":1,"highlightType":"operator"},{"detail":0,"format":0,"mode":"normal","style":"","text":" newFileMd5 ","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"!==","type":"code-highlight","version":1,"highlightType":"operator"},{"detail":0,"format":0,"mode":"normal","style":"","text":" oldFileMd5","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":";","type":"code-highlight","version":1,"highlightType":"punctuation"},{"type":"linebreak","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":" ","type":"code-highlight","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"}","type":"code-highlight","version":1,"highlightType":"punctuation"}],"direction":"ltr","format":"","indent":0,"type":"code","version":1,"language":"javascript"}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}}
\ No newline at end of file
diff --git a/node/note使用记录.lexical b/node/note使用记录.lexical
new file mode 100644
index 0000000..17865fd
--- /dev/null
+++ b/node/note使用记录.lexical
@@ -0,0 +1 @@
+{"editorState":{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"只有在保存的时候获取","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1},{"children":[],"direction":null,"format":"","indent":0,"type":"paragraph","version":1},{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Node.js has two module systems: CommonJS modules and ","type":"text","version":1},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"ECMAScript modules","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"link","version":1,"rel":null,"target":null,"title":null,"url":"https://nodejs.cn/api/modules.html#"},{"detail":0,"format":0,"mode":"normal","style":"","text":"。","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":1},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Calling ","type":"text","version":1},{"detail":0,"format":16,"mode":"normal","style":"","text":"require()","type":"text","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":" always use the CommonJS module loader. Calling ","type":"text","version":1},{"detail":0,"format":16,"mode":"normal","style":"","text":"import()","type":"text","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":" always use the ECMAScript module loader.","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":2},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"ECMAScript modules are ","type":"text","version":1},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"the official standard format","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"link","version":1,"rel":null,"target":null,"title":null,"url":"https://nodejs.cn/api/esm.html#"},{"detail":0,"format":0,"mode":"normal","style":"","text":" to package JavaScript code for reuse. Modules are defined using a variety of ","type":"text","version":1},{"children":[{"detail":0,"format":16,"mode":"normal","style":"","text":"import","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"link","version":1,"rel":null,"target":null,"title":null,"url":"https://nodejs.cn/api/esm.html#"},{"detail":0,"format":0,"mode":"normal","style":"","text":" and ","type":"text","version":1},{"children":[{"detail":0,"format":16,"mode":"normal","style":"","text":"export","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"link","version":1,"rel":null,"target":null,"title":null,"url":"https://nodejs.cn/api/esm.html#"},{"detail":0,"format":0,"mode":"normal","style":"","text":" statements.","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":3}],"direction":"ltr","format":"","indent":0,"type":"list","version":1,"listType":"number","start":1,"tag":"ol"},{"children":[],"direction":null,"format":"","indent":0,"type":"paragraph","version":1},{"children":[],"direction":null,"format":"","indent":0,"type":"paragraph","version":1}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}}
\ No newline at end of file
diff --git a/npm/npm镜像设置.md b/npm/npm镜像设置.md
index adb2465..43e1967 100644
--- a/npm/npm镜像设置.md
+++ b/npm/npm镜像设置.md
@@ -1,14 +1,23 @@
查看当前镜像
-```apl
+```javascript
npm help config
npm config get registry
```
设置全局镜像
-```shell
+```javascript
npm config set registry https://registry.npm.taobao.org --global
```
版本管理:[GitHub - nvm-sh/nvm: Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions](https://github.com/nvm-sh/nvm#usage)
+
+```javascript
+## nvm
+node version manage
+## npm
+node package manage
+## nrm
+node remote manage
+```
\ No newline at end of file
diff --git a/react/qf/3路由.md b/react/qf/3路由.md
new file mode 100644
index 0000000..548d388
--- /dev/null
+++ b/react/qf/3路由.md
@@ -0,0 +1,25 @@
+HashRouter路径中有#
+BrowserRouter路径中无#
+BrowserRouter as Router ,可以将Router写在代码中。
+BrowserRouter 没有#的路径,好看,真正朝后端发请求要页面,后端没有对应的路径处理路径就回404,不好看。
+## 动态路由
+```js
+
+props.match.params.myid
+```
+## 路由拦截
+
+## 路由模式
+
+## withRouter 包裹路由
+## 反向代理
+
+## CSSModule
+.module.css 模块化css文件
+import style from './css/film.module.css'
+{style.clazz}
+
+
+
+id选择器,class选择器生效
+标签选择器,不生效
diff --git a/react/qf/4Redux.md b/react/qf/4Redux.md
new file mode 100644
index 0000000..e6ef9f0
--- /dev/null
+++ b/react/qf/4Redux.md
@@ -0,0 +1,4 @@
+# 纯函数
+1. 对外界没有副作用。
+2. 同样的输入得到同样的输出。
+
diff --git a/react/qf/5.css.md b/react/qf/5.css.md
new file mode 100644
index 0000000..c8d70c4
--- /dev/null
+++ b/react/qf/5.css.md
@@ -0,0 +1,4 @@
+- vh视图size
+- position:"sticky",top:0 吸顶效果
+- visibility:"hidden" 是否可见
+- padding: 调整周边距离
\ No newline at end of file
diff --git a/react/qf/6.md b/react/qf/6.md
new file mode 100644
index 0000000..b17af7c
--- /dev/null
+++ b/react/qf/6.md
@@ -0,0 +1,2 @@
+# immutable
+数据深拷贝
\ No newline at end of file
diff --git a/react/qf/7.styled-components.md b/react/qf/7.styled-components.md
new file mode 100644
index 0000000..e69de29
diff --git a/react/qf/8.react-test-renderer.md b/react/qf/8.react-test-renderer.md
new file mode 100644
index 0000000..e69de29
diff --git a/react/qf/img/6.mobx-autorun.png b/react/qf/img/6.mobx-autorun.png
new file mode 100644
index 0000000..d72443a
Binary files /dev/null and b/react/qf/img/6.mobx-autorun.png differ
diff --git a/react/qf/img/6.mobx-change.png b/react/qf/img/6.mobx-change.png
new file mode 100644
index 0000000..e8d6aef
Binary files /dev/null and b/react/qf/img/6.mobx-change.png differ
diff --git a/react/qf/img/6.mobx-class-store-1.png b/react/qf/img/6.mobx-class-store-1.png
new file mode 100644
index 0000000..62155ea
Binary files /dev/null and b/react/qf/img/6.mobx-class-store-1.png differ
diff --git a/react/qf/img/6.mobx-class-store-2-2.png b/react/qf/img/6.mobx-class-store-2-2.png
new file mode 100644
index 0000000..90d859e
Binary files /dev/null and b/react/qf/img/6.mobx-class-store-2-2.png differ
diff --git a/react/qf/img/6.mobx-class-store-2.png b/react/qf/img/6.mobx-class-store-2.png
new file mode 100644
index 0000000..a70bfb4
Binary files /dev/null and b/react/qf/img/6.mobx-class-store-2.png differ
diff --git a/react/qf/img/6.mobx-class-store-3.png b/react/qf/img/6.mobx-class-store-3.png
new file mode 100644
index 0000000..c8f59e3
Binary files /dev/null and b/react/qf/img/6.mobx-class-store-3.png differ
diff --git a/react/qf/img/6.mobx-class-store-4读取数据.png b/react/qf/img/6.mobx-class-store-4读取数据.png
new file mode 100644
index 0000000..8b40a71
Binary files /dev/null and b/react/qf/img/6.mobx-class-store-4读取数据.png differ
diff --git a/react/qf/img/6.mobx-class-store.png b/react/qf/img/6.mobx-class-store.png
new file mode 100644
index 0000000..6f7ba58
Binary files /dev/null and b/react/qf/img/6.mobx-class-store.png differ
diff --git a/react/qf/img/6.mobx-listen.png b/react/qf/img/6.mobx-listen.png
new file mode 100644
index 0000000..32325f4
Binary files /dev/null and b/react/qf/img/6.mobx-listen.png differ
diff --git a/react/qf/img/6.mobx-react1.png b/react/qf/img/6.mobx-react1.png
new file mode 100644
index 0000000..52b523e
Binary files /dev/null and b/react/qf/img/6.mobx-react1.png differ
diff --git a/react/qf/img/6.mobx-react2.png b/react/qf/img/6.mobx-react2.png
new file mode 100644
index 0000000..eafaba3
Binary files /dev/null and b/react/qf/img/6.mobx-react2.png differ
diff --git a/react/qf/img/6.mobx-react3.png b/react/qf/img/6.mobx-react3.png
new file mode 100644
index 0000000..0146e03
Binary files /dev/null and b/react/qf/img/6.mobx-react3.png differ
diff --git a/react/qf/img/6.mobx-runInAction.png b/react/qf/img/6.mobx-runInAction.png
new file mode 100644
index 0000000..88feab6
Binary files /dev/null and b/react/qf/img/6.mobx-runInAction.png differ
diff --git a/react/qf/img/6.mobx-store.png b/react/qf/img/6.mobx-store.png
new file mode 100644
index 0000000..2640231
Binary files /dev/null and b/react/qf/img/6.mobx-store.png differ
diff --git a/react/qf/img/6.mobx-取消订阅.png b/react/qf/img/6.mobx-取消订阅.png
new file mode 100644
index 0000000..6062810
Binary files /dev/null and b/react/qf/img/6.mobx-取消订阅.png differ
diff --git a/react/qf/img/6.mobx.png b/react/qf/img/6.mobx.png
new file mode 100644
index 0000000..8cb36ad
Binary files /dev/null and b/react/qf/img/6.mobx.png differ
diff --git a/react/qf/img/CSSModule微信截图_20231215190744.png b/react/qf/img/CSSModule微信截图_20231215190744.png
new file mode 100644
index 0000000..0a7b406
Binary files /dev/null and b/react/qf/img/CSSModule微信截图_20231215190744.png differ
diff --git a/react/qf/img/flux微信截图_20231215192013.png b/react/qf/img/flux微信截图_20231215192013.png
new file mode 100644
index 0000000..9f05096
Binary files /dev/null and b/react/qf/img/flux微信截图_20231215192013.png differ
diff --git a/react/qf/img/动态路由微信截图_20231215181049.png b/react/qf/img/动态路由微信截图_20231215181049.png
new file mode 100644
index 0000000..b258449
Binary files /dev/null and b/react/qf/img/动态路由微信截图_20231215181049.png differ
diff --git a/react/qf/img/路由拦截微信截图_20231215181801.png b/react/qf/img/路由拦截微信截图_20231215181801.png
new file mode 100644
index 0000000..3fcc05c
Binary files /dev/null and b/react/qf/img/路由拦截微信截图_20231215181801.png differ
diff --git a/react/qf/img/路由方式微信截图_20231215164148.png b/react/qf/img/路由方式微信截图_20231215164148.png
new file mode 100644
index 0000000..8e1547e
Binary files /dev/null and b/react/qf/img/路由方式微信截图_20231215164148.png differ
diff --git a/websocket.html b/websocket.html
new file mode 100644
index 0000000..4bff282
--- /dev/null
+++ b/websocket.html
@@ -0,0 +1,27 @@
+
+
+
+
+ WebSocket
+
+
+
+
+
\ No newline at end of file