این راهنما به شما کمک میکند تا کامپایلر React را در برنامه React خود نصب و پیکربندی کنید.
یاد خواهید گرفت
- نحوهٔ نصب کامپایلر ریاکت
- پیکربندی پایه برای ابزارهای بیلد مختلف
- چگونه اطمینان حاصل کنید که تنظیمات شما کار میکند
پیشنیازها
کامپایلر ریاکت برای کار با ریاکت 19 طراحی شده است، اما از ریاکت 17 و 18 نیز پشتیبانی میکند. درباره سازگاری نسخههای ریاکت بیشتر بدانید.
نصب
کامپایلر ریاکت را به عنوان یک devDependency
نصب کنید:
یا با Yarn:
یا با pnpm:
راهاندازی پایه
کامپایلر ریاکت بهطور پیشفرض بدون نیاز به هیچ تنظیماتی کار میکند. با این حال، اگر نیاز به پیکربندی آن در شرایط خاص دارید (برای مثال، برای هدفگذاری نسخههای ریاکت پایینتر از 19)، به مرجع گزینههای کامپایلر مراجعه کنید.
فرآیند راهاندازی به ابزار ساخت شما بستگی دارد. کامپایلر ریاکت شامل یک پلاگین Babel است که با خط لوله ساخت شما یکپارچه میشود.
بابل
babel.config.js
خود را ایجاد یا بهروزرسانی کنید:
module.exports = {
plugins: [
'babel-plugin-react-compiler', // must run first!
// ... other plugins
],
// ... other config
};
Vite
اگر از 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 ترجیح میدهید:
// 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
لطفاً برای اطلاعات بیشتر به مستندات Next.js مراجعه کنید.
React Router
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
یک لودر webpack جامعهمحور اکنون اینجا در دسترس است.
Expo
لطفاً به مستندات Expo مراجعه کنید تا کامپایلر ریاکت را در اپلیکیشنهای Expo فعال کرده و استفاده کنید.
Metro (ریاکت نیتیو)
ریاکت نیتیو از Babel از طریق Metro استفاده میکند، بنابراین برای دستورالعملهای نصب به بخش Usage with Babel مراجعه کنید.
Rspack
لطفاً به مستندات Rspack مراجعه کنید تا کامپایلر ریاکت را در برنامههای Rspack فعال کرده و استفاده کنید.
Rsbuild
لطفاً به مستندات Rsbuild مراجعه کنید تا کامپایلر ریاکت را در برنامههای Rsbuild فعال کرده و استفاده کنید.
یکپارچهسازی ESLint
کامپایلر ریاکت شامل یک قانون ESLint است که به شناسایی کدی که نمیتواند بهینهسازی شود کمک میکند. وقتی قانون ESLint خطایی گزارش میدهد، به این معنی است که کامپایلر از بهینهسازی آن کامپوننت یا هوک خاص صرفنظر خواهد کرد. این کار ایمن است: کامپایلر به بهینهسازی سایر بخشهای کد شما ادامه خواهد داد. نیازی نیست که بلافاصله همه تخلفات را برطرف کنید. با سرعت خودتان به آنها رسیدگی کنید تا بهتدریج تعداد کامپوننتهای بهینهشده را افزایش دهید.
پلاگین ESLint را نصب کنید:
اگر هنوز eslint-plugin-react-hooks را پیکربندی نکردهاید، دستورالعملهای نصب در readme را دنبال کنید. قانون کامپایلر بهطور پیشفرض در آخرین نسخه RC فعال است، بنابراین نیازی به پیکربندی اضافی نیست.
قانون ESLint به این صورت عمل خواهد کرد:
- تخلفات از قوانین ریاکت را شناسایی کنید
- نشان دهید کدام کامپوننتها نمیتوانند بهینه شوند
- پیامهای خطای مفیدی برای رفع مشکلات فراهم کنید
تنظیمات خود را تأیید کنید
پس از نصب، اطمینان حاصل کنید که کامپایلر React به درستی کار میکند.
بررسی React DevTools
کامپوننتهایی که توسط کامپایلر ریاکت بهینهسازی شدهاند، نشان “Memo ✨” را در React DevTools نمایش خواهند داد:
۱. افزونه مرورگر React Developer Tools را نصب کنید برنامه خود را در حالت توسعه باز کنید
- ابزارهای توسعه ریاکت را باز کنید
- به دنبال ایموجی ✨ در کنار نام کامپوننتها بگردید.
اگر کامپایلر در حال کار است:
- کامپوننتها در 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
- گزینههای پیکربندی برای سفارشی کردن کامپایلر
- استراتژیهای پذیرش تدریجی برای کدبیسهای موجود
- تکنیکهای اشکالزدایی برای عیبیابی مشکلات
- راهنمای کامپایل کتابخانهها برای کامپایل کتابخانه ریاکت شما