uz
Feedback
ToCode

ToCode

Kanalga Telegramโ€™da oโ€˜tish

ื˜ื™ืคื™ื ืงืฆืจื™ื ืœืžืชื›ื ืชื™ื ืžืืช ื™ื ื•ืŸ ืคืจืง

Ko'proq ko'rsatish
1 419
Obunachilar
-124 soatlar
Ma'lumot yo'q7 kunlar
-430 kunlar
Postlar arxiv
ToCode
1 419
ืคืจื•ื™ืงื˜ AI ื—ื“ืฉ ื‘ืงื•ื“ ืคืชื•ื— ืœืชืจื’ื•ืœ ืฉืคื•ืช ืžื•ื–ื™ืงื” ื”ื™ื ื“ืจืš ืžืฆื•ื™ื ืช ืœืœืžื•ื“ ืžื™ืœื™ื ื—ื“ืฉื•ืช ื‘ืฉืคื” ื–ืจื” ื•ืœืชืจื’ืœ ืืช ื”ืžื™ืœื™ื ื›ื™ ื›ืฉื™ืฉ ืฉื™ืจ ื˜ื•ื‘ ืื ื—ื ื• ืฉื•ืžืขื™ื ืื•ืชื• ืฉื•ื‘ ื•ืฉื•ื‘. ืœื ื’ืœื˜ืก ื”ื•ื ื”ื ื™ืกื™ื•ืŸ ืฉืœื™ ืœืขืฉื•ืช ืกื“ืจ ื‘ืชื”ืœื™ืš ื”ื–ื” ื•ืœื‘ื ื•ืช ืžืขืจื›ืช ืœื™ืžื•ื“ ืฉืคื” ืžืกื•ื“ืจืช ืžืฉื™ืจื™ื ื‘ื™ื•ื˜ื™ื•ื‘. ืžื” ืฉื”ืคืจื•ื™ืงื˜ ื™ื•ื“ืข ืœืขืฉื•ืช ื›ื‘ืจ ื”ื™ื•ื: 1. ืžื“ื‘ื™ืงื™ื ืงื™ืฉื•ืจ ืœืฉื™ืจ ื‘ื™ื•ื˜ื™ื•ื‘. 2. ื”ืžืขืจื›ืช ืžืคืขื™ืœื” AI ื›ื“ื™ ืœื”ื•ืฆื™ื ืืช ื”ืžื™ืœื™ื ืฉืœ ื”ืฉื™ืจ, ืœืชืจื’ื ืืช ื”ืžื™ืœื™ื ื•ื”ื‘ื™ื˜ื•ื™ื™ื ื•ืœื™ืฆื•ืจ ืชืจื’ื™ืœื™ ืื•ืฆืจ ืžื™ืœื™ื ืžื”ืชื•ื›ืŸ. 3. ื“ืจืš ื”ืžืžืฉืง ืืคืฉืจ ืœื”ืงืฉื™ื‘ ืœืฉื™ืจ ื‘ื—ืœืงื™ื ื•ื›ืœ ืคืขื ืœืชืจื’ืœ ื—ืœืง ืื—ืจ. ืืคืฉืจ ืœืจืื•ืช ื›ืืŸ ื“ื•ื’ืžื” ืœืฉื™ืจ ื‘ืขืจื‘ื™ืช ืขื ืชืจื’ื•ื ืœืื ื’ืœื™ืช https://langlets.app/courses/BsvhDWS5voU ื•ืื—ื“ ื‘ืกืคืจื“ื™ืช ืขื ืชืจื’ื•ื ืœืื ื’ืœื™ืช https://langlets.app/courses/5R0TtX-gVHA ืื ืชืจืฉืžื• ืœืืชืจ ืชื•ื›ืœื• ื’ื ืœื”ื“ื‘ื™ืง ืงื™ืฉื•ืจื™ื ืฉืœื›ื ื•ืœืคืขืžื™ื ื–ื” ืขื•ื‘ื“. ืžื” ื”ืœืื” ื”ืคืจื•ื™ืงื˜ ืžืžืฉ ื‘ืชื—ื™ืœืช ื”ื“ืจืš ื•ื™ืฉ ืขื“ื™ื™ืŸ ื”ืžื•ืŸ ื“ื‘ืจื™ื ื—ืกืจื™ื, ืืœื” ื”ื“ื‘ืจื™ื ื”ืžืจื›ื–ื™ื™ื ืฉืื ื™ ืจื•ืฆื” ืœื”ื•ืกื™ืฃ: 1. ืžืกืš "ืกื˜ื˜ื•ืก ื™ืฆื™ืจื”" ืฉืžืจืื” ื‘ืฆื•ืจื” ื™ืคื” ืืช ืฉื™ืขื•ืจ ื”ืฉืคื” ืฉื ื•ืฆืจ ืื—ืจื™ ืฉืžื“ื‘ื™ืงื™ื ืœื™ื ืง (ื›ืจื’ืข ื–ื” ืืกื™ื ื›ืจื•ื ื™ ื•ืคืฉื•ื˜ ืฉื•ืœื—ื™ื ืžื™ื™ืœ ื›ืฉื”ืฉื™ืขื•ืจ ืžื•ื›ืŸ). 2. ืืคืฉืจื•ืช ืœืขืจื™ื›ื” ืฉืœ ื”ืชื›ื ื™ื ืฉื” AI ื™ืฆืจ ื›ื“ื™ ืœืชืงืŸ ืื• ืœืฉืคืจ. 3. ืชืจื’ื•ืœื™ ืฉืคื” ื˜ื•ื‘ื™ื ื•ื™ืฆื™ืจืชื™ื™ื ื™ื•ืชืจ (ื–ื” ื”ื—ืœืง ื”ื›ื™ ืงืฉื” ืœื“ืขืชื™ ื›ื™ ืฆืจื™ืš ืœื”ื‘ื™ืŸ ืื™ืš ื™ื”ื™ื” ื”ื›ื™ ื›ื™ืฃ ืœืœืžื•ื“ ื•ืœืชืจื’ืœ ืฉื™ืจื™ื ื‘ืฉืคื” ื–ืจื”). 4. ื“ืจืš ืงืœื” ืœืฉืชืฃ ืฉื™ืขื•ืจื™ื ืฉื™ืฆืจืชื™ ืขื ื—ื‘ืจื™ื. 5. ืืคืœื™ืงืฆื™ื” ืœืื™ื™ืคื•ืŸ ื•ืื ื“ืจื•ืื™ื“. ื”ืคืจื•ื™ืงื˜ ื›ื•ืœืœ ื”ืžื•ืŸ ืขื‘ื•ื“ื” ืขื AI ื•ื›ื‘ืจ ืœื™ืžื“ ืื•ืชื™ ื”ืจื‘ื” ืขืœ ื›ืชื™ื‘ืช ืคืจื•ืžืคื˜ื™ื, ืขื‘ื•ื“ื” ืขื ืžื•ื“ืœื™ื, ืžื” AI ื™ื›ื•ืœ ื•ืœื ื™ื›ื•ืœ ืœืขืฉื•ืช. ื›ืžื• ืฉื›ืชื‘ืชื™ ื‘ืคืชื™ื—ื” ืื ืืชื ื™ื•ื“ืขื™ื ืœื›ืชื•ื‘ ืงื•ื“, ื—ื•ืฉื‘ื™ื ืฉื”ืจืขื™ื•ืŸ ืžื“ืœื™ืง ื•ืจื•ืฆื™ื ืœืขื–ื•ืจ ืœืงื“ื ืื•ืชื• ื›ืชื‘ื• ืœื™ ื”ื•ื“ืขื” ื•ืืฉืžื— ืœื”ื›ื ื™ืก ืืชื›ื ืœืขื ื™ื™ื ื™ื. ืืช ืงื•ื“ ื”ืคืจื•ื™ืงื˜ ื”ืžืœื ืชื•ื›ืœื• ืœืžืฆื•ื ื‘ื’ื™ื˜ื”ืื‘ ืฉืœื• ื‘ืงื™ืฉื•ืจ ื”ื–ื”: https://github.com/ynonp/langlets-rails

ToCode
1 419
ืืœืžื ื˜ Activity ื‘ React ืื– React 19.2 ื”ื•ืกื™ืคื• ืืœืžื ื˜ ื—ื“ืฉ ืฉื”ืจื‘ื” ืื ืฉื™ื ืื•ื”ื‘ื™ื ื‘ืฉื Activity. ื”ืื ื‘ืืžืช ืฆืจื™ืš ืื•ืชื•? ื‘ื•ืื• ื ืจืื” ืžื” ื”ื•ื ืขื•ืฉื” ื•ืืชืŸ ืœื›ื ืœื”ื—ืœื™ื˜ ืขื“ ืกื•ืฃ ื”ืคื•ืกื˜. ืืœืžื ื˜ Activity ืขื•ืฉื” ืฉื ื™ ื“ื‘ืจื™ื, ื”ืจืืฉื•ืŸ ื”ื•ื ื”ื’ื“ืจืช ื›ืœืœ ื”ืขื™ืฆื•ื‘ display: none ืœื›ืœ ื”ื™ืœื“ื™ื ืฉืœื• ื›ื“ื™ ืฉื”ื ืขื“ื™ื™ืŸ ื™ื™ืฉืืจื• ื‘ื—ื™ื™ื ืื‘ืœ ืœื ื™ื•ืคื™ืขื• ืขืœ ื”ืžืกืš. ื‘ืžืžืฉืงื™ ื˜ืื‘ื™ื ืžื ื’ื ื•ืŸ ื›ื–ื” ื™ื›ื•ืœ ืœืขื‘ื•ื“ ื˜ื•ื‘ ื™ื•ืชืจ ืžืžื—ื™ืงื” ืžื•ื—ืœื˜ืช ืฉืœ ื”ืืœืžื ื˜ ื›ื™ ื›ืฉืจืง ืžืฉื ื™ื ืืช ื” display ื”ืืœืžื ื˜ ืขื“ื™ื™ืŸ ืฉื•ืžืจ ืขืœ ื” state ืฉืœื• ื•ื›ืœ ื”ืžื™ื“ืข ื‘ DOM ื ืฉืžืจ, ืื– ืื ื™ืฉ ืœื ื• ื˜ื•ืคืก ื‘ืื—ื“ ื”ื˜ืื‘ื™ื ื•ืขื•ื‘ืจื™ื ืœื˜ืื‘ ืื—ืจ ื•ื—ื•ื–ืจื™ื ื”ื˜ื•ืคืก ืขื“ื™ื™ืŸ ื™ืฉืžื•ืจ ืขืœ ื”ืขืจื›ื™ื ืฉื ื›ืชื‘ื• ื‘ื•. ื ืฉื™ื ืœื‘ ืฉื’ื ืœืคื ื™ ืจื™ืืงื˜ 19.2 ื‘ื ื™ื ื• ืžื ื’ื ื•ื ื™ื ื›ืืœื” ื•ืคืฉื•ื˜ ื”ื’ื“ืจื ื• ืœื‘ื“ ืืช ื›ืœืœ ื”ืขื™ืฆื•ื‘ display: none ื›ืฉืžืฉืชืžืฉื™ื ื ื™ื•ื•ื˜ื• ื‘ื™ืŸ ื˜ืื‘ื™ื. ื”ื›ื— ื”ืฉื ื™ ืฉืœ Activity, ื•ื”ื•ื ื”ื“ื‘ืจ ื”ื—ื“ืฉ ืฉื‘ื’ืœืœื• ื ื›ื ืกื” ืงื•ืžืคื•ื ื ื˜ื” ื—ื“ืฉื” ืœืจื™ืืงื˜ ื”ื•ื ืžื—ื™ืงื” ืฉืœ ื”ืืคืงื˜ื™ื ื•ื”ืจืฆืช ืคื•ื ืงืฆื™ื•ืช ื”ื ื™ืงื•ื™ ืฉืœ ื›ืœ ื”ืืคืงื˜ื™ื ื•ื” Cleanup Refs. ืžืฆื“ ืื—ื“ ืžื ื’ื ื•ืŸ ื–ื” ืขื•ื–ืจ ืื ื™ืฉ ืœื ื• ื‘ืชื•ืš ืขืฅ ื”ืงื•ืžืคื•ื ื ื˜ื•ืช ืฉืœ ืื—ื“ ื”ื˜ืื‘ื™ื ืืคืงื˜ื™ื ืฉืื™ืŸ ื‘ื”ื ืฆื•ืจืš ื‘ื™ืฆื™ืื” ืžื”ื˜ืื‘ - ืœื“ื•ื’ืžื” ืื•ืœื™ ื™ืฉ ืืœืžื ื˜ ืฉืžืฉืชืžืฉ ื‘ืžืฆืœืžื” ืื– ื”ื’ื™ื•ื ื™ ืœืกื’ื•ืจ ืืช ื”ืžืฆืœืžื” ื›ืฉืขื•ื‘ืจื™ื ื˜ืื‘. ื‘ื“ื•ื’ืžืื•ืช ื‘ืชื™ืขื•ื“ ื”ื ืžื“ื‘ืจื™ื ืขืœ ื ื’ืŸ ื•ื™ื“ืื• ืฉื›ื“ืื™ ืœืขืฆื•ืจ ืœืคื ื™ ืฉื™ื•ืฆืื™ื ืžื”ื˜ืื‘. ืžืฆื“ ืฉื ื™ ืื ื”ืืคืงื˜ ืฉืœื›ื ืžืงืฉื™ื‘ ืœืื™ืจื•ืขื™ื ืž Web Socket ื•ืžืขื“ื›ืŸ ืืช ื” UI ืื– ื›ื™ื‘ื•ื™ ื”ืืคืงื˜ ืžืคืกื™ืง ืืช ื”ื”ืื–ื ื” ืœืื™ืจื•ืขื™ื ื•ื›ืš ื›ืฉื ื—ื–ื•ืจ ืœื˜ืื‘ ื ืฆื˜ืจืš ืœื‘ืฆืข ืขื“ื›ื•ืŸ ื™ื–ื•ื. ื”ื ื” ื“ื•ื’ืžื” ืงื˜ื ื” ืœ Activity ื‘ืคืขื•ืœื” ืขื ื›ืžื” ื”ื•ื“ืขื•ืช debug ื›ื“ื™ ืœื”ื‘ื™ืŸ ืื™ืš ื–ื” ืขื•ื‘ื“. ืืคืฉืจ ืœื”ื“ื‘ื™ืง ืื•ืชื” ื‘ื›ืœ ื™ื™ืฉื•ื next 16:
'use client';

