| title | نصب |
|---|
- نحوهٔ نصب کامپایلر ریاکت
- پیکربندی پایه برای ابزارهای بیلد مختلف
- چگونه اطمینان حاصل کنید که تنظیمات شما کار میکند
کامپایلر ریاکت برای کار با ریاکت 19 طراحی شده است، اما از ریاکت 17 و 18 نیز پشتیبانی میکند. درباره سازگاری نسخههای ریاکت بیشتر بدانید.
کامپایلر ریاکت در حال حاضر در RC است. برای دریافت آخرین نسخه کاندید انتشار، از تگ `@rc` استفاده کنید.کامپایلر ریاکت را به عنوان یک devDependency نصب کنید:
یا با Yarn:
yarn add -D babel-plugin-react-compiler@rcیا با pnpm:
pnpm install -D babel-plugin-react-compiler@rcکامپایلر ریاکت بهطور پیشفرض بدون نیاز به هیچ تنظیماتی کار میکند. با این حال، اگر نیاز به پیکربندی آن در شرایط خاص دارید (برای مثال، برای هدفگذاری نسخههای ریاکت پایینتر از 19)، به مرجع گزینههای کامپایلر مراجعه کنید.
فرآیند راهاندازی به ابزار ساخت شما بستگی دارد. کامپایلر ریاکت شامل یک پلاگین Babel است که با خط لوله ساخت شما یکپارچه میشود.
کامپایلر ریاکت باید **ابتدا** در خط لوله پلاگین Babel شما اجرا شود. کامپایلر به اطلاعات منبع اصلی برای تحلیل صحیح نیاز دارد، بنابراین باید قبل از سایر تغییرات کد شما را پردازش کند.babel.config.js خود را ایجاد یا بهروزرسانی کنید:
module.exports = {
plugins: [
'babel-plugin-react-compiler', // must run first!
// ... other plugins
],
// ... other config
};اگر از Vite استفاده میکنید، میتوانید پلاگین را به vite-plugin-react اضافه کنید.
// vite.config.js
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
export default defineConfig({
plugins: [
react({
babel: {
plugins: ['babel-plugin-react-compiler'],
},
}),
],
});بهطور جایگزین، اگر یک پلاگین Babel جداگانه برای Vite ترجیح میدهید:
npm install -D vite-plugin-babel// vite.config.js
import babel from 'vite-plugin-babel';
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
export default defineConfig({
plugins: [
react(),
babel({
babelConfig: {
plugins: ['babel-plugin-react-compiler'],
},
}),
],
});لطفاً برای اطلاعات بیشتر به مستندات Next.js مراجعه کنید.
vite-plugin-babel را نصب کنید و پلاگین کامپایلر Babel را به آن اضافه کنید:
// vite.config.js
import { defineConfig } from "vite";
import babel from "vite-plugin-babel";
import { reactRouter } from "@react-router/dev/vite";
const ReactCompilerConfig = { /* ... */ };
export default defineConfig({
plugins: [
reactRouter(),
babel({
filter: /\.[jt]sx?$/,
babelConfig: {
presets: ["@babel/preset-typescript"], // if you use TypeScript
plugins: [
["babel-plugin-react-compiler", ReactCompilerConfig],
],
},
}),
],
});یک لودر webpack جامعهمحور اکنون اینجا در دسترس است.
لطفاً به مستندات Expo مراجعه کنید تا کامپایلر ریاکت را در اپلیکیشنهای Expo فعال کرده و استفاده کنید.
ریاکت نیتیو از Babel از طریق Metro استفاده میکند، بنابراین برای دستورالعملهای نصب به بخش Usage with Babel مراجعه کنید.
لطفاً به مستندات Rspack مراجعه کنید تا کامپایلر ریاکت را در برنامههای Rspack فعال کرده و استفاده کنید.
لطفاً به مستندات Rsbuild مراجعه کنید تا کامپایلر ریاکت را در برنامههای Rsbuild فعال کرده و استفاده کنید.
کامپایلر ریاکت شامل یک قانون ESLint است که به شناسایی کدی که نمیتواند بهینهسازی شود کمک میکند. وقتی قانون ESLint خطایی گزارش میدهد، به این معنی است که کامپایلر از بهینهسازی آن کامپوننت یا هوک خاص صرفنظر خواهد کرد. این کار ایمن است: کامپایلر به بهینهسازی سایر بخشهای کد شما ادامه خواهد داد. نیازی نیست که بلافاصله همه تخلفات را برطرف کنید. با سرعت خودتان به آنها رسیدگی کنید تا بهتدریج تعداد کامپوننتهای بهینهشده را افزایش دهید.
پلاگین ESLint را نصب کنید:
npm install -D eslint-plugin-react-hooks@rcاگر هنوز eslint-plugin-react-hooks را پیکربندی نکردهاید، دستورالعملهای نصب در readme را دنبال کنید. قانون کامپایلر بهطور پیشفرض در آخرین نسخه RC فعال است، بنابراین نیازی به پیکربندی اضافی نیست.
قانون ESLint به این صورت عمل خواهد کرد:
- تخلفات از قوانین ریاکت را شناسایی کنید
- نشان دهید کدام کامپوننتها نمیتوانند بهینه شوند
- پیامهای خطای مفیدی برای رفع مشکلات فراهم کنید
پس از نصب، اطمینان حاصل کنید که کامپایلر React به درستی کار میکند.
کامپوننتهایی که توسط کامپایلر ریاکت بهینهسازی شدهاند، نشان "Memo ✨" را در React DevTools نمایش خواهند داد:
۱. افزونه مرورگر React Developer Tools را نصب کنید برنامه خود را در حالت توسعه باز کنید 3. ابزارهای توسعه ریاکت را باز کنید 4. به دنبال ایموجی ✨ در کنار نام کامپوننتها بگردید.
اگر کامپایلر در حال کار است:
- کامپوننتها در React DevTools نشان "Memo ✨" را نمایش خواهند داد.
- محاسبات پرهزینه بهطور خودکار بهخاطر سپرده میشوند.
- نیازی به
useMemoبهصورت دستی نیست
شما همچنین میتوانید با بررسی خروجی بیلد، اطمینان حاصل کنید که کامپایلر در حال اجرا است. کد کامپایلشده شامل منطق memoization خودکار خواهد بود که کامپایلر بهطور خودکار اضافه میکند.
import { c as _c } from "react/compiler-runtime";
export default function MyApp() {
const $ = _c(1);
let t0;
if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
t0 = <div>Hello World</div>;
$[0] = t0;
} else {
t0 = $[0];
}
return t0;
}اگر یک کامپوننت پس از کامپایل باعث ایجاد مشکلاتی میشود، میتوانید بهطور موقت آن را با استفاده از دستور "use no memo" غیرفعال کنید:
function ProblematicComponent() {
"use no memo";
// Component code here
}این به کامپایلر میگوید که بهینهسازی را برای این کامپوننت خاص نادیده بگیرد. شما باید مشکل اصلی را برطرف کنید و پس از حل آن، این دستور را حذف کنید.
برای کمک بیشتر در رفع اشکال، به راهنمای اشکالزدایی مراجعه کنید.
حالا که کامپایلر ریاکت را نصب کردهاید، بیشتر بیاموزید دربارهٔ:
- سازگاری نسخه ریاکت برای React 17 و 18
- گزینههای پیکربندی برای سفارشی کردن کامپایلر
- استراتژیهای پذیرش تدریجی برای کدبیسهای موجود
- تکنیکهای اشکالزدایی برای عیبیابی مشکلات
- راهنمای کامپایل کتابخانهها برای کامپایل کتابخانه ریاکت شما