Π‘ΠΏΡΠΎΡΠΈΡΠ΅ ΡΠ²ΠΎΠΉ Π²ΠΎΠΏΡΠΎΡ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠ²ΠΎΠ΄ΠΊΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΡ ΡΡΡΠ°Π½ΠΈΡΡ ΠΈ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠ³ΠΎ Π²Π°ΠΌΠΈ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠ° AI
ΠΡΡΠΎΡΠΈΡ Π²Π΅ΡΡΠΈΠΉ
- "`purge` ΠΈ `minify` ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² Next.js ΡΠ΅ΡΠ΅Π· `@intlayer/swc` β ΡΠ°ΠΉΠ» `babel.config.js` Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ"v9.2.109.08.2026
- "ΠΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² Babel Π² ΡΡΠ΅Π±ΡΠ΅ΠΌΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ° (extract β purge β minify β optimize) Π² ΡΠΏΡΠ°Π²ΠΎΡΠ½ΡΡ
ΡΠ°Π±Π»ΠΈΡΠ°Ρ
"v8.12.024.06.2026
- "ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ `intlayerPurgeBabelPlugin` ΠΈ `intlayerMinifyBabelPlugin` Π΄Π»Ρ Babel/Webpack; ΡΡΠΎΡΠ½Π΅Π½ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² (pipeline)"v8.12.007.06.2026
- "ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ `minify` ΠΈ `purge` Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΡΠ±ΠΎΡΠΊΠΈ"v8.7.008.04.2026
Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ Π±ΡΠ»ΠΎ ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅Π½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΠ.
Π‘ΠΌΠΎΡΡΠ΅ΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΈΠ΄Π΅Ρ ΠΏΠΎ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, Π½Π΅ ΡΡΠ΅ΡΠ½ΡΠΉΡΠ΅ΡΡ Π²Π½Π΅ΡΡΠΈ ΡΠ²ΠΎΠΉ Π²ΠΊΠ»Π°Π΄, ΠΏΠΎΠ΄Π°Π² Π·Π°ΠΏΡΠΎΡ Π½Π° Π²ΡΡΡΠ³ΠΈΠ²Π°Π½ΠΈΠ΅ Π½Π° GitHub.
Π‘ΡΡΠ»ΠΊΠ° Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ GitHubΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Markdown Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ±ΠΎΡΠΊΠΈ i18n ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ
ΠΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ°ΠΌΡΡ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ i18n, ΠΎΠΏΠΈΡΠ°ΡΡΠΈΡ ΡΡ Π½Π° JSON-ΡΠ°ΠΉΠ»Ρ, ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ°. ΠΡΠ»ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π½Π΅ ΡΠ°Π·Π΄Π΅Π»ΡΡΡ ΠΊΠΎΠ½ΡΠ΅Π½Ρ Π½Π° ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ (namespaces) Π²ΡΡΡΠ½ΡΡ, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΡΠ°ΡΡΠΎ Π²ΡΠ½ΡΠΆΠ΄Π΅Π½Ρ ΡΠΊΠ°ΡΠΈΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Ρ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ ΠΈ, ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ, Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΎΠ΄Π½Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Ρ 10 ΡΡΡΠ°Π½ΠΈΡΠ°ΠΌΠΈ, ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅Π½Π½ΡΠΌΠΈ Π½Π° 10 ΡΠ·ΡΠΊΠΎΠ², ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΊΠΎΠ½ΡΠ΅Π½Ρ ΡΡΠ°Π·Ρ Π΄Π»Ρ 100 ΡΡΡΠ°Π½ΠΈΡ, Ρ ΠΎΡΡ Π΅ΠΌΡ Π½ΡΠΆΠ½Π° ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Π° (ΡΠ΅ΠΊΡΡΠ°Ρ ΡΡΡΠ°Π½ΠΈΡΠ° Π½Π° ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΡΠ·ΡΠΊΠ΅). ΠΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π½Π°ΠΏΡΠ°ΡΠ½ΠΎΠΉ ΡΡΠ°ΡΠ΅ ΠΏΡΠΎΠΏΡΡΠΊΠ½ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΈ Π·Π°ΠΌΠ΅Π΄Π»Π΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠΈ.
Intlayer ΡΠ΅ΡΠ°Π΅Ρ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ (build-time optimization). ΠΠ½ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ Π²Π°Ρ ΠΊΠΎΠ΄, ΡΡΠΎΠ±Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ»ΠΎΠ²Π°ΡΠΈ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅, ΠΈ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅Ρ Π² Π²Π°ΡΡ ΡΠ±ΠΎΡΠΊΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ ΠΊΠΎΠ½ΡΠ΅Π½Ρ.
ΠΠ³Π»Π°Π²Π»Π΅Π½ΠΈΠ΅
ΠΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
Intlayer ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ JSON-ΡΠ°ΠΉΠ»ΠΎΠ², Π²Π°Ρ ΠΊΠΎΠ½ΡΠ΅Π½Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΡΠ΄ΠΎΠΌ Ρ Π²Π°ΡΠΈΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ ΠΈΠ»ΠΈ Π²Π½ΡΡΡΠΈ Π½ΠΈΡ . Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ±ΠΎΡΠΊΠΈ Intlayer Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ:
- ΠΠ½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ Π²Π°Ρ ΠΊΠΎΠ΄, ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ Π²ΡΠ·ΠΎΠ²Ρ
useIntlayer. - Π‘ΠΎΠ·Π΄Π°Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅Π½Ρ ΡΠ»ΠΎΠ²Π°ΡΡ.
- ΠΠ°ΠΌΠ΅Π½ΡΠ΅Ρ Π²ΡΠ·ΠΎΠ²
useIntlayerΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π²Π°ΡΠ΅ΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ.
ΠΡΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
- ΠΡΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π½Π΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΡΡΡ, Π΅Π³ΠΎ ΠΊΠΎΠ½ΡΠ΅Π½Ρ Π½Π΅ Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠ±ΠΎΡΠΊΡ (ΡΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΡΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° β Dead Code Elimination).
- ΠΡΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ Π»Π΅Π½ΠΈΠ²ΠΎ (lazy-loaded), Π΅Π³ΠΎ ΠΊΠΎΠ½ΡΠ΅Π½Ρ ΡΠ°ΠΊΠΆΠ΅ Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ Π»Π΅Π½ΠΈΠ²ΠΎ.
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΠΎ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΠΌ
Next.js
Next.js ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΠ»Π°Π³ΠΈΠ½ @intlayer/swc, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Next.js ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ SWC Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ. ΠΠ°ΡΠΈΠ½Π°Ρ Ρ v9.2.1 ΡΡΠΎΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ ΠΏΠΎΠΊΡΡΠ²Π°Π΅Ρ Π²Π΅ΡΡ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ β ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ (ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌΠΏΠΎΡΡΠΎΠ²), purge ΠΈ ΠΌΠΈΠ½ΠΈΡΠΈΠΊΠ°ΡΠΈΡ.
ΠΡΠΎΡ ΠΏΠ»Π°Π³ΠΈΠ½ Π½Π΅ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΠ»Π°Π³ΠΈΠ½Ρ SWC Π²ΡΡ Π΅ΡΠ΅ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π½Π° ΡΡΠ°Π΄ΠΈΠΈ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ° Π΄Π»Ρ Next.js. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡΡ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ.
Next.js 16.1.0 β ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ. ΠΡΠΎ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ΅Π»ΠΈΠ·, ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΡΠΉ Π½Π° ΠΏΡΡΠΌΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΠΌ ABI Wasm-ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² SWC; Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π½Π½ΠΈΠ΅ ΡΠ΅Π»ΠΈΠ·Ρ ΠΎΡΠΊΠ»ΠΎΠ½ΡΡΡ ΠΏΠ»Π°Π³ΠΈΠ½. withIntlayer ΡΡΠΈΡΡΠ²Π°Π΅Ρ Π²Π°ΡΡ Π²Π΅ΡΡΠΈΡ Next.js ΠΈ ΠΏΡΠΎΡΡΠΎ Π½Π΅ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅Ρ ΠΏΠ»Π°Π³ΠΈΠ½ Π½ΠΈΠΆΠ΅ 16.1.0 β ΡΠ°ΠΊΠΈΠ΅ ΡΠ±ΠΎΡΠΊΠΈ Π²ΡΡ ΡΠ°Π²Π½ΠΎ ΠΏΡΠΎΡ
ΠΎΠ΄ΡΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ, ΠΏΡΠΎΡΡΠΎ Π±Π΅Π· ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π±Π°Π½Π΄Π»Π°.
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Intlayer Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΠΎΡ ΠΏΠ»Π°Π³ΠΈΠ½.
ΠΡΠΎΡ
ΠΎΠ΄Ρ purge ΠΈ ΠΌΠΈΠ½ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ (ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»Π΅ΠΉ) Π½Π΅ ΡΡΠ΅Π±ΡΡΡ Π½ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ°, Π½ΠΈ babel.config.js. ΠΠ±Π΅ΡΠ½ΠΈΡΠ΅ Π²Π°ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π² withIntlayer ΠΈ Π²ΠΊΠ»ΡΡΠΈΡΠ΅ ΡΠ»Π°Π³ΠΈ Π² intlayer.config.ts:
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
ΠΠΎ Π²ΡΠ΅ΠΌΡ next build withIntlayer Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ Π²Π°ΡΠΈ ΠΈΡΡ
ΠΎΠ΄Π½ΠΈΠΊΠΈ, ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ»ΠΎΠ²Π°ΡΠΈ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ Π² @intlayer/swc, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ Π² Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉwithIntlayer, Π° Π½Π΅withIntlayerSync. Π‘ΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π½Π΅ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ Π°Π½Π°Π»ΠΈΠ·Π°, ΠΏΠΎΡΡΠΎΠΌΡ purge ΠΈ ΠΌΠΈΠ½ΠΈΡΠΈΠΊΠ°ΡΠΈΡ Ρ Π½ΠΈΠΌ Π½Π΅ Π΄Π΅ΠΉΡΡΠ²ΡΡΡ.
Purge ΠΈ ΠΌΠΈΠ½ΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈnext buildβ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΎΡΠΊΠ»ΡΡΡΠ½ Π²ΠΎ Π²ΡΠ΅ΠΌΡnext dev.
ΠΠΎΠ»Π΅Π΅ ΡΠ°Π½Π½ΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ (Π΄ΠΎ 9.2.1) ΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΈ @intlayer/babel ΠΈ ΡΠ°ΠΉΠ» babel.config.js, ΠΎΠ±ΡΡΠ²Π»ΡΡΡΠΈΠΉ intlayerPurgeBabelPlugin ΠΈ intlayerMinifyBabelPlugin. ΠΡΠΎΡ ΡΠ°ΠΉΠ» Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π½ΡΠΆΠ΅Π½ ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΄Π°Π»ΡΠ½.
Vite
Vite ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΠ»Π°Π³ΠΈΠ½ @intlayer/babel, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΊΠ»ΡΡΠ΅Π½ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΊ vite-intlayer. ΠΠΎΠ»Π½ΡΠΉ ΡΠΈΠΊΠ» ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ (pipeline) β ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΡ ΠΈΠΌΠΏΠΎΡΡΠΎΠ², ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ (purge) ΠΈ ΠΌΠΈΠ½ΠΈΡΠΈΠΊΠ°ΡΠΈΡ (minify) β Π²ΠΊΠ»ΡΡΠ΅Π½ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ².
ΠΠΊΠ»ΡΡΠΈΡΠ΅ purge ΠΈ minify, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ»Π°Π³ΠΈ Π² intlayer.config.ts:
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
Webpack (ΠΈ Next.js Ρ Babel)
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ @intlayer/babel:
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
ΠΠΎΠ±Π°Π²ΡΡΠ΅ Π²ΡΠ΅ ΡΠ΅ΡΡΡΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½Π° Π² babel.config.js Π² ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅:
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
Π‘ΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ ΠΏΠΎ ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌ
ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΡΠ±ΠΎΡΠΊΠΈ Intlayer ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π° Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΠΈΡΠΊΡΠ΅ΡΠ½ΡΡ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΡ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ. ΠΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠ»Π°Π³ΠΈΠ½, ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Ρ ΠΏΡΡΠ°Π½ΠΈΡΡ ΠΏΡΠΈ ΠΈΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅.
ΠΠ»Π°Π³ΠΈΠ½Ρ Babel (@intlayer/babel)
ΠΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² babel.config.js Π΄Π»Ρ ΡΠ±ΠΎΡΠΎΠΊ Π½Π° Π±Π°Π·Π΅ Webpack (Next.js Ρ Babel, CRA, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ Webpack ΠΈ Ρ.Π΄.).
Π ΡΠ°Π±Π»ΠΈΡΠ΅ Π½ΠΈΠΆΠ΅ ΠΎΠ½ΠΈ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ Π² ΡΡΠ΅Π±ΡΠ΅ΠΌΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ° (Π² ΡΠΎΠΌ ΠΆΠ΅ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠ΄ΡΠΈ Π² babel.config.js):
ΠΡΠΊΡΡΡΡ ΡΠ°Π±Π»ΠΈΡΡ Π² ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠΌ ΠΎΠΊΠ½Π΅ Π΄Π»Ρ ΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° Π²ΡΠ΅Ρ Π΄Π°Π½Π½ΡΡ
| ΠΠ»Π°Π³ΠΈΠ½ | Π§ΡΠΎ Π΄Π΅Π»Π°Π΅Ρ |
|---|---|
intlayerExtractBabelPlugin | Π‘ΠΊΠ°Π½ΠΈΡΡΠ΅Ρ .content.ts ΡΠ°ΠΉΠ»Ρ ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ»ΠΎΠ²Π°ΡΠΈ Π² .intlayer/ |
intlayerPurgeBabelPlugin | Π‘ΠΊΠ°Π½ΠΈΡΡΠ΅Ρ Π²ΡΠ΅ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, ΡΠ΄Π°Π»ΡΠ΅Ρ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΠΏΠΎΠ»Ρ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° ΠΈΠ· ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
.intlayer/**/*.json ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ |
intlayerMinifyBabelPlugin | ΠΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²ΡΠ²Π°Π΅Ρ ΠΊΠ»ΡΡΠΈ ΠΏΠΎΠ»Π΅ΠΉ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° Π² ΠΊΠΎΡΠΎΡΠΊΠΈΠ΅ Π±ΡΠΊΠ²Π΅Π½Π½ΡΠ΅ Π°Π»ΠΈΠ°ΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, title β a) ΠΊΠ°ΠΊ Π² JSON-ΡΠ°ΠΉΠ»Π°Ρ
, ΡΠ°ΠΊ ΠΈ Π² ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ |
intlayerOptimizeBabelPlugin | ΠΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°Π΅Ρ useIntlayer('key') β useDictionary(hash) ΠΈ Π²Π½Π΅Π΄ΡΡΠ΅Ρ (import) ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΡΠ»ΠΎΠ²Π°ΡΡ |
ΠΠΎΡΡΠ΄ΠΎΠΊ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. Π Π²Π°ΡΠ΅ΠΌbabel.config.jsΠΏΠ»Π°Π³ΠΈΠ½Ρ purge ΠΈ minify Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠΊΠ°Π·Π°Π½Ρ Π΄ΠΎ ΠΏΠ»Π°Π³ΠΈΠ½Π° optimize. ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ (optimize) Π·Π°ΠΌΠ΅Π½ΡΠ΅ΡuseIntlayer('key')Π½Π΅ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΌ Π²ΡΠ·ΠΎΠ²ΠΎΠΌuseDictionary(hash), ΡΡΠΈΡΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΊΠ»ΡΡΠ΅ ΡΠ»ΠΎΠ²Π°ΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π½ΡΠΆΠ½Π° ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌ purge ΠΈ minify Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠΎΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ.
ΠΠ°ΠΆΠ΄ΡΠΉ ΠΏΠ»Π°Π³ΠΈΠ½ Babel ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² (options helper), ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ΄Π½ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΡΡΠΈΡΡΠ²Π°Π΅Ρ Π²Π°Ρ intlayer.config.ts Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Π½ΡΠ΅ (resolved) Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
ΠΡΠΊΡΡΡΡ ΡΠ°Π±Π»ΠΈΡΡ Π² ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠΌ ΠΎΠΊΠ½Π΅ Π΄Π»Ρ ΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° Π²ΡΠ΅Ρ Π΄Π°Π½Π½ΡΡ
| ΠΠΎΠΌΠΎΡΠ½ΠΈΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² | ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ |
|---|---|
getExtractPluginOptions() | intlayerExtractBabelPlugin |
getPurgePluginOptions() | intlayerPurgeBabelPlugin |
getMinifyPluginOptions() | intlayerMinifyBabelPlugin |
getOptimizePluginOptions() | intlayerOptimizeBabelPlugin |
ΠΠ»Π°Π³ΠΈΠ½Ρ Vite (vite-intlayer)
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ Vite Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΠΈΡ
Π½Π°ΠΏΡΡΠΌΡΡ. ΠΠ½ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ withIntlayer() Π² vite.config.ts. Π€Π»Π°Π³ΠΈ build.purge ΠΈ build.minify Π² intlayer.config.ts Π²ΠΊΠ»ΡΡΠ°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ².
ΠΡΠΊΡΡΡΡ ΡΠ°Π±Π»ΠΈΡΡ Π² ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠΌ ΠΎΠΊΠ½Π΅ Π΄Π»Ρ ΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° Π²ΡΠ΅Ρ Π΄Π°Π½Π½ΡΡ
| ΠΠ½ΡΡΡΠ΅Π½Π½ΠΈΠΉ Vite ΠΏΠ»Π°Π³ΠΈΠ½ | ΠΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ |
|---|---|
| Usage analyzer | Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΡΡΠΎ ΠΈ Π°Π½Π°Π»ΠΈΠ· ΠΏΠ»Π°Π³ΠΈΠ½Π° intlayerPurgeBabelPlugin |
| Dictionary prune | Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΡΡΠΎ ΠΈ Π·Π°ΠΏΠΈΡΡ JSON ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠΌ intlayerPurgeBabelPlugin |
| Dictionary minify | Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΡΡΠΎ ΠΈ Π·Π°ΠΏΠΈΡΡ JSON ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠΌ intlayerMinifyBabelPlugin |
| Babel transform | Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΡΡΠΎ ΠΈ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° intlayerMinifyBabelPlugin + intlayerOptimizeBabelPlugin |
ΠΠ»Π°Π³ΠΈΠ½ SWC (@intlayer/swc)
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Next.js ΡΠΎΠΆΠ΅ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΡΡΠΎ Π½Π°ΠΏΡΡΠΌΡΡ. ΠΠ°ΡΠΈΠ½Π°Ρ Ρ v9.2.1, withIntlayer() Π² next.config.ts Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π²Π΅ΡΡ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ β purge, ΠΌΠΈΠ½ΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΈ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌΠΏΠΎΡΡΠΎΠ² β ΠΎΠΏΠΈΡΠ°ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΡΠ»Π°Π³ΠΈ build.purge ΠΈ build.minify.
Π Π°Π±ΠΎΡΠ° ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π° Π½Π° Π΄Π²Π΅ ΡΠ°ΡΡΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Wasm-ΠΏΠ»Π°Π³ΠΈΠ½ SWC ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠ°ΠΉΠ»Ρ Π·Π° ΡΠ°Π· ΠΈ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅:
ΠΡΠΊΡΡΡΡ ΡΠ°Π±Π»ΠΈΡΡ Π² ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠΌ ΠΎΠΊΠ½Π΅ Π΄Π»Ρ ΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° Π²ΡΠ΅Ρ Π΄Π°Π½Π½ΡΡ
| ΠΡΠΎΡ ΠΎΠ΄ | ΠΠ΄Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ | Π§ΡΠΎ Π΄Π΅Π»Π°Π΅Ρ |
|---|---|---|
| ΠΠ½Π°Π»ΠΈΠ· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ + purge/ΠΌΠΈΠ½ΠΈΡΠΈΠΊΠ°ΡΠΈΡ JSON | Node, Π²Π½ΡΡΡΠΈ withIntlayer() | Π§ΠΈΡΠ°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΡΠ°ΠΉΠ» ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°, ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°Π΅Ρ .intlayer/**/*.json, ΡΠΎΡΠΌΠΈΡΡΠ΅Ρ ΡΠ°Π±Π»ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ |
ΠΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°Π½ΠΈΠ΅ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° (content.title β .a) | @intlayer/swc (Wasm) | ΠΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ ΡΠ°Π±Π»ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡΠΌ ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ Π² Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅ |
ΠΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌΠΏΠΎΡΡΠΎΠ² (useIntlayer β dict) | @intlayer/swc (Wasm) | Π’ΠΎ ΠΆΠ΅, ΡΡΠΎ intlayerOptimizeBabelPlugin |
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠΎΠ»Ρ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΈ ΠΊΠ°ΠΊΠΎΠΉ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ ΠΏΠΎΠ»ΡΡΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· Π½ΠΈΡ , ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π°, ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΠ° ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² Node; ΠΏΠ»Π°Π³ΠΈΠ½ SWC ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π»ΠΈΡΡ Π³ΠΎΡΠΎΠ²ΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ.
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ Intlayer ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΠ΅Ρ Π²Π°ΡΡ ΡΠ±ΠΎΡΠΊΡ, ΡΠ΅ΡΠ΅Π· ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ build Π² Π²Π°ΡΠ΅ΠΌ intlayer.config.ts.
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
ΠΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΎΡΡΠ°Π²Π»ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (undefined) Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°optimize.
Π‘ΠΌ. ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ ΠΎΠΏΡΠΈΡΠΌΠΈ: ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ±ΠΎΡΠΊΠΈ (Build Options)
ΠΡΠΊΡΡΡΡ ΡΠ°Π±Π»ΠΈΡΡ Π² ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠΌ ΠΎΠΊΠ½Π΅ Π΄Π»Ρ ΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° Π²ΡΠ΅Ρ Π΄Π°Π½Π½ΡΡ
| Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ | Π’ΠΈΠΏ | ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
|---|---|---|---|
optimize | boolean / undefined | undefined | ΠΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠ°Π·Ρ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠΈ ΠΈΠΌΠΏΠΎΡΡΠΎΠ². undefined = Π°ΠΊΡΠΈΠ²Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½-ΡΠ±ΠΎΡΠΎΠΊ. false ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠΊΠ»ΡΡΠ°Π΅Ρ purge ΠΈ minify. |
minify | boolean | false | ΠΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²ΡΠ²Π°Π΅Ρ ΠΊΠ»ΡΡΠΈ ΠΏΠΎΠ»Π΅ΠΉ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° Π² ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
JSON-ΡΠ°ΠΉΠ»Π°Ρ
Π² ΠΊΠΎΡΠΎΡΠΊΠΈΠ΅ Π±ΡΠΊΠ²Π΅Π½Π½ΡΠ΅ Π°Π»ΠΈΠ°ΡΡ. Π’Π°ΠΊΠΆΠ΅ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ Π² ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅. ΠΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΡΠΈ optimize: false. |
purge | boolean | false | Π£Π΄Π°Π»ΡΠ΅Ρ ΠΏΠΎΠ»Ρ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° ΠΈΠ· ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
JSON-ΡΠ°ΠΉΠ»ΠΎΠ², ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ Π½Π΅ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ Π² ΠΊΠΎΠ΄Π΅. ΠΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΡΠΈ optimize: false. |
ΠΠΈΠ½ΠΈΡΠΈΠΊΠ°ΡΠΈΡ (Minification) β ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΏΠΎΠ»Π΅ΠΉ
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ build.minify Π½Π΅ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ ΠΌΠΈΠ½ΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ Π²Π°ΡΠ΅Π³ΠΎ JavaScript-Π±Π°Π½Π΄Π»Π° β Ρ ΡΡΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ Π²Π°Ρ ΡΠ±ΠΎΡΡΠΈΠΊ. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΎΠ½ ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ JSON-ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ, Π·Π°ΠΌΠ΅Π½ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π·Π°Π΄Π°Π½Π½ΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΊΠ»ΡΡ Π½Π° ΠΊΠΎΡΠΎΡΠΊΠΈΠΉ Π±ΡΠΊΠ²Π΅Π½Π½ΡΠΉ Π°Π»ΠΈΠ°Ρ:
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠ΅ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊΠΎ Π²ΡΠ΅ΠΌ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡΠΌ ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ Π² Π²Π°ΡΠ΅ΠΌ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅, ΠΏΠΎΡΡΠΎΠΌΡ content.title Π² ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ Π²ΡΡ
ΠΎΠ΄Π΅ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡΡ Π² content.a. ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΡΡΠ°Π΅ΡΡΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΡΠΌ.
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
ΠΠΈΠ½ΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ, Π΅ΡΠ»ΠΈoptimizeΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π²false. ΠΠΎΠ³Π΄Π°editor.enabledΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅true, ΠΎΠ½Π° ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ, Π½ΠΎ Π±Π΅Π· ΡΡΠ°ΠΏΠ° ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ β Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ ΠΏΡΠ°Π²ΠΊΠΈ ΡΠ΅ΡΠ΅Π·keyPath, ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΠΈΠΌΠ΅Π½Π° ΠΏΠΎΠ»Π΅ΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ.
Π Next.js ΠΌΠΈΠ½ΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° @intlayer/swc Π½Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΠΈΠ»ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°Π³ΡΡΠΆΠ΅Π½ (Next.js Π½ΠΈΠΆΠ΅ 16.1.0). ΠΠ»Π°Π³ΠΈΠ½ β ΡΡΠΎ ΡΠ° ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ Π² ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ Π±Π΅Π· Π½Π΅Π³ΠΎ ΠΎΡΡΠ°Π²ΠΈΠ»ΠΎ Π±Ρ Π²Π°Ρ ΠΊΠΎΠ΄ ΡΠΈΡΠ°ΡΡΠΈΠΌ ΠΈΠΌΠ΅Π½Π° ΠΏΠΎΠ»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΡ
Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅Ρ.
ΠΠΈΠ½ΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π΄Π»Ρ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ, Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΡΡ
ΡΠ΅ΡΠ΅Π· importMode: 'fetch', ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΡ
JSON Π²ΡΠ΄Π°Π΅ΡΡΡ ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΌ API Ρ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΏΠΎΠ»Π΅ΠΉ β ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ΅ΠΉ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΡΡΠΎΡΠΎΠ½Π΅ Π½Π°ΡΡΡΠΈΡ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ ΡΠ΅ΡΠ²Π΅Ρ/ΠΊΠ»ΠΈΠ΅Π½Ρ.
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΏΠΎΠ»Π΅ΠΉ (Purging)
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ build.purge Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ, ΠΊ ΠΊΠ°ΠΊΠΈΠΌ ΠΏΠΎΠ»ΡΠΌ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ±ΡΠ°ΡΠ°Π΅ΡΡΡ Π²Π°Ρ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄, ΠΈ ΡΠ΄Π°Π»ΡΠ΅Ρ Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ»Ρ ΠΈΠ· ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
JSON-ΡΠ°ΠΉΠ»ΠΎΠ².
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
ΠΡΠΈΠΌΠ΅Ρ: ΡΠ»ΠΎΠ²Π°ΡΡ Ρ ΠΏΡΡΡΡ ΠΏΠΎΠ»ΡΠΌΠΈ, ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π² ΠΊΠΎΠ΄Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π²Π°:
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
ΠΡΠΈΡΡΠΊΠ° ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ, Π΅ΡΠ»ΠΈoptimizeΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π²false. ΠΠ½Π° ΠΎΡΡΠ°ΡΡΡΡ Π°ΠΊΡΠΈΠ²Π½ΠΎΠΉ, ΠΊΠΎΠ³Π΄Π°editor.enabledΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅trueβ ΠΎΡΠΈΡΠ΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ Π½Π΅ ΡΠΈΡΠ°Π΅ΡΡΡ Π½ΠΈ ΠΎΠ΄Π½ΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π΅Π³ΠΎ Π½Π΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ. Π Next.js ΠΎΠ½Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π°@intlayer/swcΠ½Π΅Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΈ ΠΊΠΎΠ³Π΄Π° Π½Π°ΡΡΡΠΎΠ΅Π½Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠ΅ ΠΈΠ· Π°Π΄Π°ΠΏΡΠ΅ΡΠΎΠ² ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ.
ΠΡΠΈΡΡΠΊΠ° ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΈΠ· ΡΠΎΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΡΠ°ΠΉΠ» Π½Π΅ ΡΠ΄Π°Π΅ΡΡΡ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡ (ΠΏΠ°ΡΡΠΈΠ½Π³), ΠΈΠ»ΠΈ Π΅ΡΠ»ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ°Π±ΠΎΡΡ useIntlayer ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, spreading ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° ΡΠ΅ΡΠ΅Π· prop Π±Π΅Π· Π΄Π΅ΡΡΡΡΠΊΡΡΡΠΈΠ·Π°ΡΠΈΠΈ). Π ΡΡΠΈΡ
ΡΠ»ΡΡΠ°ΡΡ
ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΡΡΡ Π²Π΅ΡΡ ΡΠ»ΠΎΠ²Π°ΡΡ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ.
Π Π΅ΠΆΠΈΠΌ ΠΈΠΌΠΏΠΎΡΡΠ° (Import Mode)
ΠΠ»Ρ ΠΊΡΡΠΏΠ½ΡΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π²ΠΊΠ»ΡΡΠ°ΡΡΠΈΡ
Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠ°Π½ΠΈΡ ΠΈ Π»ΠΎΠΊΠ°Π»Π΅ΠΉ, Π²Π°Ρ JSON ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΡΡΠ°Π²Π»ΡΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ°ΡΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π²Π°ΡΠ΅ΠΉ ΡΠ±ΠΎΡΠΊΠΈ (bundle). Intlayer ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΏΠΎΡΠΎΠ± Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΡΠΈΠΈ importMode.
ΠΠ»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅
Π Π΅ΠΆΠΈΠΌ ΠΈΠΌΠΏΠΎΡΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎ Π² Π²Π°ΡΠ΅ΠΌ ΡΠ°ΠΉΠ»Π΅ intlayer.config.ts.
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΠ»ΠΎΠ²Π°ΡΡ
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠ΅ΠΆΠΈΠΌ ΠΈΠΌΠΏΠΎΡΡΠ° Π΄Π»Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ
ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ Π² ΠΈΡ
ΡΠ°ΠΉΠ»Π°Ρ
.content.{{ts|tsx|js|jsx|mjs|cjs|json|jsonc|json5|md|mdx|yaml|yml}}.
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
ΠΡΠΊΡΡΡΡ ΡΠ°Π±Π»ΠΈΡΡ Π² ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠΌ ΠΎΠΊΠ½Π΅ Π΄Π»Ρ ΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° Π²ΡΠ΅Ρ Π΄Π°Π½Π½ΡΡ
| ΠΠΏΡΠΈΡ | Π’ΠΈΠΏ | ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
|---|---|---|---|
importMode | 'static', 'dynamic', 'fetch' | 'static' | Π£ΡΡΠ°ΡΠ΅Π»ΠΎ: ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ dictionary.importMode. ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ ΡΠ»ΠΎΠ²Π°ΡΠΈ (ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΡΠΌ. Π½ΠΈΠΆΠ΅). |
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° importMode ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΠΊΠ°ΠΊ ΠΊΠΎΠ½ΡΠ΅Π½Ρ ΡΠ»ΠΎΠ²Π°ΡΡ Π±ΡΠ΄Π΅Ρ Π²Π½Π΅Π΄ΡΡΡΡΡΡ Π² Π²Π°Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ. ΠΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎ Π² intlayer.config.ts (Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ dictionary) ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π² ΡΠ°ΠΉΠ»Π΅ .content.ts Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π°ΡΡ.
1. Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ΅ΠΆΠΈΠΌ (Static Mode - default)
Π ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ Intlayer Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ useIntlayer Π½Π° useDictionary ΠΈ Π²Π½Π΅Π΄ΡΡΠ΅Ρ ΡΠ»ΠΎΠ²Π°ΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² ΠΏΠ°ΠΊΠ΅Ρ (bundle) JavaScript.
- ΠΠ»ΡΡΡ: ΠΠ³Π½ΠΎΠ²Π΅Π½Π½ΡΠΉ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³ (ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉ), Π½ΠΎΠ»Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ΅ΡΠ΅Π²ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π³ΠΈΠ΄ΡΠ°ΡΠ°ΡΠΈΠΈ (hydration).
- ΠΠΈΠ½ΡΡΡ: Π‘Π±ΠΎΡΠΊΠ° Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Ρ Π΄Π»Ρ Π²ΡΠ΅Ρ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΡΠ·ΡΠΊΠΎΠ², Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°.
- ΠΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ: ΠΠ΄Π½ΠΎΡΡΡΠ°Π½ΠΈΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (SPA).
ΠΡΠΈΠΌΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°:
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
2. ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ΅ΠΆΠΈΠΌ (Dynamic Mode)
Π Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ Intlayer Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ useIntlayer Π½Π° useDictionaryAsync. ΠΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ import() (ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΡ Suspense), ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π»Π΅Π½ΠΈΠ²ΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ JSON Π΄Π»Ρ ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π»ΠΎΠΊΠ°Π»ΠΈ.
- ΠΠ»ΡΡΡ: Tree shaking Π½Π° ΡΡΠΎΠ²Π½Π΅ Π»ΠΎΠΊΠ°Π»ΠΈ (ΡΠ·ΡΠΊΠ°). ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΠΈΠΉ Π°Π½Π³Π»ΠΈΠΉΡΠΊΡΡ Π²Π΅ΡΡΠΈΡ, Π·Π°Π³ΡΡΠ·ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈΠΉ ΡΠ»ΠΎΠ²Π°ΡΡ. Π ΡΡΡΠΊΠΈΠΉ ΡΠ»ΠΎΠ²Π°ΡΡ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡΠ΄Π΅Ρ Π·Π°Π³ΡΡΠΆΠ΅Π½.
- ΠΠΈΠ½ΡΡΡ: ΠΡΠ·ΡΠ²Π°Π΅Ρ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ Π·Π°ΠΏΡΠΎΡ (ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π°ΡΡΠ΅ΡΠΎΠ²) Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π³ΠΈΠ΄ΡΠ°ΡΠ°ΡΠΈΠΈ.
- ΠΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ: ΠΡΡΠΏΠ½ΡΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ Π±Π»ΠΎΠΊΠΎΠ², ΡΡΠ°ΡΠ΅ΠΉ ΠΈΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° ΡΠ·ΡΠΊΠΎΠ², Π³Π΄Π΅ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΈΠΌΠ΅Π΅Ρ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
ΠΡΠΈΠΌΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°:
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅importMode: 'dynamic'ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ 100 ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π²ΡΠ·ΡΠ²Π°Π΅ΡuseIntlayer, Π±ΡΠ°ΡΠ·Π΅Ρ ΠΏΡΠ΅Π΄ΠΏΡΠΈΠΌΠ΅Ρ 100 ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΏΠΎΠΏΡΡΠΎΠΊ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ². Π§ΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΡΠΎΠ³ΠΎ Β«Π²ΠΎΠ΄ΠΎΠΏΠ°Π΄Π°Β» Π·Π°ΠΏΡΠΎΡΠΎΠ², Π³ΡΡΠΏΠΏΠΈΡΡΠΉΡΠ΅ ΠΊΠΎΠ½ΡΠ΅Π½Ρ Π² ΠΌΠ΅Π½ΡΡΠ΅ΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ ΡΠ°ΠΉΠ»ΠΎΠ².content(Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ΄ΠΈΠ½ ΡΠ»ΠΎΠ²Π°ΡΡ Π½Π° ΡΠ°Π·Π΄Π΅Π» ΡΡΡΠ°Π½ΠΈΡΡ), Π° Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΈΡ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ Π°ΡΠΎΠΌΠ°ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΉΠ»ΠΎΠ².contentΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΊΠ»ΡΡΠΎΠΌ: Intlayer ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡ ΠΈΡ Π² ΠΎΠ΄ΠΈΠ½ Π΅Π΄ΠΈΠ½ΡΠΉ ΡΠ»ΠΎΠ²Π°ΡΡ.
3. Π Π΅ΠΆΠΈΠΌ Fetch
ΠΠ°Π½Π½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΌΡ ΡΠ΅ΠΆΠΈΠΌΡ, Π½ΠΎ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΏΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ»ΠΎΠ²Π°ΡΠΈ ΠΈΠ· API ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Intlayer Live Sync. ΠΡΠ»ΠΈ Π²ΡΠ·ΠΎΠ² API Π½Π΅ ΡΠ΄Π°Π΅ΡΡΡ ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΠ΅Π½Ρ Π½Π΅ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΎΡΠΊΠ°Ρ (fallback) ΠΊ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΌΡ ΠΈΠΌΠΏΠΎΡΡΡ.
ΠΡΠΈΠΌΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°:
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΡΠΌΠΎΡΡΠΈΡΠ΅ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΊ CMS: CMS
Π ΡΠ΅ΠΆΠΈΠΌΠ΅ fetch Π½ΠΈ purge (ΠΎΡΠΈΡΡΠΊΠ°), Π½ΠΈ minify (ΠΌΠΈΠ½ΠΈΡΠΈΠΊΠ°ΡΠΈΡ) Π½Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ JSON ΠΎΡΠ΄Π°Π΅ΡΡΡ ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΌ API Ρ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΌΠΈ Π½Π°Π·Π²Π°Π½ΠΈΡΠΌΠΈ ΠΏΠΎΠ»Π΅ΠΉ.
ΠΡΠΎΠ³: Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ vs ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ
ΠΡΠΊΡΡΡΡ ΡΠ°Π±Π»ΠΈΡΡ Π² ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠΌ ΠΎΠΊΠ½Π΅ Π΄Π»Ρ ΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° Π²ΡΠ΅Ρ Π΄Π°Π½Π½ΡΡ
| Π₯Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ° | Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ΅ΠΆΠΈΠΌ (Static Mode) | ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ΅ΠΆΠΈΠΌ (Dynamic Mode) |
|---|---|---|
| Π Π°Π·ΠΌΠ΅Ρ ΡΠ±ΠΎΡΠΊΠΈ (JS) | ΠΠΎΠ»ΡΡΠ΅ (Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π²ΡΠ΅ ΡΠ·ΡΠΊΠΈ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°) | ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ (ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ΄, Π±Π΅Π· ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ°) |
| ΠΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½Π°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ° | ΠΠ³Π½ΠΎΠ²Π΅Π½Π½Π°Ρ (ΠΊΠΎΠ½ΡΠ΅Π½Ρ Π² Π±Π°Π½Π΄Π»Π΅) | ΠΠ΅Π±ΠΎΠ»ΡΡΠ°Ρ Π·Π°Π΄Π΅ΡΠΆΠΊΠ° (Π·Π°Π³ΡΡΠ·ΠΊΠ° JSON) |
| Π‘Π΅ΡΠ΅Π²ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ | 0 Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² | 1 Π·Π°ΠΏΡΠΎΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠ»ΡΡ ΡΠ»ΠΎΠ²Π°ΡΡ |
| Tree Shaking | ΠΠ° ΡΡΠΎΠ²Π½Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² | ΠΠ° ΡΡΠΎΠ²Π½Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΈ Π»ΠΎΠΊΠ°Π»Π΅ΠΉ |
| ΠΡΡΡΠΈΠΉ ΡΡΠ΅Π½Π°ΡΠΈΠΉ | UI-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ | ΠΡΡΠΏΠ½ΡΠΉ ΡΠ΅ΠΊΡΡ, ΠΌΠ½ΠΎΠ³ΠΎΡΠ·ΡΡΠ½ΠΎΡΡΡ |
ΠΠ½Π°Π»ΠΈΠ· Π²Π°ΡΠ΅ΠΉ ΡΠ±ΠΎΡΠΊΠΈ
ΠΠ½Π°Π»ΠΈΠ· Π²Π°ΡΠ΅ΠΉ ΡΠ±ΠΎΡΠΊΠΈ (Π±Π°Π½Π΄Π»Π°) β ΡΡΠΎ ΡΠ°ΠΌΡΠΉ ΠΏΡΡΠΌΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Π²ΡΡΠ²ΠΈΡΡ Β«ΡΡΠΆΠ΅Π»ΡΠ΅Β» JSON-ΡΠ°ΠΉΠ»Ρ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° (code-splitting). Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π³Π΅Π½Π΅ΡΠΈΡΡΡΡ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ (treemap) ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΡΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΏΠΎΡΡΠ΅Π±Π»ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΌΠ΅ΡΡΠ°.
Vite / Rollup
Vite ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Rollup Β«ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌΒ». ΠΠ»Π°Π³ΠΈΠ½ rollup-plugin-visualizer Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠΉ HTML-ΡΠ°ΠΉΠ», ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΠΈΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ Π² Π²Π°ΡΠ΅ΠΌ Π³ΡΠ°ΡΠ΅.
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
Next.js (Turbopack)
ΠΠ»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ App Router ΠΈ Turbopack, Next.js ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ.
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
Next.js (Webpack)
ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΡΠ±ΠΎΡΡΠΈΠΊ Webpack Π² Next.js, Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΌ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠΌ ΡΠ±ΠΎΡΠΊΠΈ. ΠΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ.
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅:
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Webpack
ΠΠ»Ρ Create React App (ejected), Angular ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ
ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ Webpack ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΏΠ»Π°Π³ΠΈΠ½ webpack-bundle-analyzer.
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
