jiahui
jiahui
```javascript const TurndownService = require("turndown"); const turndownService = new TurndownService(); const languageReg = /(? { const classList = node.getAttribute("class"); return node.nodeName === "CODE" && languageReg.test(classList); }, replacement: (content, node, options)...
 ## 前言 React 已于近日发布了 `v19` 的 beta 版本,同时为了帮助后续的 `v19` 升级,也同时发布了 `v18.3.0`的正式版, 与 `v18.2` 版本完全相同,但添加了弃用 API 的警告和其他为 React 19 所需的更改  ## 安装 ### 使用新版 JSX Transform 为了改善打包体积和可以在 JSX 文件中无需手动引入...
 ## 前言 人无完人,所以代码总会出异常的,异常并不可怕,关键是怎么处理 ## 什么是异常 **程序发生了意想不到的情况,影响到了程序的正确运行** 从根本上来说,异常就是一个普通的对象,其保存了异常发生的相关信息,比如错误码、错误信息等。以 JS 中的标准内置对象 Error 为例,其标准属性有 message。许多宿主环境额外增加了 filename 和 stack 等属性 错误只有被 throw,才会产生异常,不被抛出的错误不会产生异常。比如直接`new Error()`甚至打印 Error 但是不 throw,也是不会产生异常 ## 异常的分类 #### 编译时异常 源代码在编译成可执行代码之前产生的异常,无需执行即有异常。编译、语法解析发生错误。编译型语言对于这种很常见的,但是解析型的 js 也是会有编译型异常。通常是非合法的...
 ## 前言 ECMAScript 模块是 JavaScript 的新标准格式。在 Node.js 中越来越多的库逐渐从从 CommonJS 转移到 ES 模块 > 注:这里是指“真”ES 模块并不是指代码中 Node.js 中使用 import 写法但是实际被 tsc 转成 commonJS 的形式 但是 Node.js ES 开发中此前有一个棘手的问题是获取当前文件目录、路径。不过这个问题在最近也已经解决 ## 结论...
 ## 前言 平时不少同学都有写博客的习惯,这里介绍一种通过Github Issue写博客并自动部署hexo到Github Page的工作流。本文主要介绍 1. 什么是Github action以及它的基本用法 2. 如何开发并发布一个Github action 3. 如何打造Github issue写博客并自动部署hexo到Github Page的工作流 ## 什么是Github action GitHub action 是一个持续集成和持续交付平台,可以自动化构建、测试和部署。例如可以创建工作流来构建和测试仓库的每个pr,或将合并pr部署到生产环境  这张图从左到右分别是: 1. Event: 触发action的事件。代表仓库中的某个触发工作流执行的行为 2. Workflow: 事件发生时运行的工作流...
 ## 默认导出 对于开发一个 JavaScript 三方库供外部使用而言,`package.json`是其中不可缺少的一部分 一般而言,对于库开发者来说,我们会在`package.json`中指定我们的导出入口。一般而言会涉及两个字段`main`和`export`,它们会涉及到当前模块在被导入的行为。通常我们会将`main`字段指向 cjs 产物,`module`字段指向 ES 产物 ### `main` `main`字段指定了该模块的主入口文件,即 require 该模块时加载的文件。该字段的值应为相对于模块根目录的路径或者是一个模块名(如`index.js`或`lib/mymodule.js`,如果是模块名,则需要保证在该模块根目录下存在该模块)。主入口文件可以是 JavaScript 代码、JSON 数据或者是 Node.js C++扩展 ### `module` `module`字段是 ES 模块规范下的入口文件,它被用于支持 import 语法。当使用 esm 或...
 > 本文翻译自:https://react.dev/blog/2023/03/22/react-labs-what-we-have-been-working-on-march-2023 ## React Server Components React Server Components(下文简称 RSC) 是由 React 团队设计的新应用程序架构。 我们首先在一个[介绍性演讲](https://react.dev/blog/2020/12/21/data-fetching-with-react-server-components)和一个[RFC](https://github.com/reactjs/rfcs/pull/188)中分享了我们对 RSC 的研究。简要概括一下,我们正在引入一种新型组件——Server Components,它们可以提前运行,并且不包含在你的 JavaScript bundle 中。RSC 可以在构建过程中运行,让你从文件系统中读取或获取静态内容。它们也可以在服务器上运行,让你无需构建 API 即可访问数据层。你可以通过 props 将数据从 Server Components 传递到浏览器中的交互式 Client...
 ## 前言  koa是一个非常流行的Node.js http框架。本文我们来学习下它的使用和相关源码 > 来自官网的介绍: Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石。 通过利用 async 函数,Koa 帮你丢弃回调函数,并有力地增强错误处理。 Koa 并没有捆绑任何中间件, 而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序 ## 为什么使用koa 使用koa而不直接使用Node.js的http模块 1....
 ## 一个超方便将现有博客生成vuepress2文档站的插件 闲来无事,研究了一下vuepress2和它的插件机制,写了一个可以一键通过已有博客生成vuepress2的文档站的vuepress2插件[vuepress-plugin-blog-sync](https://github.com/flytam/vuepress-plugin-blog-sync) ### 效果 在vuepress2中简单引入即可达到将[政采云掘金博客](https://juejin.cn/user/3456520257288974/posts)一键生成vuepress2页面,效果✨ 详见[Demo](https://blog.flytam.vip/vuepress-plugin-blog-sync)  ### 使用 安装插件 ```bash npm i vuepress-plugin-blog-sync ``` 按照vuepress[文档](https://v2.vuepress.vuejs.org/zh/guide/getting-started.html)初始化后,`vuepress.config.ts`中修改成如下配置引入插件即可达到效果 ```ts // vuepress.config.ts import { defaultTheme, defineUserConfig } from 'vuepress' import {...
 > 本文通过对`preact`的`hook`源码分析,理解和掌握`react/preact`的`hook`用法以及一些常见的问题。虽然`react`和`preact`的实现上有一定的差异,但是对于`hook`的表现来说,是基本一致的。对于 preact`的`hook`分析,我们很容易旧记住 hook 的使用和防止踩一些误区 preact hook 作为一个单独的包`preact/hook`引入的,它的总代码包含注释区区 300 行。 在阅读本文之前,先带着几个问题阅读: 1、函数组件是无状态的,那么为什么 hook 让它变成了有状态呢? 2、为什么 hook 不能放在 条件语句里面 3、为什么不能在普通函数执行 hook ### 基础 前面提到,`hook`在`preact`中是通过`preact/hook`内一个模块单独引入的。这个模块中有两个重要的模块内的全局变量:1、`currentIndex`:用于记录当前函数组件正在使用的 hook 的顺序(下面会提到)。2、`currentComponent`。用于记录当前渲染对应的组件。 `preact hook` 的实现对于原有的 `preact`...