import { useState, useRef, useEffect, Activity } from "react";

function refChanged(el: any) {
  console.log(\set ref\);
  return () => {
    console.log(\unset ref\)
  }
}

function ActivityDemo() {
  useEffect(() => {
    console.log(\start effect\)
    return () => {
      console.log(\stop effect\)
    }
  }, [])

  return (
    <p ref={refChanged}>hello world</p>
  )
}

export default function Home() {
  const [visible, setVisible] = useState(true);

  return (
    <div>
      <input type="checkbox" checked={visible} onChange={() => setVisible(v => !v)} />
      <Activity mode={visible ? "visible" : "hidden"}>
        <ActivityDemo />
      </Activity>
    </div>
  );
}
ื”ืงื•ืžืคื•ื ื ื˜ื” ActivityDemo ืžืฆื™ื’ื” ื”ื•ื“ืขื” ืื—ืช ื›ืฉื ื•ืฆืจ ื”ืืคืงื˜ ื•ื”ื•ื“ืขื” ื ื•ืกืคืช ื›ืฉื” ref ืžืชืขื“ื›ืŸ. ื›ืฉืžื›ื‘ื™ื ืืช ืชื™ื‘ืช ื”ื‘ื—ื™ืจื” ื”ืงื•ืžืคื•ื ื ื˜ื” ื”ื•ืคื›ืช ื‘ืœืชื™ ื ืจืื™ืช ื•ืื ื—ื ื• ืžืงื‘ืœื™ื ืืช ื”ื”ื•ื“ืขื•ืช unset ref ื• stop effect ื›ืชื•ืฆืื” ืžื›ื™ื‘ื•ื™ ื”ืืคืงื˜ ื•ื” Ref Cleanup Callback. ืื– ืžื” ื“ืขืชื›ื? ื–ื• ื”ืงื•ืžืคื•ื ื ื˜ื” ืฉื”ื™ืชื” ื—ืกืจื” ืœืจื™ืืงื˜? ืื ื™ ื—ื•ืฉื‘ ืฉืœื. ื”ืกืชืจื” ืฉืœ ื˜ืื‘ื™ื ืขืฉื™ื ื• ื’ื ืงื•ื“ื ืขื ื”ื’ื“ืจืช display: none ื‘ CSS. ืžื™ ืฉืจืฆื” ืœื›ื‘ื•ืช ืืคืงื˜ื™ื ืกืคืฆื™ืคื™ื™ื ื‘ื™ืฆื™ืื” ืžื”ื˜ืื‘ ื”ื’ื“ื™ืจ ืืช ื”"ื ืจืื•ืช" ื‘ืชื•ืจ prop ื•ื”ืฉืชืžืฉ ื‘ื” ื‘ืžืขืจืš ื”ืชืœื•ื™ื•ืช ืฉืœ ื”ืืคืงื˜. ื›ื™ื‘ื•ื™ ื›ืœ ื”ืืคืงื˜ื™ื ื›ื‘ืจื™ืจืช ืžื—ื“ืœ ื›ื ืจืื” ืจืง ืชื‘ืœื‘ืœ. ืœืžื™ื“ืข ื ื•ืกืฃ ื•ืขื•ื“ ื”ืžื•ืŸ ื“ื•ื’ืžืื•ืช ืขื ื”ืงื•ืžืคื•ื ื ื˜ื” ื”ื—ื“ืฉื” ืฉื•ื•ื” ืœื”ืขื™ืฃ ืžื‘ื˜ ื‘ื“ืฃ ื”ืชื™ืขื•ื“ ืฉืœื”ื: https://react.dev/reference/react/Activity

ToCode
1 419
ืงื•ืžื™ื˜ ื‘ืœื™ ืคื•ืฉ (ืื• - ืžืชื™ ืœื™ืฆื•ืจ ืืช ื”ืขื ืฃ) ื”ืจื‘ื” ืžืงื•ืžื•ืช ืขื•ื‘ื“ื™ื ืขื ื’ื™ื˜ ื‘ืฉื™ื˜ืช ืขื‘ื•ื“ื” ื“ื•ืžื”. ื‘ืฉื‘ื™ืœ ืœื”ืชื—ื™ืœ ืœืขื‘ื•ื“ ืขืœ ืคื™ืฆ'ืจ ื™ื•ืฆืจื™ื ืขื ืฃ, ืขื•ืฉื™ื ืงื•ืžื™ื˜ื™ื ืœืื•ืชื• ืขื ืฃ, ื›ืฉื”ืคื™ืฆ'ืจ ืžื•ื›ืŸ ืฉื•ืœื—ื™ื PR ื•ื‘ืกื•ืฃ ืื—ืจื™ ื”ืžื™ื–ื•ื’ ืžื•ื—ืงื™ื ืืช ื”ืขื ืฃ. ืื ื™ ืžื‘ื™ืŸ ืœืžื” ื–ื• ื’ื™ืฉื” ืคื•ืคื•ืœืจื™ืช: 1. ืฉืงื™ืคื•ืช - ื›ื•ืœื ืจื•ืื™ื ืืช ื”ืขื ืคื™ื ื•ื”ืขื‘ื•ื“ื” ืฉืœ ื›ื•ืœื. 2. ื’ื™ื‘ื•ื™ - ืืคืฉืจ ืœืขืฉื•ืช push ืื—ืจื™ ื›ืœ ืงื•ืžื™ื˜ ื•ื›ืš ื”ื ืชื•ื ื™ื ืžื’ื•ื‘ื™ื ืœืฉืจืช. 3. ืฉื™ืชื•ืฃ ืคืขื•ืœื” - ืื ื™ ื™ื›ื•ืœ ื‘ืžื”ืœืš ื”ืขื‘ื•ื“ื” ืœื‘ืงืฉ ืขื–ืจื” ืžื—ื‘ืจ ืื• ื—ื‘ืจื”, ื”ื ื™ืžืฉื›ื• ืืช ื”ืขื ืฃ ืฉืœื™ ื™ืฉื™ืžื• ืชื™ืงื•ืŸ ื•ื™ื“ื—ืคื•. ื™ืฆื™ืจืช ืขื ืฃ ื‘ืชื—ื™ืœืช ื”ืขื‘ื•ื“ื” ืขืœ ืคื™ืฆ'ืจ ืขื•ื–ืจืช ืœืฉืžื•ืจ ืขืœ ืกื“ืจ ืขื‘ื•ื“ื” ื•ืžื•ืขื™ืœื” ื‘ืžื™ื•ื—ื“ ื›ืฉืื ื—ื ื• ืจืง ืžืชื—ื™ืœื™ื ืœืขื‘ื•ื“ ืขื ื’ื™ื˜. ืื‘ืœ ื–ื• ืจืง ื“ืจืš ืื—ืช ืœืขื‘ื•ื“. ื‘ื—ื™ื™ื ืžื•ืชืจ ืœื’ื•ื•ืŸ, ื‘ืžื™ื•ื—ื“ ืื ืืชื ืงืฆืช ื™ื•ืชืจ ืžื™ื•ืžื ื™ื ืขื ื’ื™ื˜. ืœื“ื•ื’ืžื” ืื ืื ื™ ืœื ืฆืจื™ืš ืœืฉืชืฃ ืืช ื”ืขื‘ื•ื“ื” ื•ืจืง ื—ื•ืงืจ ืจืขื™ื•ืŸ, ืื ื™ ื™ื›ื•ืœ ืœื—ื›ื•ืช ืขื ื™ืฆื™ืจืช ื”ืขื ืฃ ื•ืขื ื” push. ืื ื™ ืžืงื•ื“ื“ ืขืœ ื”ืžื›ื•ื ื” ืฉืœื™, ืขื“ื™ื™ืŸ ืขื•ืฉื” ืงื•ืžื™ื˜ื™ื ืจื’ื™ืœ ื‘ื›ืœ ืฆืขื“ ื•ืื—ืจื™ ืฉื”ืคื™ืฆ'ืจ ืขื•ื‘ื“ ืื ื™ ืžืคืขื™ืœ rebase ื›ื“ื™ ืœืžื—ื•ืง ื—ืœืง ืžื”ืงื•ืžื™ื˜ื™ื ื•ืœืฉื ื•ืช ื”ื•ื“ืขื•ืช ืฉืœ ืื—ืจื™ื ื•ืจืง ืื– ื™ื•ืฆืจ ืืช ื”ืขื ืฃ ื•ื“ื•ื—ืฃ. ื‘ืฆื•ืจื” ื›ื–ืืช ื›ืœ ื”ืื—ืจื™ื ื‘ืฆื•ื•ืช ืจื•ืื™ื ื”ื™ืกื˜ื•ืจื™ื” ื™ื•ืชืจ ื‘ืจื•ืจื” ืฉืœ ืงื•ืžื™ื˜ื™ื. ื›ืœ ืขื•ื“ ืœื ื“ื—ืคืชื™ ื”ืจื‘ื” ื™ื•ืชืจ ืงืœ ืœืฉื ื•ืช ืื• ืœื–ืจื•ืง ืงื•ืžื™ื˜ื™ื ื‘ืœื™ ืœื“ืื•ื’ ืฉืื•ืœื™ ืžื™ืฉื”ื• ื›ื‘ืจ ืžืฉืš ืืช ื”ืงื•ืžื™ื˜ื™ื ื”ืืœื”. ื“ืจืš ืืคื™ืœื• ื™ื•ืชืจ ื˜ื•ื‘ื” ื”ื™ื ืœื™ืฆื•ืจ ืืช ื”ืขื ืฃ ืื‘ืœ ืœื—ื›ื•ืช ืขื ื”ื“ื—ื™ืคื” ืฉืœื• ื•ืฉืœ ื”ืงื•ืžื™ื˜ื™ื. ื›ืฉื“ื•ื—ืคื™ื ืขื ืฃ ืคืขื ืจืืฉื•ื ื” ื’ื™ื˜ ืžืชืœื•ื ืŸ ื•ื“ื•ืจืฉ ืฉื ื™ืฆื•ืจ ืืช ื”ืขื ืฃ ื‘ืฆื•ืจื” ืžืคื•ืจืฉืช ื‘ืฉืจืช:
fatal: The current branch test has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin test

To have this happen automatically for branches without a tracking
upstream, see 'push.autoSetupRemote' in 'git help config'.
ืืคืฉืจ ืœื”ืžืฉื™ืš ืœืขื‘ื•ื“ ืขืœ ืขื ืฃ ืžืงื•ืžื™ ื‘ืœื™ ืœื”ื’ื“ื™ืจ ืืช ื” upstream ื•ื‘ืœื™ ืœืขืฉื•ืช push ื•ืœื”ื™ืขื–ืจ ื‘ื”ื•ื“ืขื” ื”ื–ืืช ื›ื“ื™ ืœื ืœืขืฉื•ืช push ื‘ื˜ืขื•ืช. ืžืชื™ ื›ืŸ ืœื“ื—ื•ืฃ? ืื—ืจื™ ื” rebase ื›ืฉื›ืœ ื”ืงื•ืžื™ื˜ื™ื ืขื•ื“ื›ื ื• ืขื ื”ื”ื•ื“ืขื•ืช ื”ื ื›ื•ื ื•ืช.

