{
  "url": "https://unifast.dev/vi/docs/packages/node/overview/",
  "locale": "vi",
  "title": "@unifast/node",
  "description": "Binding Node.js cho trình biên dịch Markdown/MDX unifast với lõi Rust native",
  "section": "packages",
  "body": "## Tổng quan\n\n`@unifast/node` là điểm truy cập chính để sử dụng unifast trong Node.js. Nó cung cấp hàm [`compile()`](/docs/packages/node/compile) để gọi trình biên dịch Rust native qua napi-rs nhằm đạt hiệu năng tối đa. Gói này cũng hỗ trợ hệ thống plugin, cho phép áp dụng các phép biến đổi HAST trong JavaScript sau bước biên dịch Rust.\n\n## Cài đặt\n\n> Addon Rust native phải được build trước. Chạy `cargo build -p unifast-bindings-node --release` nếu binary native chưa có sẵn.\n\n## Bắt đầu nhanh\n\n```ts\n\nconst result = compile(\"# Hello, **world**!\");\nconsole.log(result.output);\n// <h1 id=\"hello-world\">Hello, <strong>world</strong>!</h1>\n```\n\n## Pipeline plugin\n\nKhi các plugin được cung cấp, `compile()` thực thi pipeline sau:\n\n1. **Trích xuất plugin** - Tách `plugins` khỏi các tùy chọn còn lại\n2. **Gộp tùy chọn** - Deep-merge `options` của từng plugin vào tùy chọn biên dịch\n3. **Bắt buộc HAST** - Nếu có plugin nào có `hastTransform`, lời gọi native sẽ dùng `outputKind: \"hast\"`\n4. **Biên dịch native** - Gọi trình biên dịch Rust qua napi-rs\n5. **Biến đổi HAST** - Áp dụng `hastTransform` của từng plugin theo thứ tự\n6. **Chuyển đầu ra** - Nếu người dùng không yêu cầu đầu ra HAST, chuyển ngược về HTML qua `hastToHtml`\n\n## Plugin tích hợp sẵn\n\nCác hàm factory plugin sau được đóng gói sẵn — không cần cài đặt thêm:\n\n`gfm`, `frontmatter`, `sanitize`, `syntect`, `treeSitter`, `toc`, `externalLinks`, `autolinkHeadings`, `smartypants`, `wikiLink`, `codeImport`, `emoji`, `breaks`, `math`, `githubAlert`, `sectionize`, `directive`, `definitionList`, `rubyAnnotation`, `cjk`\n\n```ts\n\nconst result = compile(source, {\n  plugins: [gfm(), frontmatter(), syntect()],\n});\n```\n\n## Tổng hợp các export\n\n| Export | Loại | Mô tả |\n|--------|------|-------------|\n| `compile` | function | Biên dịch Markdown/MDX thành HTML hoặc các định dạng khác |\n| `gfm`, `frontmatter`, ... | function | Các factory plugin tích hợp sẵn (tổng cộng 20) |\n| `hastToHtml` | function | Bộ tuần tự hóa HAST-to-HTML (re-export từ `@unifast/core`) |\n| `CompileOptions` | type | Cấu hình biên dịch |\n| `CompileResult` | type | Kết quả biên dịch |\n| `UnifastPlugin` | type | Interface plugin |\n| `TocEntry` | type | Mục của bảng mục lục |\n| `HastRoot` | type | Nút gốc HAST |\n| `HastElement` | type | Nút phần tử HAST |\n| `HastText` | type | Nút văn bản HAST |\n| `HastNode` | type | Union của tất cả các loại nút HAST |\n| `UnifastError` | class | Lớp lỗi cơ sở |\n| `ParseError` | class | Lớp lỗi parse |\n| `CompileError` | class | Lớp lỗi biên dịch |",
  "alternates": [
    {
      "locale": "en",
      "url": "https://unifast.dev/docs/packages/node/overview/",
      "api": "https://unifast.dev//api/docs/packages/node/overview.json"
    },
    {
      "locale": "ja",
      "url": "https://unifast.dev/ja/docs/packages/node/overview/",
      "api": "https://unifast.dev//api/ja/docs/packages/node/overview.json"
    },
    {
      "locale": "zh-CN",
      "url": "https://unifast.dev/zh-CN/docs/packages/node/overview/",
      "api": "https://unifast.dev//api/zh-CN/docs/packages/node/overview.json"
    },
    {
      "locale": "zh-TW",
      "url": "https://unifast.dev/zh-TW/docs/packages/node/overview/",
      "api": "https://unifast.dev//api/zh-TW/docs/packages/node/overview.json"
    },
    {
      "locale": "ko",
      "url": "https://unifast.dev/ko/docs/packages/node/overview/",
      "api": "https://unifast.dev//api/ko/docs/packages/node/overview.json"
    },
    {
      "locale": "fr",
      "url": "https://unifast.dev/fr/docs/packages/node/overview/",
      "api": "https://unifast.dev//api/fr/docs/packages/node/overview.json"
    },
    {
      "locale": "it",
      "url": "https://unifast.dev/it/docs/packages/node/overview/",
      "api": "https://unifast.dev//api/it/docs/packages/node/overview.json"
    },
    {
      "locale": "es",
      "url": "https://unifast.dev/es/docs/packages/node/overview/",
      "api": "https://unifast.dev//api/es/docs/packages/node/overview.json"
    },
    {
      "locale": "pt-BR",
      "url": "https://unifast.dev/pt-BR/docs/packages/node/overview/",
      "api": "https://unifast.dev//api/pt-BR/docs/packages/node/overview.json"
    },
    {
      "locale": "de",
      "url": "https://unifast.dev/de/docs/packages/node/overview/",
      "api": "https://unifast.dev//api/de/docs/packages/node/overview.json"
    },
    {
      "locale": "ru",
      "url": "https://unifast.dev/ru/docs/packages/node/overview/",
      "api": "https://unifast.dev//api/ru/docs/packages/node/overview.json"
    },
    {
      "locale": "hi",
      "url": "https://unifast.dev/hi/docs/packages/node/overview/",
      "api": "https://unifast.dev//api/hi/docs/packages/node/overview.json"
    },
    {
      "locale": "id",
      "url": "https://unifast.dev/id/docs/packages/node/overview/",
      "api": "https://unifast.dev//api/id/docs/packages/node/overview.json"
    },
    {
      "locale": "tr",
      "url": "https://unifast.dev/tr/docs/packages/node/overview/",
      "api": "https://unifast.dev//api/tr/docs/packages/node/overview.json"
    },
    {
      "locale": "vi",
      "url": "https://unifast.dev/vi/docs/packages/node/overview/",
      "api": "https://unifast.dev//api/vi/docs/packages/node/overview.json"
    }
  ]
}
