Коротка інструкція як створити новий React застосунок за допомогою ReScript та Vite
Попередження: ця стаття не про переваги та недоліки ReScript, це просто інструкція як підняти React проект з ReScript за допомогою Vite. Якщо ви не хочете читати - просто склонуйте цей репозиторій, встановіть залежності та експерементуйте.
Передумови
Перш ніж приступити до налаштування, переконайтеся, що на вашій системі встановлені Node.js та npm. Вам також знадобиться редактор коду, і для цього прикладу я буду використовувати Visual Studio Code.
Крок 1: Ініціалізація проекту Vite
Для початку відкрийте ваш термінал та виконайте наступну команду:
npm init vite retest
Ця команда ініціалізує проект Vite з назвою "retest", який надає основну структуру для вашого проекту.
Якщо ви маєте git, оновіть .gitignore наступними двома рядками:
*.bs.js
lib
Крок 2: Підготовка
Після ініціалізації проекту ви можете знайти деякі непотрібні файли та папки. Щоб очистити свій проект, виконайте такі дії:
- Перейдіть в папку "retest": `cd retest``
- Створіть нову папку "src": `mkdir src``
- Видаліть наступні файли та папки:
-
- counter.js
-
- main.js
-
- public
-
- javascript.svg
Також перемістіть файл style.css до папки src
і тепер ваша структура проекту буде набагато зручнішою в роботі.
Крок 3: Встановлення залежностей
Далі встановіть необхідні залежності для React, ReScript. Виконайте такі команди:
npm install @rescript/react rescript -D
npm install react react-dom
Також раджу встановити офіційне розширення ReScript для VSCode для полегшення розробки
Крок 4: Оновлення package.json
Відкрийте файл package.json
та додайт наступні команди в розділ "scripts":
"scripts": {
"build:res": "rescript",
"dev:res": "rescript build -w",
"dev": "vite"
}
Ці команди знадобляться вам для того щоб запустити ваш застосунок.
Крок 5: Налаштування ReScript
Для налаштування ReScript створіть файл bsconfig.json в корені проекту та заповніть його наступним вмістом:
{
"name": "drag13proj",
"sources": [
{
"dir": "src",
"subdirs": true
}
],
"package-specs": [
{
"module": "es6",
"in-source": true
}
],
"suffix": ".bs.js",
"jsx": { "version": 4, "mode": "automatic" },
"bs-dependencies": ["@rescript/react"]
}
Не забудьте замінити drag13proj
на бажане ім'я проекту. Або не міняйте, якщо воно вам пасує 😄
Крок 6: Створення файлу index.res
У папці src
створіть новий файл з ім'ям index.res (res це розширення файлів ReScript) та додайте наступний код ReScript:
switch (ReactDOM.querySelector("#app")) {
| Some(rootElement) => {
let root = ReactDOM.Client.createRoot(rootElement)
ReactDOM.Client.Root.render(root, <h1> {React.string("Hello world")} </h1>)
}
| None => Js.Console.log("No root element found")
}
Цей код запускає наш React застосунок. Якщо елемент з id app
не буде знайдено, ви побачите помилку в консолі. Це наша перша зустріч з ReScript і код може видатися трохи не зрозумілим, але насправді все прсто:
Я пробую знайти елемент з id #app і якщо він є виконується гілка ініціалізації. Якщо немає - ми побачимо помилку у консолі. Ця конструкція називається Pattern Matching і це щось накштал switch-case але на стероїдах - дуже потужна річ насправді.
Крок 7: Підключення ReScript до index.html
У файлі index.html
, який знаходиться в корені проекту, змініть атрибут src тегу <script>
з /main.js
на ./src/index.bs.js
.
Ця зміна забезпечує правильне включення вашого коду ReScript у ваш проект.
Крок 8: Запуск ReScript та Vite
Для запуску середовища розробки відкрийте два окремі термінали (можна було б поставити concurrently
, але для тествого проекту, певно, не варто) та виконайте наступні команди:
npm run dev:res
npm run dev
Це запускає компілятор ReScript в режимі спостереження і сервер розробки Vite паралельно. Тепер ви можете відкрити ваш проект за адресою http://127.0.0.1:5173/.
Крок 9: Додавання глобальних стилів
Ви можете імпортувати глобальні стилі в свій код ReScript, додавши наступний рядок в початок вашого файлу index.res:
%%raw("import './style.css'")
Це дозволить вам включити глобальні стилі CSS у ваш проект, такі як reset.css
або інші глобальні стилі (наприклад bootstrap 👿).
Крок 10: Додавання нового компонента React
Щоб додати новий компонент React, створіть новий файл в папці src
з іменем App.res
. В цьому файлі додайте наступний код:
@react.component
let make = (~title) => <h1> {React.string(title)} </h1>
Це створить нам новий компонент, який приймає title
в якості пропс. Доречі, ви звернули увагу на відсутність типу в title? Це ще одна сильна сторона ReScript - автоматичне виведення типів, в залежності від використання. І робить він це краще ніж TypeScript
Ще один важливий момент це дотримуватися конвенції - ім'я змінної для компоненту обов'язково повинно бути make
.
Оновлення index.res з новим компонентом
У файлі index.res оновіть код, щоб включити новий компонент "App":
ReactDOM.Client.Root.render(root, <App title="Hello world!" />);
Таким же способом ви можете додавати інші компоненти для побудови вашого застосунку. Просто не забудьте називати змінну make
.
Крок 12: Використання модулів CSS для стилізації компонента
Для застосування стилів до вашого компонента App
за допомогою модулів CSS, дотримуйтесь цих кроків:
- Створіть новий файл в папці
src
з іменемapp.module.css
. - Додайте наступний код CSS у app.module.css:
.header {
color: #4AF626;
}
У вашому компоненті App.res
імпортуйте стилі за допомогою наступного коду:
@module external styles: {..} = "./app.module.css";
Застосуйте клас "header" до елементу <h1>
у вашому компоненті "App" за допомогою квадратних дужок:
<h1 className={styles["header"]}> {React.string(title)} </h1>
Тепер СSS модулі готові працювати.
Підсумки
Вітаю, тепер у вас є стартовий проект на React та ReScript. Звичайно тут ще нічого не має, але перший крок уже зроблено - далі справа уже за вами. Репозиторій до цієї статті лежить туточки
[03.11.2023] rescript react vite