ToCode
1 419
ืื™ืš ืœื–ื•ื– ื™ื•ืชืจ ืœืื˜ ืฉืœื•ืฉ ืจืžื•ืช ืฉืœ ืœื™ืžื•ื“ ืžื—ื•ืžืจ ื›ืชื•ื‘ ืื• AI: 1. ื”ืฉืœืžื” ืื•ื˜ื•ืžื˜ื™ืช - ื–ื” ื›ืฉืื ื™ ืžื‘ืงืฉ ืžื” AI ืœื›ืชื•ื‘ ืืช ื”ืงื•ื“ ื‘ืฉื‘ื™ืœื™ ื™ืฉืจ ื‘ืชื•ืš ื” IDE ื•ืœื”ืกื‘ื™ืจ ืžื” ื”ื•ื ื›ืชื‘, ืื• ื›ืฉืื ื™ ืžืชื—ื™ืœ ืœื›ืชื•ื‘ ื•ืžืฉืชืžืฉ ื‘ื˜ืื‘ ื›ื“ื™ ืœื”ืฉืœื™ื ืืช ื”ืžื™ืžื•ืฉื™ื. 2. ื”ืขืชืงื” - ื–ื” ื›ืฉืื ื™ ืžื‘ืงืฉ ืžื” AI ืœื›ืชื•ื‘ ืืช ื”ืงื•ื“ ื‘ืชื•ืš ืžืกืš ื”ืฆ'ื˜ ืื• ื›ืฉืื ื™ ืงื•ืจื ืžื“ืจื™ืš ื›ืชื•ื‘ ื‘ื—ืœื•ืŸ ืื—ื“ ื•ื›ื•ืชื‘ ืืช ืื•ืชื• ื”ืงื•ื“ ืœื‘ื“ ืžืืคืก ื‘ื—ืœื•ืŸ ื” IDE ืฉืœื™ (ืœื ื”ืขืชืง-ื”ื“ื‘ืง, ืžืžืฉ ืžืงืœื™ื“). ืคื” ื›ื‘ืจ ืœืงื—ืชื™ ืฆืขื“ ืžืฉืžืขื•ืชื™ ืงื“ื™ืžื” ืžื‘ื—ื™ื ืช ืจืžืช ื”ืœื™ืžื•ื“. ืื ื™ ืœื ื‘ื˜ื•ื— ืœืžื” ืื‘ืœ ื”ื”ืงืœื“ื” ืขืฆืžื” ื“ื•ืจืฉืช ืจืžืช ื”ื‘ื ื” ื™ื•ืชืจ ืžืขืžื™ืงื” ืž Copy/Paste. 3. ืฉื™ื ื•ื™ื™ื ืงื˜ื ื™ื - ืžื“ืจื’ื” ืฉืœื™ืฉื™ืช ื–ื” ื›ืฉืื ื™ ืžืฉื ื” ื“ื‘ืจื™ื ืงื˜ื ื™ื ื‘ืงื•ื“ ืื• ื‘ื”ื ื—ื•ืช ื”ื™ืกื•ื“ ืฉืœื•. ืœื“ื•ื’ืžื” ืื ื™ ืžื‘ืงืฉ ืž AI ืœื›ืชื•ื‘ ื“ื•ื’ืžื” ืœืงื•ืžืคื•ื ื ื˜ื” ื‘ืจื™ืืงื˜ ื•ืื– ื”ื•ืœืš ืœ IDE ื•ื‘ื•ื ื” ืืช ื”ืงื•ืžืคื•ื ื ื˜ื” ื‘ next.js ืื• ืžื—ืœื™ืฃ ืฉืคืช ืชื›ื ื•ืช ื•ื›ื•ืชื‘ ืืช ื”ืงื•ืžืคื•ื ื ื˜ื” ืœื‘ื“ ื‘ Reagent ืฉื–ื” ื”ืจื™ืืงื˜ ืœ ClojureScript. ืื• ืื ืื ื™ ืœื•ืžื“ Machine Learning ืื ื™ ื™ื›ื•ืœ ืœืงืจื•ื ืžื“ืจื™ืš ื‘ pytorch ื•ืœื›ืชื•ื‘ ืืช ื“ื•ื’ืžืช ื”ืงื•ื“ ื‘ืขืฆืžื™ ื‘ C++ ื‘ libtorch ืื• ื‘ torch-rb ื‘ืจื•ื‘ื™. ื›ืชื™ื‘ืช ื”ืงื•ื“ ืžื—ื“ืฉ ื‘ืกื‘ื™ื‘ื” ืงืฆืช ืฉื•ื ื” ื“ื•ืจืฉืช ืจืžื” ื™ื•ืชืจ ื’ื‘ื•ื”ื” ืฉืœ ื”ื‘ื ื” ื•ืžื›ืจื™ื—ื” ืื•ืชื ื• ืœื—ื–ื•ืจ ืœ AI ื•ืœืฉืื•ืœ ืฉืืœื•ืช ื”ื‘ื”ืจื” ืขืœ ื—ืœืงื™ื ื‘ื˜ืงืกื˜, ืžื” ืฉืขื•ื“ ืžืžืฉื™ืš ื•ืžื—ื–ืง ืืช ื”ื”ื‘ื ื”. ื›ืฉื”ืžื˜ืจื” ื”ื™ื ืœืœืžื•ื“ ืœืขื•ืžืง ืื™ืš ื“ื‘ืจื™ื ืขื•ื‘ื“ื™ื ื™ื•ืชืจ ืœืื˜ ื–ื” ื™ืชืจื•ืŸ.

ToCode
1 419
"version": "d114e02a9a610c261738bf4254648a71b3fce993",
  "encryptHistory": true,
  "clearHistory": false
}
ื•ื›ืŸ ืื ื—ื ื• ื›ื‘ืจ ืžื‘ื™ื ื™ื ืžื”ื“ื•ื’ืžื” ื›ืืŸ ืฉื‘ื‘ืจื™ืจืช ืžื—ื“ืœ ืื™ื ืจืฆื™ื” ืœื ืžืคืฆืœ ืืช ืงื‘ืฆื™ ื” JavaScript ืฉืœื ื• ืœืคื™ ื“ืคื™ื. ื”ื ื›ืŸ ืชื•ืžื›ื™ื ื‘ืžื ื’ื ื•ืŸ ืฉืœ ืคื™ืฆื•ืœ ืงื•ื“ ืื ืžืžืฉ ื ืจืฆื” ืื‘ืœ ืคืฉื•ื˜ ืœื ืžืคืขื™ืœื™ื ืื•ืชื• ืœื›ืœ ืคืจื•ื™ืงื˜ ื—ื“ืฉ. ืžื” ื”ืœืื” ืื™ื ืจืฆื™ื” ื›ื•ืœืœืช ืขื•ื“ ื”ืžื•ืŸ ื™ื›ื•ืœื•ืช ืฉืœื ื”ืกืคืงืชื™ ืœืกืงื•ืจ ื›ืืŸ ื›ืžื• ื˜ื™ืคื•ืœ ื‘ื”ื’ืฉืช ื˜ืคืกื™ื, ื”ืขืœืืช ืงื‘ืฆื™ื, ืจื™ืขื ื•ืŸ ืื•ื˜ื•ืžื˜ื™ ืฉืœ ืžื™ื“ืข (polling), ื ื™ื”ื•ืœ ืžื™ืงื•ื ื”ื’ืœื™ืœื” ื•ืขื•ื“. ืืคืฉืจ ืœืžืฆื•ื ื”ืžื•ืŸ ื“ื•ื’ืžืื•ืช ื‘ืชื™ืขื•ื“ ืฉืœื”ื ื›ืืŸ: https://inertia-rails.dev/ ืื‘ืœ ื”ืืžืช ืฉืžืขื‘ืจ ืœืžืขื˜ืคืช ืฉืœ ื ื™ืชื•ื‘ ื•ื”ืฆื’ืช ื“ืคื™ื ืžื“ื•ื‘ืจ ื‘ืกืš ื”ื›ืœ ื‘ืืคืœื™ืงืฆื™ื™ืช Client Side React ื›ืš ืฉืืคืฉืจ ืœื”ืฉืชืžืฉ ื‘ื›ืœ ื”ืกืคืจื™ื•ืช ื•ื”ื™ื›ื•ืœื•ืช ืฉืื ื—ื ื• ืžื›ื™ืจื™ื ืžืขื‘ื•ื“ื” ืขื ืจื™ืืงื˜ ื• vite. ื‘ืฆื“ ื”ืฉืจืช ืจื™ื™ืœืก ื™ืชืคืงื“ ื›ืžื• ืฉืจืช API ืฉื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™ ื™ื•ื“ืข ืœื”ื—ื–ื™ืจ ืงื•ืžืคื•ื ื ื˜ื” ืื• JSON ืœืคื™ ื“ืจื™ืฉื”. ื‘ื”ืฉื•ื•ืื” ืœ React On Rails ืื™ื ืจืฆื™ื” ื ืจืื” ื”ืจื‘ื” ื™ื•ืชืจ ืคืฉื•ื˜ ื•ืžื™ื ื™ืžืœื™ืกื˜ื™. ื”ื•ื ืœื ืžืชืื™ื ืœืืคืœื™ืงืฆื™ื•ืช ื’ื“ื•ืœื•ืช ืฉืฆืจื™ื›ื•ืช Server Side Rendering ืื• ืื•ืคื˜ื™ืžื™ื–ืฆื™ื•ืช ืœื‘ื ื™ื” ืื‘ืœ ื‘ืืคืœื™ืงืฆื™ื•ืช ืฆื“ ืœืงื•ื— ื”ื•ื ื™ื™ืชืŸ ืชื•ืฆืื” ืžื”ื™ืจื” ื•ื˜ื•ื‘ื”.

ToCode
1 419
ื•ื–ื” ืžืกื™ื™ื ืืช ื”ืงื•ืžืคื•ื ื ื˜ื” ื”ืจืืฉื•ื ื” ืฉืœื ื•. ื‘ืฉื‘ื™ืœ ืœืจืื•ืช ืืช ื”ืขืžื•ื“ ื ืœืš ืœืคื™ ื”ื›ืœืœื™ื ืฉืœ ืจื™ื™ืœืก. ื‘ืงื•ื‘ืฅ config/routes.rb ืื ื™ ืžื•ืฆื ืืช ื”ืฉื•ืจื”:
get 'inertia-example', to: 'inertia_example#index'
ื•ื‘ืงื•ื ื˜ืจื•ืœืจ app/controllers/inertia_example_controller.rb ืื ื™ ืžื•ืฆื ืืช ื”ื”ื’ื“ืจื”:
class InertiaExampleController < ApplicationController
  def index
    render inertia: 'InertiaExample', props: {
      name: params.fetch(:name, 'World'),
    }
  end
end
ื•ื–ื• ื’ื ื”ืชืฉื•ื‘ื” ืœืฉืืœื” ืฉื”ืชื—ืœื ื• ืื™ืชื” ืืช ื”ืงืจื™ืื” - ืžืื™ืคื” ืžื’ื™ืข ื”ืคืจืžื˜ืจ name. ื‘ืื™ื ืจืฆื™ื”, ื”ืคืจืžื˜ืจื™ื ืœืงื•ืžืคื•ื ื ื˜ืช ื”ืขืžื•ื“ ืžื’ื™ืขื™ื ืžื”ืงื•ื ื˜ืจื•ืœืจ ืฉืžืคืขื™ืœ render, ื•ื›ืš ื’ื ืฉื ื”ืขืžื•ื“ ืœื”ืฆื’ื”. ื”ื•ืกืคืช ืงื•ืžืคื•ื ื ื˜ื” ื‘ื•ืื• ื ืขื“ื›ืŸ ืืช ื”ืขืžื•ื“ ื ื•ืฆื™ื ืืช ืžื•ื ื” ื”ืœื—ื™ืฆื•ืช ืœืงื•ืžืคื•ื ื ื˜ื” ืฉืœื• ื•ื ืฉื™ื ืื•ืชื• ื›ืžื” ืคืขืžื™ื ืขืœ ื”ื“ืฃ. ื‘ืขื‘ื•ื“ื” ืขื ืงื•ืžืคื•ื ื ื˜ื•ืช ืื™ื ืจืฆื™ื” ืขื•ื‘ื“ ื‘ื“ื™ื•ืง ื›ืžื• ืจื™ืืงื˜. ืื ื™ ื™ื•ืฆืจ ืชื™ืงื™ื™ื” ื—ื“ืฉื” ื‘ืฉื app/javascript/components ื‘ืชื•ื›ื” ืฉื ืืช ื”ืงื•ื‘ืฅ Counter.tsx ื•ื‘ื• ื”ืชื•ื›ืŸ:
import { useState } from 'react'

export default function Counter() {
  const [count, setCount] = useState(0)
  return (
   <div className="flex flex-col items-center justify-center h-screen bg-gray-100">
      <h1 className="text-3xl font-bold mb-4">Counter: {count}</h1>
      <div className="space-x-4">
        <button
          onClick={() => setCount(count - 1)}
          className="px-4 py-2 bg-red-500 text-white rounded hover:bg-red-600 transition"
        >
          -
        </button>
        <button
          onClick={() => setCount(count + 1)}
          className="px-4 py-2 bg-green-500 text-white rounded hover:bg-green-600 transition"
        >
          +
        </button>
        <button
          onClick={() => setCount(0)}
          className="px-4 py-2 bg-gray-500 text-white rounded hover:bg-gray-600 transition"
        >
          Reset
        </button>
      </div>
    </div>
  )
}
ื•ืื– ื‘ืงื•ืžืคื•ื ื ื˜ื” InertiaExample ืื ื™ ืžื•ืกื™ืฃ ืคืงื•ื“ืช import:
import Counter from '@/components/Counter';
ื•ืฉื™ืžื•ืฉ ื‘ืงื•ืžืคื•ื ื ื˜ื”:
<Counter />
<Counter />
<Counter />
ื“ืฃ ืื™ื ืจืฆื™ื” ืฉื ื™ ื•ื ื™ื•ื•ื˜ ื‘ื™ื ื™ื”ื ืœืื™ื ืจืฆื™ื” ื™ืฉ ืขื•ื“ ื›ื— ืขืœ ื•ื‘ื ื•ืกืฃ ืœื”ื™ื•ืชื” ืกืคืจื™ื™ืช ืชื‘ื ื™ื•ืช ื”ื™ื ืžื—ืœื™ืคื” ื’ื ืืช React Router ื•ืžืืคืฉืจืช ื ื™ื•ื•ื˜ ืฆื“ ืœืงื•ื— ื‘ื™ืŸ ื“ืคื™ื. ื‘ื•ืื• ื ืจืื” ืื™ืš ื–ื” ืขื•ื‘ื“. ืื ื™ ืžืขื“ื›ืŸ ืืช config/routes.rb ื›ื“ื™ ืฉื™ื›ื™ืœ ืืช ืฉื ื™ ื”ื ืชื™ื‘ื™ื:
get 'inertia-example', to: 'inertia_example#index', as: :home
get 'inertia-about', to: 'inertia_example#about', as: :about
ืœืื—ืจ ืžื›ืŸ ืื ื™ ืžืขื“ื›ืŸ ืืช inertia_example_controller.rb ืœืชื•ื›ืŸ ื”ื‘ื:
* frozen_string_literal: true *

class InertiaExampleController < ApplicationController
  def index
    render inertia: 'InertiaExample', props: {
      name: params.fetch(:name, 'World'),
      about_path:,
    }
  end

  def about
    render inertia: 'About', props: {
      home_path:,
    }
  end
end
ืื ื™ ื™ื•ืฆืจ ืขืžื•ื“ ื—ื“ืฉ ื‘ืงื•ื‘ืฅ app/javascript/pages/About.tsx ืขื ื”ืชื•ื›ืŸ ื”ื‘ื:
import { Link } from '@inertiajs/react'

export default function About({
  home_path 
}: {
  home_path: string,
}) {
  return (
    <div>
      <Link href={home_path}>Back home</Link>
    </div>
  )
}
ื•ืžืขื“ื›ืŸ ืืช ื“ืฃ ื”ื‘ื™ืช ื‘ืงื•ื‘ืฅ InertiaExample.tsx ื•ืžื•ืกื™ืฃ ื’ื ืœื• ืืช ื”ืœื™ื ืง:
export default function InertiaExample({ name, about_path }:
                                       { name: string,
                                         about_path: staring }) {

  return (
    <>
      <Head title="Inertia + Vite Ruby + React Example" />

      <div className={cs.root}>
        <Link href={about_path}>About Us</Link>
ืขื›ืฉื™ื• ื ืจืื” ืžื” ืงืจื” ืคื”: 1. ื”ืงื•ื ื˜ืจื•ืœืจ ืžืขื‘ื™ืจ ืืช ื”ื ืชื™ื‘ื™ื ืœืงื•ืžืคื•ื ื ื˜ื•ืช. ื”ื ืชื™ื‘ื™ื ืžื•ื’ื“ืจื™ื ื‘ืชื•ืจ ืคื•ื ืงืฆื™ื•ืช (ื‘ืกื’ื ื•ืŸ ืจื™ื™ืœืก) ื›ืš ืฉืื ื”ืฉืžื•ืช ืขืฆืžื ื™ื•ื—ืœืคื• ื‘ืขืชื™ื“ ืœื ื ืฆื˜ืจืš ืœืขื“ื›ืŸ ืžื—ืจื•ื–ื•ืช ื‘ืืคืœื™ืงืฆื™ื”. 2. ืงื•ืžืคื•ื ื ื˜ืช Link ืžื™ื™ืฆืจืช ื ื™ื•ื•ื˜ ืฆื“ ืœืงื•ื—. ื›ืฉืœื•ื—ืฆื™ื ืขืœ ื”ืœื™ื ืง ืžื“ืฃ ื”ื‘ื™ืช ืœืžืขื‘ืจ ืœื“ืฃ ืื•ื“ื•ืช ื”ื“ืคื“ืคืŸ ืžื‘ืฆืข ื‘ืงืฉืช JSON ื•ืžืงื‘ืœ ืืช ื”ืชื•ื›ืŸ ื”ื‘ื ื‘ืœื‘ื“:
{
  "component": "About",
  "props": {
    "errors": {},
    "home_path": "/inertia-example"
  },
  "url": "/inertia-about",

ToCode
1 419
ื—ื™ื‘ื•ืจ ืจื™ืืงื˜ ื•ืจื™ื™ืœืก ืขื Inertia ื™ืฉ ืžืคืชื—ื™ ืจื™ื™ืœืก ืฉืžืžืฉ ืœื ืื•ื”ื‘ื™ื FrontEnd ื•ื™ืขืฉื• ื”ื›ืœ ื›ื“ื™ ืœื•ื•ืชืจ ืขืœ ื›ืชื™ื‘ืช JavaScript, ื•ื™ืฉ ืื—ืจื™ื ืฉื”ืกื™ื‘ื” ืฉืœื”ื ืœืงื•ื ื‘ื‘ื•ืงืจ ื”ื™ื ื”ืคืจื•ื ื˜ ืื ื“ ื• Rails ืืฆืœื ื ื‘ื—ืจ ืคืฉื•ื˜ ื›ื™ ื”ื•ื ื ื•ืชืŸ ืคื™ืชืจื•ืŸ ื ื•ื— ืœืฆื“ ื”ืฉืจืช. ืื ืืชื ืฉื™ื™ื›ื™ื ืœืžื—ื ื” ื”ืฉื ื™ ืกื™ื›ื•ื™ ื˜ื•ื‘ ืฉืžืื•ื“ ืชืื”ื‘ื• ืืช ืกืคืจื™ื™ืช inertia. ื–ื• ืกืคืจื™ื” ืฉืžื—ื‘ืจืช ื‘ืฆื•ืจื” ื˜ื•ื‘ื” ืืช ืงื•ื“ ื”ืคืจื•ื ื˜ ืื ื“ ืœืืคืœื™ืงืฆื™ื™ืช Rails. ืื™ื ืจืฆื™ื” ื”ื™ื ืžืชื—ืจื” ืฉืœ React On Rails ื•ืžืชืžืงื“ืช ื‘ื ื™ื•ื•ื˜ ื‘ืชื•ืš ื”ื™ื™ืฉื•ื ื•ื‘ื”ืขื‘ืจืช ืžื™ื“ืข ืžืฆื“ ื”ืฉืจืช ืœืฆื“ ื”ืœืงื•ื—. ื‘ืคื•ืกื˜ ื–ื” ื ืจืื” ืืช ืขืงืจื•ื ื•ืช ื”ืขื‘ื•ื“ื” ื”ืžืจื›ื–ื™ื™ื ืฉืœ ืื™ื ืจืฆื™ื”. ื™ืฆื™ืจืช ื”ืคืจื•ื™ืงื˜ ื‘ืฉื‘ื™ืœ ืœื™ืฆื•ืจ ืคืจื•ื™ืงื˜ Rails ืขื Inertia ืื ื™ ืžืฉืชืžืฉ ื‘ืคืงื•ื“ื•ืช ื”ื‘ืื•ืช:
$ rails new inertia-demo
$ bundle add inertia_rails
$ bin/rails generate inertia:install
ื”ืคืงื•ื“ื” ื”ืื—ืจื•ื ื” ืžืจื™ืฆื” wizard ื‘ื• ืื ื™ ืฆืจื™ืš ืœื‘ื—ื•ืจ ืืช ื”ืคืจื™ื™ืžื•ื•ืจืง ื‘ื• ืื ื™ ืจื•ืฆื” ืœืขื‘ื•ื“. ืื ื™ ื‘ื•ื—ืจ ืจื™ืืงื˜ ืœื“ื•ื’ืžื” ื–ื• ืื‘ืœ ื”ืžื ื’ื ื•ืŸ ืชื•ืžืš ื’ื ื‘ vue ื• svelte. ืœืื—ืจ ืกื™ื•ื ื” wizard ื™ืฉ ืœื™ ื‘ืชื™ืงื™ื™ืช app/javascript ืžืกืคืจ ืชื™ืงื™ื•ืช ื—ื“ืฉื•ืช: assets, entrypoints ื• pages. ืืคืฉืจ ืœื”ื•ืกื™ืฃ ืขื•ื“ ืชื™ืงื™ื•ืช ื›ื›ืœ ืฉืชืจืฆื•. ื ืงื•ื“ืช ื”ื›ื ื™ืกื” ืœืืคืœื™ืงืฆื™ื” ื”ื™ื ื”ืงื•ื‘ืฅ entrypoints/application.js. ื“ืฃ ืื™ื ืจืฆื™ื” ืจืืฉื•ืŸ ืฉืœื™ ื”ื“ืฃ ื”ืจืืฉื•ืŸ ื‘ืื™ื ืจืฆื™ื” ืœืžืขืฉื” ื ื•ืฆืจ ื›ื‘ืจ ืžืชื•ืš ื” wizard. ื”ื•ื ื ืงืจื InertiaExample ื•ืื ื—ื ื• ืžื•ืฆืื™ื ืืช ื”ืงื•ื“ ืฉืœื• ื‘ืงื•ื‘ืฅ app/javascript/pages/InertiaExample.tsx. ื‘ื•ืื• ื ืงืจื ืื•ืชื• ื™ื—ื“:
import { Head } from '@inertiajs/react'
import { useState } from 'react'

import inertiaSvg from '/assets/inertia.svg'
import reactSvg from '/assets/react.svg'
import viteRubySvg from '/assets/vite_ruby.svg'

import cs from './InertiaExample.module.css'

export default function InertiaExample({ name }: { name: string }) {
  const [count, setCount] = useState(0)

  return (
    <>
      <Head title="Inertia + Vite Ruby + React Example" />

      <div className={cs.root}>
        <h1 className={cs.h1}>Hello {name}!</h1>

        <div>
          <a href="https://inertia-rails.dev" target="_blank">
            <img className={cs.logo} src={inertiaSvg} alt="Inertia logo" />
          </a>
          <a href="https://vite-ruby.netlify.app" target="_blank">
            <img
              className={\${cs.logo} ${cs.vite}\}
              src={viteRubySvg}
              alt="Vite Ruby logo"
            />
          </a>
          <a href="https://react.dev" target="_blank">
            <img
              className={\${cs.logo} ${cs.react}\}
              src={reactSvg}
              alt="React logo"
            />
          </a>
        </div>

        <h2 className={cs.h2}>Inertia + Vite Ruby + React</h2>

        <div className="card">
          <button
            className={cs.button}
            onClick={() => setCount((count) => count + 1)}
          >
            count is {count}
          </button>
          <p>
            Edit <code>app/frontend/pages/InertiaExample.jsx</code> and save to
            test HMR
          </p>
        </div>
        <p className={cs.readTheDocs}>
          Click on the Inertia, Vite Ruby, and React logos to learn more
        </p>
      </div>
    </>
  )
}
ื“ื‘ืจ ืจืืฉื•ืŸ ืฉืงื•ืคืฅ ืœืขื™ืŸ ื”ื•ื ื™ืฆื™ืจืช ื”ืงื•ืžืคื•ื ื ื˜ื”:
export default function InertiaExample({ name }: { name: string }) {
ื‘ืฉื‘ื™ืœ ืœื™ืฆื•ืจ ืืช ื”ืขืžื•ื“ ื™ืฉ ืœื”ืขื‘ื™ืจ ืžืฉืชื ื” name. ืชื–ื›ืจื• ืืช ื–ื” ื›ื™ ืชื›ืฃ ื ื—ื–ื•ืจ ืืœื™ื• ื›ื“ื™ ืœื”ื‘ื™ืŸ ืžืื™ืคื” ื”ื•ื ืžื’ื™ืข. ื”ืฉื™ืžื•ืฉ ื‘ useState ืจื’ื™ืœ ืœื’ืžืจื™ ืœืจื™ืืงื˜ ื•ืžืœืžื“ ืื•ืชื ื• ืฉืงื•ืžืคื•ื ื ื˜ื•ืช ืจื™ืืงื˜ ื”ืŸ ืงื•ืžืคื•ื ื ื˜ื•ืช ืฆื“ ืœืงื•ื— - ืื™ื ืจืฆื™ื” ืชื•ืžืš ื‘ Server Side Rendering ืื‘ืœ ืœื ื‘ React Server Components. ื’ื ืœื ืจืื™ืชื™ ื”ืชื™ื—ืกื•ืช ื‘ืชื™ืขื•ื“ ืœื ื•ืฉื ื” Caching ืื—ืจื™ SSR ื›ืš ืฉื ืจืื” ืฉื” Use Case ื”ื™ื•ืชืจ ืคื•ืคื•ืœืจื™ ื”ื•ื ืืคืœื™ืงืฆื™ื•ืช ืฆื“-ืœืงื•ื—. ื”ืงื•ืžืคื•ื ื ื˜ื” ื”ืžื™ื•ื—ื“ืช Head ืžืืคืฉืจืช ืœืžืœื ืชื•ื›ืŸ ื‘ืืœืžื ื˜ื™ื ื‘ืจืืฉ ื”ืขืžื•ื“ ื•ืœื›ืŸ ื”ืฉื•ืจื”:
<Head title="Inertia + Vite Ruby + React Example" />
ืงื•ื‘ืขืช ืืช ื” title. ื‘ืฉื‘ื™ืœ ืฉื–ื” ื™ืขื‘ื•ื“ ื”ื ื”ื›ื ื™ืกื• ืœืงื•ื‘ืฅ app/views/layouts/application.html.erb ืืช ื”ืฉื•ืจื”:
<title inertia><%= content_for(:title) || "Inertia Demo" %></title>
ืื™ื ืจืฆื™ื” ืชื•ืžืš ื‘ CSS Modules ื•ืœื›ืŸ ืžื‘ื ื” ื”ืงืœืืกื™ื:
import cs from './InertiaExample.module.css'

...
<div className={cs.root}>

ToCode
1 419
ื›ืžื” ื“ื‘ืจื™ื ืฉืžืคื—ื™ื“ื™ื ืื•ืชื™ ื‘ AI ื‘ื•ืื• ื ื•ืจื™ื“ ืžื”ืฉื•ืœื—ืŸ ื›ืžื” ื“ื‘ืจื™ื ืฉืขื•ืœื™ื ืฉืื•ืชื™ ืœื ืžืคื—ื™ื“ื™ื ื‘ื›ืœืœ - ื” AI ืœื ื™ื”ืคื•ืš ืืช ื”ืžืชื›ื ืชื™ื ืœืžื™ื•ืชืจื™ื, ืื ื›ื‘ืจ ืœื”ื™ืคืš. ื›ื›ืœ ืฉื™ื•ืชืจ ืงื•ื“ ื ื›ืชื‘ ื›ืš ื™ืฆื˜ืจื›ื• ื™ื•ืชืจ ืžืชื›ื ืชื™ื ืœืชื—ื–ืง ืื•ืชื•. ื›ื›ืœ ืฉืžืขืจื›ื•ืช ื”ื•ืคื›ื•ืช ื™ื•ืชืจ ืžื•ืจื›ื‘ื•ืช ื›ืš ื™ืฆื˜ืจื›ื• ื™ื•ืชืจ ืื ืฉื™ื ืฉื™ืชื›ื ื ื• ืื•ืชืŸ ื•ื™ืžืฆืื• ืืช ื”ืฉื’ื™ืื•ืช ื‘ื”ืŸ. ื›ื‘ืจ ื”ื™ื•ื ืื ื—ื ื• ื™ื›ื•ืœื™ื ืœื‘ื ื•ืช ืžื•ืฆืจื™ื ื“ื•ืžื™ื ืœืืœื” ืฉื‘ื ื™ื ื• ืœืคื ื™ ืขืฉืจ ืฉื ื™ื ืขื ื”ืจื‘ื” ืคื—ื•ืช ืื ืฉื™ื, ื•ื”ื ื” ืœื ื‘ื—ืจื ื• ืœื”ืžืฉื™ืš ืœืขื‘ื•ื“ ืขื ืืงืกืคืœื•ืจืจ 6 ื• Windows 95 ื•ืœื™ืฆื•ืจ ืื‘ื˜ืœื” ื”ืžื•ื ื™ืช. ื”ื›ืœ ื˜ื•ื‘, ื›ืฉืื ื—ื ื• ื›ื•ืชื‘ื™ื ืžืขืจื›ื•ืช ืžืชื•ื—ื›ืžื•ืช ื™ื•ืชืจ ื•ืžื”ืจ ื™ื•ืชืจ ืขื•ืœื ื”ืชื•ื›ื ื” ืžืฉืชืคืจ. ืกื™ืคื•ืจ ื ื•ืกืฃ ืฉืœื ืžืคื—ื™ื“ ืื•ืชื™ ื‘ื›ืœืœ ื”ื•ื ื‘ืขื™ื•ืช ืื‘ื˜ื—ื”, ื‘ืื’ื™ื ื•ืžืขืจื›ื•ืช ืฉืื ืฉื™ื ื›ื•ืชื‘ื™ื ื‘ืœื™ ืœื”ื‘ื™ืŸ. ืื ืฉื™ื ืชืžื™ื“ ื›ืชื‘ื• ืžืขืจื›ื•ืช ื‘ืœื™ ืœื”ื‘ื™ืŸ, ืื ื™ ื’ื“ืœืชื™ ื‘ืขื•ืœื ืฉื‘ื• ื™ื›ื•ืœืช ืœื”ื™ื›ื ืก ืœื‘ืกื™ืก ื”ื ืชื•ื ื™ื ืฉืœ ื›ืœ ืืชืจ ืื™ื ื˜ืจื ื˜ ื›ื™ ื›ื•ืœื ื”ื™ื• ืคืชื•ื—ื™ื ืœ SQL Injection. ืขื ื”ื–ืžืŸ ืื ื—ื ื• ื‘ื•ื ื™ื ืชืฉืชื™ื•ืช ืฉืžืฉืคืจื•ืช ืืช ื”ืžืฆื‘ ื•ื’ื ืื ื‘ืชืงื•ืคื” ื”ืงืจื•ื‘ื” ื™ื”ื™ื• ืฉื•ื‘ ื”ืจื‘ื” ืžืขืจื›ื•ืช ืœื ืžืื•ื‘ื˜ื—ื•ืช ื’ื ื”ืžื˜ื•ื˜ืœืช ื”ื–ืืช ืชืฉื ื” ื›ื™ื•ื•ืŸ. ืžืžื” ื›ืŸ ื›ื“ืื™ ืœื—ืฉื•ืฉ? ื–ืืช ื”ืจืฉื™ืžื” ืฉืœื™: 1. ืคื™ื™ืง ื ื™ื•ื– ื•ืคื™ืฉื™ื ื’ - ื”ื™ื›ื•ืœืช ืฉืœ AI ืœื™ืฆื•ืจ ืงืžืคื™ื™ื ื™ื ืืžื™ื ื™ื ืฉืœ ืคื™ืฉื™ื ื’ ืชืœื•ื•ื” ืื•ืชื ื• ืชืงื•ืคื” ืืจื•ื›ื” ืžืื•ื“. ืจืง ืœื ืžื–ืžืŸ ืขืœื” ืœื›ื•ืชืจื•ืช ื—ื•ืงืจ ืื‘ื˜ื—ื” ืฉื”ืฆืœื™ื— ืœื‘ืฆืข ื”ืชื—ื–ื•ืช ืงื•ืœื™ืช ื›ื“ื™ ืœืขืงื•ืฃ ืžืขืจื›ืช ื–ื™ื”ื•ื™ ืงื•ืœื™ ืฉืœ ืื—ื“ ื”ื‘ื ืงื™ื ืคื”. ื™ื”ื™ื” ืงืฉื” ืžืื•ื“ ืœืกืžื•ืš ืขืœ ื•ื™ื“ืื•, ืงื•ืœ ื•ื›ืžื•ื‘ืŸ ื—ืชื™ืžื”. ื”ื›ืœ ื™ื”ื™ื” ื ื™ืชืŸ ืœื–ื™ื•ืฃ. 2. ื”ืชื—ื–ื•ืช ื”ื•ืœื›ืช ืœื”ื™ื•ืช ื‘ืขื™ื” ื›ืฉืื ื—ื ื• ืžืจืื™ื™ื ื™ื ืžื•ืขืžื“ื™ื ืœืขื‘ื•ื“ื”. ื–ื” ื›ื‘ืจ ืงื•ืจื” ืขื ื›ืœื™ื ืœืจืžืื•ืช ื‘ืจืื™ื•ื ื•ืช ืขื‘ื•ื“ื” ื•ื”ื•ืœืš ืœื”ื™ื•ืช ืงืฉื” ืœื”ื‘ื™ืŸ ืืช ื”ืจืžื” ื”ืžืงืฆื•ืขื™ืช ื”ืืžื™ืชื™ืช ืฉืœ ืžื•ืขืžื“. 3. ืžื•ื˜ื™ื‘ืฆื™ื” ื”ื•ืœื›ืช ืœื”ื™ื•ืช ืืชื’ืจ ืขืฆื•ื. ื›ืฉ AI ื™ื›ื•ืœ ืœืคืชื•ืจ ื‘ืฉื‘ื™ืœืš ืืช ืฉื™ืขื•ืจื™ ื”ื‘ื™ืช ืืชื” ืžืคืชื— ื”ืจื’ืœื™ ืขื‘ื•ื“ื” ื’ืจื•ืขื™ื ื•ื–ื” ืžืฉื”ื• ืฉืงืฉื” ืœื”ืชื’ื‘ืจ ืขืœื™ื•. 4. ื—ืœื•ืžื•ืช ื™ื”ื™ื• ืงื˜ื ื™ื ื™ื•ืชืจ. ื›ืฉืœื›ืœ ืฉืืœื” ื™ืฉ ืชืฉื•ื‘ื” ืื™ืŸ ืคืœื™ืื”, ืื™ืŸ ืชื”ื™ื™ื” ื•ืื™ืŸ ื–ืžืŸ ืœื—ืœื•ื ืขืœ ืืคืฉืจื•ื™ื•ืช ื—ื“ืฉื•ืช. ื–ื” ืžืชื—ื‘ืจ ืœืงื•ืฉื™ ืœืžืฆื•ื ืžื•ื˜ื™ื‘ืฆื™ื” ืฉืื ื—ื ื• ื›ื‘ืจ ืจื•ืื™ื ื‘ืขื‘ื•ื“ื” ืขื AI. ืžื” ืžืคื—ื™ื“ ืืชื›ื ื‘ืขื™ื“ืŸ ื” AI? ื•ืื™ืš ืืชื ื—ื•ืฉื‘ื™ื ื ืฆืœื™ื— ืœื”ืชืžื•ื“ื“ ืขื ื”ืืชื’ืจื™ื? ืืฉืžื— ืœืฉืžื•ืข ื‘ืชื’ื•ื‘ื•ืช ืคื” ืื• ื‘ื˜ืœื’ืจื.

ToCode
1 419
ื—ืœืง ื—ืฉื•ื‘ ืžื”ื—ื™ื‘ื•ืจ ื‘ื™ืŸ ืžืขืจื›ื•ืช ืžื—ืฉื‘, ื›ืœื•ืžืจ ืžื” API, ื”ื•ื ื”ื”ื–ื“ื”ื•ืช. ื›ืฉืžืขืจื›ืช ืžื—ืฉื‘ ืžืงื‘ืœืช ื”ื•ื“ืขื” ื”ื™ื ืฆืจื™ื›ื” ืœื“ืขืช ืžื™ ืฉืœื— ืœื” ืืช ื”ื”ื•ื“ืขื” ื”ื–ืืช - ืžืขืจื›ืช ืื—ืจืช? ืชื•ืงืฃ ื–ื“ื•ื ื™? ืžื ื”ืœ ื”ืกืคืจื™ื” ืฉืžื—ื•ื‘ืจ ื“ืจืš ื”ื“ืคื“ืคืŸ ื‘ืžื—ืฉื‘ ืฉืœื•? ื’ื•ืœืฉ ืฉืžื—ืคืฉ ืกืคืจ? ืœื›ืœ ืื—ื“ ื™ืฉ ื”ืจืฉืื•ืช ืฉื•ื ื•ืช, ื™ื›ื•ืœื•ืช ืฉื•ื ื•ืช ื•ืœื›ืŸ ื’ื ื›ืœ ืื—ื“ ืขืฉื•ื™ ืœืงื‘ืœ ืชืฉื•ื‘ื” ืฉื•ื ื”. ื”ื•ื“ืขืช HTTP ื›ื•ืœืœืช ื‘ืกืš ื”ื›ืœ 3 ื—ืœืงื™ื ื‘ื”ื ืืคืฉืจ ืœื›ืชื•ื‘ ืžื™ื“ืข: ืฉื•ืจืช ื”ืžื–ื”ื” ืฉื›ื•ืœืœืช ืืช ื”ืคื•ืขืœ ื•ื”ื ืชื™ื‘ ืขืœื™ื”ื ืื ื—ื ื• ืžื“ื‘ืจื™ื, ื‘ืœื•ืง ื”ื›ื•ืชืจื•ืช ื•ื‘ืœื•ืง ืชื•ื›ืŸ ื”ื”ื•ื“ืขื”. ื ืชื•ื ื™ ื”ื–ื“ื”ื•ืช ื ืฉืœื—ื™ื ื‘ื‘ืœื•ืง ื”ื›ื•ืชืจื•ืช. ื™ืฉ ืฉื ื™ ืกื•ื’ื™ื ืฉืœ ื ืชื•ื ื™ ื”ื–ื“ื”ื•ืช ืฉืื ื—ื ื• ื™ื›ื•ืœื™ื ืœืžืฆื•ื ื‘ื›ื•ืชืจื•ืช ืฉืœ ื‘ืงืฉื•ืช HTTP. ืกื•ื’ ืื—ื“ ื ืงืจื Cookie ื•ื–ื• ื›ื•ืชืจืช ืฉื ืจืื™ืช ื›ืš:
GET /docs/introduction HTTP/1.1
Host: ai-sdk.dev
accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
accept-language: en-US,en;q=0.9
cache-control: no-cache
cookie: ko_id=7827ad98-2a94-440f-be5b-6dd5cfd84161; _hp2_id.3132448398=%7B%22
user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36
ื”ื‘ืงืฉื” ื‘ื“ื•ื’ืžื” ืžื ืกื” ืœืžืฉื•ืš ืžืฉืื‘ ืขื ื”ืžื–ื”ื” /docs/introduction ื•ืžืขื‘ื™ืจื” ืœืฉืจืช ืžืกืคืจ ื›ื•ืชืจื•ืช HTTP. ืื—ืช ื”ื›ื•ืชืจืช ื ืงืจืืช cookie ื•ื”ื™ื ืžื›ื™ืœื” ืขืจืš ืฉืงืฆืช ืงืฉื” ืœืงืจื•ื. ื–ื” ื‘ืกื“ืจ ืื ื—ื ื• ืœื ืฆืจื™ื›ื™ื ืœืงืจื•ื ืื•ืชื• ืžื™ ืฉืฆืจื™ืš ืœืงืจื•ื ืื•ืชื• ื–ื” ืฉืจืช ื” Web. ื”ืฉืจืช ืงื•ืจื ืืช ื”ืขืจืš ื•ืžื‘ื™ืŸ ืžืžื ื• ืžื™ ื”ื‘ืŸ ืื“ื ืฉืžื•ืœื•. ืื™ืš ืขืจืš ื” cookie ืžืชื•ืจื’ื ืœื–ื”ื•ืช ื”ื’ื•ืœืฉ ืืชื ืฉื•ืืœื™ื? ืคื” ื ื›ื ืก ืœืชืžื•ื ื” ืชื”ืœื™ืš ื”ื”ื–ื“ื”ื•ืช. ืžืฉืชืžืฉ ืžืžืœื ื˜ื•ืคืก ืขื ืฉื ืžืฉืชืžืฉ ื•ืกื™ืกืžื”, ื”ืฉืจืช ื‘ื•ื“ืง ืฉื”ืกื™ืกืžื” ื ื›ื•ื ื” ื•ืจื•ืฉื ื‘ื‘ืกื™ืก ื”ื ืชื•ื ื™ื ืœื™ื“ ืฉื ื”ืžืฉืชืžืฉ ืขืจืš ืืงืจืื™ ืฉื ืงืจื ืžื–ื”ื” Session, ืืช ื”ืขืจืš ื”ืืงืจืื™ ื”ื–ื” ื”ื•ื ืžื—ื–ื™ืจ ื‘ืื•ืชื” ืชืฉื•ื‘ืช HTTP ืฉื ืฉืœื—ืช ืื—ืจื™ ืžื™ืœื•ื™ ื”ื˜ื•ืคืก. ืžื›ืืŸ ื•ื”ืœืื” ื”ื“ืคื“ืคืŸ ื™ืฆืจืฃ ืืช ืื•ืชื• ืขืจืš ืืงืจืื™ ืœื›ืœ ื‘ืงืฉื” ื‘ืชื•ืจ ื›ื•ืชืจืช ื” HTTP ืฉื ืงืจืืช cookie. ื”ืฉืจืช ื™ืงื‘ืœ ืืช ื”ืขืจืš ื”ืืงืจืื™ ื”ื–ื”, ื™ืกืชื›ืœ ื‘ื‘ืกื™ืก ื”ื ืชื•ื ื™ื ืขื‘ื•ืจ ืื™ื–ื” ืžืฉืชืžืฉ ื”ื•ื ื ื•ืฆืจ ื•ื›ืš ื™ื“ืข ืžื™ ืฉืœื— ืืช ื”ื‘ืงืฉื”. ืžืขืจื›ื•ืช ืจื‘ื•ืช ืœื ืžืฆื™ื’ื•ืช ื˜ืคืกื™ื ื‘ HTML ื•ื‘ื›ืœืœ ืœื ืขื•ื‘ืจื•ืช ื“ืจืš ื“ืคื“ืคืŸ. ืขื‘ื•ืจืŸ ื ื•ืฆืจ ืžื ื’ื ื•ืŸ ื ื•ืกืฃ ืฉื”ื•ื ื›ื•ืชืจืช ื‘ืฉื Authorization. ื‘ืžืขืจื›ืช ื›ื–ื• ื ื‘ืฆืข ืื™ื–ืฉื”ื• ืชื”ืœื™ืš ื”ื–ื“ื”ื•ืช ื‘ืืžืฆืขื•ืช ืงืจื™ืืช HTTP POST ืขื ืžื–ื”ื” ืžืกื•ื™ื (ืžืžืฉ ื“ื•ืžื” ืœื”ื’ืฉืช ื˜ื•ืคืก), ื’ื ื›ืืŸ ื”ืฉืจืช ื™ืืžืช ืืช ื”ืžืฉืชืžืฉ, ื™ื’ืจื™ืœ ืขืจืš ืืงืจืื™ ื•ื™ืฉืžื•ืจ ืื•ืชื• ื‘ื‘ืกื™ืก ื”ื ืชื•ื ื™ื ื•ื™ืฉืœื— ื—ื–ืจื” ืืช ืื•ืชื• ืขืจืš ืœืžืขืจื›ืช ืฉืคื ืชื” ืืœื™ื•. ื‘ื‘ืงืฉื•ืช ื”ื‘ืื•ืช ืื•ืชื” ืžืขืจื›ืช ืชืฆืจืฃ ื›ื•ืชืจืช HTTP ื‘ืฉื Authorization ื•ืชืฉื™ื ื‘ื” ืืช ื”ืžื–ื”ื” ืฉื”ื™ื ืงื™ื‘ืœื”. ื‘ืงืฉื” ื›ื–ื• ืชื™ืจืื” ื›ืš:
POST /book/1234567890/ HTTP/1.1
Host: api.example.com
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.dGVzdF91c2VyX2RhdGE.abc123dummySignature
Content-Type: application/json
Content-Length: 109

{
  "name": "The Art of Fiction",
  "author": "Jane Doe",
  "price": 19.99,
  "rating": 4.5,
  "instock": true
}
ื›ืฉืื ื—ื ื• ื ื™ื’ืฉื™ื ืœ API ืชืžื™ื“ ื ืจืฆื” ืœื‘ืจืจ ืื™ืš ืื•ืชื• API ืžื–ื”ื” ืืช ื”ืžืฉืชืžืฉื™ื - ืžื” ื”ื ืชื™ื‘ (ืื• ื”ืžืฉืื‘) ื‘ื• ืืคืฉืจ ืœื‘ืฆืข ื”ื–ื“ื”ื•ืช ื•ืœืงื‘ืœ ืืกื™ืžื•ืŸ ื’ื™ืฉื” ื•ื‘ืื™ื–ื” ื›ื•ืชืจืช HTTP ื•ื‘ืื™ื–ื” ืคื•ืจืžื˜ ืขืœื™ื™ ืœื”ืขื‘ื™ืจ ืืช ืืกื™ืžื•ืŸ ื”ื’ื™ืฉื” ื‘ื‘ืงืฉื•ืช ื”ื‘ืื•ืช. ืกื™ื›ื•ื ืžืขืจื›ื•ืช ืจื‘ื•ืช ื‘ืื™ื ื˜ืจื ื˜ ืฉืžื—ื•ืช ืœื“ื‘ืจ ืขื ืžืขืจื›ื•ืช ืื—ืจื•ืช ื‘ืฆื•ืจื” ืื•ื˜ื•ืžื˜ื™ืช ื“ืจืš API. ื‘ืชื•ืจ ืžืฉืชืžืฉื™ื ืฉืœ ืื•ืชืŸ ืžืขืจื›ื•ืช ืฉื•ื•ื” ืœื ื• ืœืœืžื•ื“ ื’ื ืืช ื” APIs, ื’ื ื›ื“ื™ ืœื”ื‘ื™ืŸ ืื™ืš ื”ืžืขืจื›ื•ืช ื‘ื ื•ื™ื•ืช ื•ื’ื ื›ื“ื™ ืœื”ืฉืชืžืฉ ื‘ื”ืŸ ื‘ืฆื•ืจื” ื™ืฆื™ืจืชื™ืช. ืงื™ื™ืžื™ื ื›ืœื™ื ืจื‘ื™ื ืœืชืงืฉื•ืจืช ืขื ืžืขืจื›ื•ืช ื“ืจืš REST API - ืื ื™ ืžืฉืชืžืฉ ื”ืจื‘ื” ื‘ืคืงื•ื“ื” ื‘ืฉื curl, ื™ืฉ ื›ืœื™ ื’ืจืคื™ ื‘ืฉื postman ืฉื”ืจื‘ื” ืื ืฉื™ื ืื•ื”ื‘ื™ื ื•ื™ืฉ ื›ืœื™ื ืจื‘ื™ื ื ื•ืกืคื™ื. ืœื ืžืฉื ื” ืื™ื–ื” ื›ืœื™ ืชื‘ื—ืจื• ื”ื™ื›ืจื•ืช ืขื ืžื‘ื ื” ืฉืœ ื‘ืงืฉื•ืช ื•ืชืฉื•ื‘ื•ืช HTTP ื•ื”ื‘ื ื” ืฉืœ ื”ื ืชื™ื‘ื™ื ื‘ API ื™ืขื–ืจื• ืœื›ื ืœื”ื‘ื™ืŸ ื˜ื•ื‘ ื™ื•ืชืจ ืืช ื”ืžืขืจื›ื•ืช ื•ืœื”ืฉืชืžืฉ ื ื›ื•ืŸ ื‘ืื•ืชื ื›ืœื™ื.

ToCode
1 419
ื’'ื™ื™ืกื•ืŸ, ืฉื–ื” ืงื™ืฆื•ืจ ืœ JavaScript Object Notation, ื”ื•ื ืฉืคื” ืฉื”ื•ืžืฆืื” ืขืœ ื™ื“ื™ ื“ืื’ืœืก ืงืจื•ืงืคื•ืจื“ ื‘ืฉื ืช 2,000. ื‘ื ื™ื’ื•ื“ ืœ HTML ืฉืžืชืืจืช ืžืกืžื›ื™ื, ื’'ื™ื™ืกื•ืŸ ื”ื™ื ืฉืคื” ืœืชื™ืื•ืจ ืื•ื‘ื™ืงื˜ื™ื ื›ืœื•ืžืจ ืžื™ื“ืข ืžื•ื‘ื ื”, ืื‘ืœ ื”ื™ื™ืชืจื•ืŸ ื”ื’ื“ื•ืœ ืฉืœื” ื”ื•ื ืฉืงืœ ืžืื•ื“ ืœืžื—ืฉื‘ื™ื ืœืงืจื•ื ืื•ื‘ื™ืงื˜ื™ JSON - ื”ืจื‘ื” ื™ื•ืชืจ ืงืœ ืžืืฉืจ ืœืงืจื•ื ืงื‘ืฆื™ HTML. ื”ื ื” ื“ื•ื’ืžื” ืœืงื•ื‘ืฅ JSON ืฉืžืชืื™ื ืœืงื•ื‘ืฅ ื” HTML ืฉื”ืจืื™ืชื™ ืงื•ื“ื:
{
    header: "hello world",
    text: "HTML was also invented by Tim Berners Lee along with HTTP and the first web browser"
}
ื‘ืจื•ืจ ืฉื›ืœ ื“ื‘ืจ ืฉืืคืฉืจ ืœืชืืจ ื‘ HTML ืืคืฉืจ ืœืชืืจ ื’ื ื‘ JSON, ืื‘ืœ ื” JSON ื”ื•ื ื™ื•ืชืจ ืชืžืฆื™ืชื™, ืžื•ื‘ื ื” ื•ื”ื›ื™ ื—ืฉื•ื‘ ืงืœ ื™ื•ืชืจ ืœืคื™ืขื ื•ื— ืขื‘ื•ืจ ืชื•ื›ื ื•ืช ืžื—ืฉื‘. ื›ืœ ืชื•ื›ื ืช ืžื—ืฉื‘ ืฉืžืงื‘ืœืช JSON ืฆืจื™ื›ื” ื’ื ืœื›ืœื•ืœ ืงื•ื“ ืฉื™ืฆื™ื’ ืืช ื” JSON, ื•ื›ืœ ืชื•ื›ื ื” ืชื•ื›ืœ ืœื”ืฆื™ื’ ืืช ื” JSON ื‘ืฆื•ืจื” ืฉื•ื ื” - ื“ืคื“ืคืŸ ื”ืื™ื ื˜ืจื ื˜ ื™ื”ืคื•ืš ืืช ื” JSON ืœ HTML ื•ื™ืฆื™ื’ ืืช ื–ื”; ืืคืœื™ืงืฆื™ื™ืช ืื™ื™ืคื•ืŸ ืชืฉืชืžืฉ ื‘ืžื™ื“ืข ืฉื‘ JSON ื›ื“ื™ ืœืžืœื ืฉื“ื•ืช ืกืคืฆื™ืคื™ื™ื ืขืœ ื”ืžืกืš ื‘ืืคืœื™ืงืฆื™ื” ื•ืืคืœื™ืงืฆื™ื™ืช ืื ื“ืจื•ืื™ื“ ืชืฉืชืžืฉ ื‘ืงื•ื“ ืžืฉืœื” ื›ื“ื™ ืœื”ื‘ื™ืŸ ืžื” JSON ืžื” ืฆืจื™ืš ืœื”ื•ืคื™ืข ืขืœ ื”ืžืกืš ื•ืœื”ืฆื™ื’ ืื•ืชื•. ื”ื‘ื ื” ื–ืืช ื”ื‘ื™ืื” ืœืฉื™ื“ืจื•ื’ ื‘ืžืขืจื›ื•ืช ื•ื•ื‘ ืจื‘ื•ืช - ื‘ืžืงื•ื ืœื”ื—ื–ื™ืจ HTML ื”ืืชืจื™ื ื”ืชื—ื™ืœื• ืœื”ื—ื–ื™ืจ JSON. ืžืขืจื›ื•ืช ืฉื•ื ื•ืช ืœืงื—ื• ืืช ื” JSON ื”ื–ื” ื•ื”ืฆื™ื’ื• ืื•ืชื• ื›ืœ ืื—ืช ื‘ืฆื•ืจื” ืื—ืจืช. ื—ื™ื‘ื•ืจ ืื•ื˜ื•ืžื˜ื™ ื‘ื™ืŸ ืฉืชื™ ืžืขืจื›ื•ืช ื ืงืจื API ืื• ื‘ืขื‘ืจื™ืช ืžืžืฉืง ืชื›ื ื•ืชื™. ื›ืฉื“ืคื“ืคืŸ ืื™ื ื˜ืจื ื˜ ืคื•ื ื” ืœืฉืจืช, ืžืงื‘ืœ ืื•ื‘ื™ืงื˜ JSON, ื”ื•ืคืš ืื•ืชื• ืœ HTML ื•ืžืฆื™ื’ ืขืœ ื”ืžืกืš ืื ื—ื ื• ืื•ืžืจื™ื ืฉื“ืฃ ื”ืื™ื ื˜ืจื ื˜ ื ื˜ืขืŸ ื“ืจืš API. ื›ืฉืืคืœื™ืงืฆื™ื” ืคื•ื ื” ืœืฉืจืช, ืžื•ืฉื›ืช ืื•ื‘ื™ืงื˜ JSON, ืžืคืขื ื—ืช ืื•ืชื• ื•ืžืฉืชืžืฉืช ื‘ืžื™ื“ืข ื›ื“ื™ ืœื”ืฆื™ื’ ืคืจื˜ื™ื ืขืœ ื”ืžืกืš ืื ื—ื ื• ืื•ืžืจื™ื ืฉื”ืืคืœื™ืงืฆื™ื” ืžืชืงืฉืจืช ืขื ื”ืฉืจืช ื“ืจืš API. ืื•ืกืฃ ื”ื‘ืงืฉื•ืช ืฉืฉืจืช ื™ื•ื“ืข ืœื˜ืคืœ ื‘ื”ืŸ ื•ืื•ืกืฃ ื”ืชืฉื•ื‘ื•ืช ืฉื”ื•ื ืžื—ื–ื™ืจ ื”ื•ื ื”ื’ื“ืจืช ื” API - ื”ื’ื“ืจืช ื”ืฉืคื” ื‘ื” ืืคืฉืจ ืœื“ื‘ืจ ืขื ืžืขืจื›ืช ื–ื•. ืžื” ืืคืฉืจ ืœืขืฉื•ืช ืขื REST API ืจื’ืข, ืื– ืžืื™ืคื” ื”ื’ื™ืขื” ืœืคื” ื”ืžื™ืœื” REST? ืื API ื”ื•ื ืงื™ืฆื•ืจ ืฉืœ ืžืžืฉืง ืชื›ื ื•ืชื™ ื•ืžื™ื™ืฆื’ ื—ื™ื‘ื•ืจ ื‘ื™ืŸ ืฉืชื™ ืžืขืจื›ื•ืช ื”ืžื™ืœื” REST ื”ื™ื ื’ื ืจืืฉื™ ืชื™ื‘ื•ืช ื”ืคืขื ืฉืœ Representational State Transfer. ืืช ื”ืฉื ื”ื–ื” ื”ืžืฆื™ื ืจื•ื™ ืคื™ืœื“ื™ื ื’ ื‘ืฉื ืช 2000 ื›ื“ื™ ืœื™ื™ืฆื’ ืฉื™ื˜ืช ืขื‘ื•ื“ื” ืžืกื•ื™ืžืช ืฉืœ ืžืžืฉืงื™ื ื‘ื™ืŸ ืžืขืจื›ื•ืช. ื‘ื—ื™ื‘ื•ืจ ืžืกื•ื’ REST API ื”ื ืชื™ื‘, ืฉื–ื” ืฉื ื”ืงื•ื‘ืฅ ื‘ื‘ืงืฉืช ื” HTTP, ืžื™ื™ืฆื’ ืžืฉืื‘. ืชืฉื•ื‘ืช ื”ืฉืจืช ืžื™ื™ืฆื’ืช ืืช ื”ืชื•ื›ืŸ ืื• ื” State ืฉืœ ืื•ืชื• ืžืฉืื‘. ืื ื™ ื—ื•ืฉื‘ ืฉื“ื•ื’ืžื” ืงื˜ื ื” ืชืขื–ื•ืจ ืœื”ื‘ื”ื™ืจ ื›ืืŸ ืืช ื”ืžื•ืฉื’ื™ื - ื ื ื™ื— ืฉืื ื—ื ื• ื‘ื•ื ื™ื ืžืขืจื›ืช ืœื ื™ื”ื•ืœ ืกืคืจื™ื ื‘ืกืคืจื™ื” ื•ื”ืžืขืจื›ืช ืžืืคืฉืจืช ืœื”ืฆื™ื’ ืคืจื˜ื™ื ืขืœ ืกืคืจื™ื ืœืคื™ ืžื–ื”ื™ ื”ืกืคืจ. ืกืคืจื™ื ืžื–ื•ื”ื™ื ืขืœ ื™ื“ื™ ืžื–ื”ื” ืฉื ืงืจื ISBN ื•ืœื›ืŸ ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ ISBN ื›ื“ื™ ืœื™ื™ืฆื’ "ืกืคืจ". ื ืชื™ื‘ ืœื“ื•ื’ืžื” ื‘ืžืขืจื›ืช ื”ืกืคืจื™ื ืฉืœื ื• ื™ื›ื•ืœ ืœื”ื™ื•ืช:
/book/0764363778
ื‘ืงืฉืช ืจืฉืช ื‘ืฉืคืช HTTP ืœืžืฉืื‘ ื–ื” ื™ื›ื•ืœื” ืœื”ื™ื•ืช:
GET /book/0764363778
ื•ื”ืชืฉื•ื‘ื” ืฉื”ืฉืจืช ื™ื—ื–ื™ืจ ืขืฉื•ื™ื” ืœื”ื™ื•ืช:
{
  "name": "JavaScript: The Good Parts",
  "author": "Douglas Crockford",
  "rating": 4.4,
  "price": "16$"
  "instock": 10
}
ืžืขืจื›ืช ืžื—ืฉื‘ ืฉืชืจืฆื” ืœื”ืฉืชืžืฉ ื‘ API ื›ื“ื™ ืœืงื‘ืœ ืžื™ื“ืข ืขืœ ื”ืกืคืจ ืชืฉืœื— ื”ื•ื“ืขืช HTTP ืžืกื•ื’ GET ืขื ืžื–ื”ื” ื”ืกืคืจ, ืชืงื‘ืœ ืืช ื”ืคืจื˜ื™ื ืฉืœ ื”ืกืคืจ ื•ืชืฆื™ื’ ืืช ื”ืคืจื˜ื™ื ื‘ืฆื•ืจื” ืฉืžืชืื™ืžื” ืœื”. ื•ืžื” ืงื•ืจื” ืื ื‘ืžืขืจื›ืช ื™ืฉ ื˜ื•ืคืก ืฉืžืืคืฉืจ ื”ื•ืกืคืช ืกืคืจื™ื ืœืžืขืจื›ืช? ื’ื ืืช ื–ื” ืืคืฉืจ ืœืคืชื•ืจ ืขื ื‘ืงืฉืช HTTP, ื”ืคืขื ื‘ืงืฉืช PUT. ื”ืžืขืจื›ืช ืชื ื”ืœ ืืช ื”ื˜ื•ืคืก ื‘ืฆื•ืจื” ืฉืžืชืื™ืžื” ืœื” ื•ื›ืฉื”ืžืฉืชืžืฉ ื™ืืฉืจ ืœื”ื•ืกื™ืฃ ืกืคืจ ืชื™ืฉืœื— ื‘ืงืฉืช PUT ืฉื ืจืื™ืช ื›ืš:
PUT /book/1234567890

{
  "name": "The Art of Fiction",
  "author": "Jane Doe",
  "price": 19.99,
  "rating": 4.5,
  "instock": true
}
ื‘ืžืžืฉืง ืžืกื•ื’ REST ื‘ื“ืจืš ื›ืœืœ ื›ืœ ืžืฉืื‘ ื™ืชื—ื™ืœ ื‘ืฉื ื”ืžืฉืื‘ (ื‘ื“ื•ื’ืžื” ืฉืจืื™ื ื• ื–ื” ื”ื™ื” book) ื•ืœืคืขืžื™ื ืื—ืจื™ื• ื™ื•ืคื™ืข ืžื–ื”ื” ืกืคืฆื™ืคื™ ืฉืœ ืื•ืชื• ืžืฉืื‘. ื”ืคื•ืขืœ ื™ืงื‘ืข ืžื” ื™ืฉ ืœืขืฉื•ืช ืขื ืื•ืชื• ืžืฉืื‘ ื‘ื“ืจืš ื›ืœืœ ืœืคื™ ื”ืชื‘ื ื™ืช ื”ื‘ืื”: 1. ืคืขื•ืœืช GET ืขืœ ื”ืžืฉืื‘, ื‘ืœื™ ืœืฆื™ื™ืŸ ืžื–ื”ื” ืžืฉืื‘, ืœืžืฉืœ GET /books ืžื—ื–ื™ืจ ืื™ื ื“ืงืก ืฉืœ ื”ืคืจื™ื˜ื™ื ื›ืœื•ืžืจ ืืช ื›ืœ ื”ืกืคืจื™ื. 2. ืคืขื•ืœืช GET ืขืœ ื”ืžืฉืื‘ ืขื ืฆื™ื•ืŸ ืžื–ื”ื” ืคืจื™ื˜ ื™ื—ื–ื™ืจ ืžื™ื“ืข ืขืœ ืื•ืชื• ืคืจื™ื˜, ืœืžืฉืœ GET /books/123 ื™ื—ื–ื™ืจ ืคืจื˜ื™ื ืขืœ ืกืคืจ ืฉื”ืžื–ื”ื” ืฉืœื• ื”ื•ื 123. 3. ืคืขื•ืœืช POST ืขืœ ื”ืžืฉืื‘, ื‘ืœื™ ืœืฆื™ื™ืŸ ืžื–ื”ื”, ืชื™ืฆื•ืจ ืคืจื™ื˜ ื—ื“ืฉ ืžืื•ืชื• ืžืฉืื‘. ืœืžืฉืœ POST /books ืชื™ืฆื•ืจ ืกืคืจ ื—ื“ืฉ. 4. ืคืขื•ืœืช PUT ืขืœ ื”ืžืฉืื‘ ืขื ืฆื™ื•ืŸ ืžื–ื”ื” ืชืขื“ื›ืŸ ืืช ื”ืคืจื˜ื™ื ืฉืœ ืื•ืชื• ืžืฉืื‘ ืœื“ื•ื’ืžื” ืคืขื•ืœืช PUT /books/123 ืชืขื“ื›ืŸ ืืช ื”ืคืจื˜ื™ื ืฉืœ ืกืคืจ 123. 5. ืคืขื•ืœืช DELETE ืขืœ ื”ืžืฉืื‘ ืขื ืฆื™ื•ืŸ ืžื–ื”ื” ืžื•ื—ืงืช ืืช ื”ืคืจื™ื˜, ืœื“ื•ื’ืžื” DELETE /books/123 ืชืžื—ืง ืืช ืกืคืจ ืžืกืคืจ 123. ืขื•ื’ื™ื•ืช ื•ื”ื–ื“ื”ื•ืช

ToCode
1 419
ืžื“ืจื™ืš: ืžื” ื–ื” ื‘ืขืฆื API ื”ืคืขื ืื ื—ื ื• ืขื ืžื“ืจื™ืš ื‘ืกื™ืกื™ ืฉืื ื™ ืžืงื•ื•ื” ืฉื™ืขื–ื•ืจ ืœืื ืฉื™ ื‘ื“ื™ืงื•ืช ื•ืžื ื”ืœื™ ืžื•ืฆืจ ื›ืžื• ื’ื ืœืžืคืชื—ื™ื ืœื”ื‘ื™ืŸ ืืช ื”ื”ื’ื™ื•ืŸ ื•ื”ืžื˜ืจื” ืฉืœ ืื—ื“ ื”ืžื•ืฉื’ื™ื ื”ื—ืฉื•ื‘ื™ื ื‘ืคื™ืชื•ื— ืžืขืจื›ื•ืช ื•ื•ื‘ ื”ื™ื•ื. ืื™ืš ืขื•ื‘ื“ื™ื ื“ืคื™ ืื™ื ื˜ืจื ื˜ ืื™ืคื” ืžืชื—ื™ืœื™ื ืœื“ื‘ืจ ืขืœ APIs? ื”ืืžืช ืฉืœืกื™ืคื•ืจ ื”ื–ื” ื™ืฉ ื”ืจื‘ื” ื”ืชื—ืœื•ืช ืืคืฉืจื™ื•ืช ืื‘ืœ ื‘ื•ืื• ื ื‘ื—ืจ ืœื”ืชื—ื™ืœ ืขื ื“ืคื™ ืื™ื ื˜ืจื ื˜. ื ื›ื•ืŸ ืžืžืฉืงื™ ืคื™ืชื•ื— ื‘ื™ืŸ ืžืขืจื›ื•ืช ื”ื™ื• ืงื™ื™ืžื™ื ืœืคื ื™ ื”ืื™ื ื˜ืจื ื˜ ืื‘ืœ ื”ืื•ืคืŸ ื‘ื• ื“ื‘ืจื™ื ืขื•ื‘ื“ื™ื ื”ื™ื•ื ืžืื•ื“ ืžื•ืฉืคืข ืžื˜ื›ื ื•ืœื•ื’ื™ื™ืช ื”ืื™ื ื˜ืจื ื˜. ืืช ื”ืื™ื ื˜ืจื ื˜, ืื• ืœืคื—ื•ืช ืืช ื”ื˜ื›ื ื•ืœื•ื’ื™ื•ืช ืฉืžืคืขื™ืœื•ืช ืื•ืชื•, ื”ืžืฆื™ื ื˜ื™ื ื‘ืจื ืจืก ืœื™ ื‘ืฉื ืช 1991 ื•ื”ื˜ื›ื ื•ืœื•ื’ื™ื” ื”ืจืืฉื•ื ื” ืฉื”ื•ื ื”ืžืฆื™ื ื ืงืจืืช HTTP (ืจืืฉื™ ืชื™ื‘ื•ืช ืฉืœ Hyptertext Transfer Protocol). ื–ื”ื• ืคืจื•ื˜ื•ืงื•ืœ, ื›ืœื•ืžืจ ืฉืคื”, ืฉื ื•ืขื“ื” ืœื”ื’ื“ื™ืจ ืื™ืš ืžื—ืฉื‘ื™ื ืžืขื‘ื™ืจื™ื ื‘ื™ื ื™ื”ื ื“ืคื™ื ื‘ืจืฉืช ื”ืื™ื ื˜ืจื ื˜. ื”ืคืจื•ื˜ื•ืงื•ืœ ืžื’ื“ื™ืจ ื‘ื’ื“ื•ืœ ืฉื›ืœ ืžื—ืฉื‘ ื™ื›ื•ืœ ืœื”ื—ื–ื™ืง "ื“ืคื™ื" ื•ืœื›ืœ ื“ืฃ ื™ืฉ ืžื–ื”ื”. ื”ืžื–ื”ื” ื ืจืื” ื›ืžื• ืฉื ืงื•ื‘ืฅ ืขืœ ืžืขืจื›ืช ื™ื•ื ื™ืงืก ืœื“ื•ื’ืžื” /wiki/HTTP, /en/api/client-sdks ืื• /arunsupe/semantic-grep. ืคืจื•ื˜ื•ืงื•ืœ HTTP ืžื’ื“ื™ืจ ืฉืื ืžื™ืฉื”ื• ืจื•ืฆื” ืœื‘ืงืฉ ื“ืฃ ืžืžื—ืฉื‘ ืžืจื•ื—ืง ื”ื•ื ืฉื•ืœื— ื”ื•ื“ืขื” ืฉืžื•ืจื›ื‘ืช ืžื”ืžื™ืœื” GET ื•ืื—ืจื™ื” ืฉื ื”ื“ืฃ ืœืžืฉืœ:
GET /en/api/client-sdks/
ื˜ื™ื ื‘ืจื ืจืก ืœื™ ื’ื ื”ืžืฆื™ื ื“ืคื“ืคืŸ ืื™ื ื˜ืจื ื˜ ืฉืืคืฉืจ ืœื• ืœืงืจื•ื ืืช ื”ื“ืคื™ื ื”ืืœื” (ืฉื”ื™ื• ื›ืชื•ื‘ื™ื ื‘ืคื•ืจืžื˜ HTML) ื•ืงืฆืช ืื—ืจื™ื• ืื ืฉื™ื ืื—ืจื™ื ื”ืžืฆื™ืื• ื“ืคื“ืคื ื™ ืื™ื ื˜ืจื ื˜ ื ื•ืกืคื™ื ื•ื”ืจื—ื™ื‘ื• ืืช ื”ืคื•ืจืžื˜ ืฉืœ ื”ื“ืคื™ื. ื‘ 1996 ื›ื›ืœ ืฉื™ื•ืชืจ ืื ืฉื™ื ื›ืชื‘ื• ื“ืคื™ ืื™ื ื˜ืจื ื˜ ืขืœื” ื”ืฆื•ืจืš ื‘ื‘ื™ืฆื•ืข ืคืขื•ืœื•ืช ื“ืจืš ื“ืคื™ ื”ืื™ื ื˜ืจื ื˜ ื•ื”ื•ืžืฆื ืืœืžื ื˜ ื”ื˜ื•ืคืก. ื‘ืฉื‘ื™ืœ ืœื”ื’ื™ืฉ ื˜ืคืกื™ื ื˜ื™ื ื‘ืจื ืจืก ืœื™ ืขื“ื›ืŸ ืืช ืคืจื•ื˜ื•ืงื•ืœ HTTP ื•ื”ื•ืกื™ืฃ ืคืงื•ื“ื” ื‘ืฉื POST. ื‘ืฉื‘ื™ืœ ืœื”ื’ื™ืฉ ื˜ื•ืคืก ืขื“ื™ื™ืŸ ื”ื™ื” ืฆืจื™ืš ืœืฆื™ื™ืŸ ืืช ื”ื ืชื™ื‘ ืœื”ื’ืฉื” ื•ื‘ื“ืจืš ื›ืœืœ ืฆื•ืจืฃ ืœื‘ืงืฉื” ืžื™ื“ืข ืžื”ื˜ื•ืคืก. ื›ืš ื ืจืืชื” ื‘ืงืฉืช POST ืฉื ื•ืฆืจื” ืžื˜ื•ืคืก:
POST /cgi-bin/subscribe.cgi HTTP/1.0
Host: www.example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 27

name=Alice+Smith&email=alice%40example.com
ืื ื—ื ื• ืฉืžื™ื ืœื‘ ืฉืžืชื—ืช ืœืคืงื•ื“ืช POST ืžื•ืคื™ืข ืขื•ื“ ื‘ืœื•ืง ืฉืœ ืžืคืชื—ื•ืช ื•ืขืจื›ื™ื, ื‘ืœื•ืง ื–ื” ื ืงืจื ื”ื›ื•ืชืจื•ืช ืฉืœ ื”ื‘ืงืฉื” ื•ืืคืฉืจ ืœื”ืขื‘ื™ืจ ืื•ืชืŸ ื’ื ื‘ื‘ืงืฉื•ืช GET. ืื—ืจื™ ืกื™ื•ื ื”ื›ื•ืชืจื•ืช ื™ืฉ ืฉื•ืจื” ืจื™ืงื” ื•ืื—ืจื™ื” ืฉื•ืจืช ื”ืขืจื›ื™ื ืฉืœ ื”ื˜ื•ืคืก ื•ื˜ืงืกื˜ ื–ื” ื ืงืจื "ื’ื•ืฃ ื”ื‘ืงืฉื”". ืœืื•ืจืš ื”ืฉื ื™ื ื ื•ืกืคื• ืœืคืจื•ื˜ื•ืงื•ืœ HTTP ืคืขืœื™ื ื ื•ืกืคื™ื ื•ื”ื™ื•ื ื”ืคืจื•ื˜ื•ืงื•ืœ ืžื•ื ื” ืืช ื”ืคืขืœื™ื GET, HEAD, OPTIONS, TRACE, POST, PUT, PATCH, DELETE. ืงื•ื“ ื‘ืฆื“ ื”ืฉืจืช, ื›ืœื•ืžืจ ื‘ืžื—ืฉื‘ ืฉืžืงื‘ืœ ืืช ื”ื‘ืงืฉื”, ืื—ืจืื™ ืขืœ ื˜ื™ืคื•ืœ ื‘ื‘ืงืฉื”. ื”ืงื•ื“ ืžืงื‘ืœ ืืช ื”ืคื•ืขืœ, ืืช ื”ื ืชื™ื‘, ืืช ื”ื›ื•ืชืจื•ืช ื•ืืช ื’ื•ืฃ ื”ื‘ืงืฉื” ื•ืฆืจื™ืš ืœื‘ืฆืข ืคืขื•ืœื” ื•ืœื”ื—ื–ื™ืจ ืชืฉื•ื‘ื” ืœื“ืคื“ืคืŸ. ืœืคืขืžื™ื ื”ืชืฉื•ื‘ื” ืชื”ื™ื” ื“ืฃ ืื™ื ื˜ืจื ื˜, ืœืคืขืžื™ื ื”ื™ื ืชื”ื™ื” ืชืžื•ื ื” ื•ืœืคืขืžื™ื ื”ืคื ื™ื” ืœืขืžื•ื“ ืื—ืจ. ื ืกื• ืืช ื–ื” - ื‘ืคืขื ื”ื‘ืื” ืฉืืชื ื’ื•ืœืฉื™ื ื‘ืจืฉืช ืคืชื—ื• ื‘ื“ืคื“ืคืŸ ืืช ื—ืœื•ืŸ ื›ืœื™ ื”ืคื™ืชื•ื— ื•ืขื‘ืจื• ืœื˜ืื‘ Network. ืฉื ืชื•ื›ืœื• ืœืจืื•ืช ืืช ื›ืœ ื‘ืงืฉื•ืช ื” HTTP ืฉื”ื“ืคื“ืคืŸ ืฉืœื›ื ืฉื•ืœื— ืœืฉืจืช ื•ืืช ืชืฉื•ื‘ื•ืช ื”ืฉืจืช ืœื›ืœ ื‘ืงืฉื”. ืขื›ืฉื™ื• ื‘ื•ืื• ื ื•ืกื™ืฃ ืืคืœื™ืงืฆื™ื” ื“ืคื™ ืื™ื ื˜ืจื ื˜ ื›ืชื•ื‘ื™ื ื‘ืฉืคื” ืฉื ืงืจืืช HTML, ื•ื›ืŸ ื’ื ืื•ืชื” ื”ืžืฆื™ื ื˜ื™ื ื‘ืจื ืจืก ืœื™. ื”ืฉืคื” ืžื•ืจื›ื‘ืช ืžืชื’ื™ื•ืช ื•ืชื•ื›ืŸ ื›ืืฉืจ ื”ืชื’ื™ื•ืช ืžืชืืจื•ืช ืืช ื”ืชืคืงื™ื“ ืฉืœ ื›ืœ ื‘ืœื•ืง ืื• ืฉื•ืจื” ื‘ืชื•ื›ืŸ. ืœื“ื•ื’ืžื” ื”ื‘ืœื•ืง:
<h1>hello world</h1>
ืžืชืืจ ืฉื•ืจืช ื›ื•ืชืจืช ืขื ื”ื˜ืงืกื˜ hello world. ื”ื‘ืœื•ืง:
<h1>hello world</h1>
<p>HTML was also invented by Tim Berners Lee along with HTTP and the first web browser</p>
ืžื’ื“ื™ืจ ืฉื•ืจืช ื›ื•ืชืจืช ื•ืื—ืจื™ื” ืคื™ืกืงืช ื˜ืงืกื˜ ืจื’ื™ืœื”. ื”ืชื’ื™ืช h1 ื”ื™ื ืงื™ืฆื•ืจ ืฉืœ ื”ืžื™ืœื” header ื›ื“ื™ ืœืชืืจ ืฉื•ืจืช ื›ื•ืชืจืช ื•ื”ืชื’ื™ืช p ื”ื™ื ืงื™ืฆื•ืจ ืฉืœ ื”ืžื™ืœื” paragraph ื•ืœื›ืŸ ืžืชืืจืช ืคื™ืกืงื”. ืขื ื”ืžืฆืืช ืฉืคืช HTML ื˜ื™ื ื‘ืจื ืจืก ืœื™ ื”ืžืฆื™ื ื’ื ื›ืœื™ ืฉื ืงืจื ื“ืคื“ืคืŸ ืื™ื ื˜ืจื ื˜ ืฉื™ื•ื“ืข ืœืงืจื•ื ืžืกืžื›ื™ื ื‘ืฉืคืช HTML ื•ืœื”ืฆื™ื’ ืื•ืชื ื‘ืฆื•ืจื” ื’ืจืคื™ืช, ืœืžืฉืœ ืืช ื”ื›ื•ืชืจื•ืช ื”ื•ื ื”ืฆื™ื’ ื‘ื’ื•ืคืŸ ื’ื“ื•ืœ ื™ื•ืชืจ. ื ืงืคื•ืฅ 15 ืฉื ื” ืงื“ื™ืžื” ื•ื ื’ื™ื“ ืฉืื ื—ื ื• ืจื•ืฆื™ื ืœื›ืชื•ื‘ ืืคืœื™ืงืฆื™ื” ืœื˜ืœืคื•ืŸ. ื”ืืคืœื™ืงืฆื™ื” ืฉืœื ื• ืฆืจื™ื›ื” ืœื”ืฆื™ื’ ื—ื•ืงื™ื ืฉืœ ืžืฉื—ืงื™ ืœื•ื— ืคื•ืคื•ืœืจื™ื™ื ื•ื›ื‘ืจ ื›ืชื‘ื ื• ืืช ื›ืœ ื”ื—ื•ืงื™ื ื‘ืฆื•ืจื” ื™ืคื” ื‘ืฉืคืช HTML ืขื‘ื•ืจ ื“ืฃ ื”ืื™ื ื˜ืจื ื˜ ืฉืœื ื•. ื”ื‘ืขื™ื” ื”ื™ื ืฉืืช ื”ืืคืœื™ืงืฆื™ื” ืื ืฉื™ื ืžืชืงื™ื ื™ื ืขืœ ื”ื˜ืœืคื•ืŸ ื•ืœื ืคื•ืชื—ื™ื ื‘ืชื•ืš ื“ืคื“ืคืŸ - ืœื ื›ืœ ื”ืžื™ื“ืข ืฉืžื•ืคื™ืข ื‘ื“ืฃ ื”ืื™ื ื˜ืจื ื˜ ืจืœื•ื•ื ื˜ื™ ื’ื ืœืืคืœื™ืงืฆื™ื”, ื•ื™ื™ืชื›ืŸ ื•ื‘ืืคืœื™ืงืฆื™ื” ื”ืžืคืชื—ื™ื ื™ืจืฆื• ืœื”ื˜ืžื™ืข ืขื™ืฆื•ื‘ ืื• ืžื‘ื ื” ืฉื•ื ื” ืžื–ื” ืฉืžื•ืคื™ืข ื‘ืจืฉืช. ื”ืคื™ืชืจื•ืŸ - JSON ื”ืคื™ืชืจื•ืŸ ืฉื ื‘ื—ืจ ื‘ืจื•ื‘ ื”ืžืขืจื›ื•ืช ื”ื™ื” ืœื”ื™ืฉืืจ ืขื HTTP ืื‘ืœ ืœื”ื™ืคืจื“ ืž HTML. ื‘ืžืงื•ื ืฉื”ืฉืจืช ื™ื—ื–ื™ืจ ื“ืฃ HTML ืขื ื›ืœ ื”ืชื•ื›ืŸ ื•ื”ืชืคืงื™ื“ ื”ืกืžื ื˜ื™ ืฉืœ ื›ืœ ื—ืœืง ื‘ืชื•ื›ืŸ, ื”ืฉืจืช ืขื“ื™ื™ืŸ ื™ืงื‘ืœ ืคื ื™ื” ื‘ืฉืคืช HTTP ืžื”ืœืงื•ื—ื•ืช ื•ื™ื—ื–ื™ืจ "ืžืฉื”ื• ืื—ืจ", ืžืฉื”ื• ืฉื’ื ืืคืœื™ืงืฆื™ื” ื•ื’ื ื“ืคื“ืคืŸ ืื™ื ื˜ืจื ื˜ ื™ื›ื•ืœื™ื ืœืงืจื•ื. ื‘ืจื•ื‘ ื”ืื™ื ื˜ืจื ื˜ ื”ืžืฉื”ื• ื”ื–ื” ื ืงืจื JSON.