Многие руководствуются рекомендациями Презентационные и контейнерные компоненты , но уважаемый автор в сносках признает, что концепция разделения спорна, и компоненты можно смешивать.Теги: #вискас #разработка сайтов #JavaScript #react.jsА если это так, то зачем тащить чемодан без ручки? Все компоненты проекта удобнее хранить в одной общей папке.
Каковы преимущества:
Когда проект вырастет, вам следует разделить его на частные пакеты npm, инкапсулирующие реализацию.
- Легко ориентироваться в файловой системе.
- Уникальные имена компонентов проекта.
- Импортируйте без боли ('.
/.
/.
/.
/.
/.
').
Но отсутствие дерева подпапок внутри папки компонентов гораздо сложнее разрабатывать и поддерживать.
Проверено.
Все компоненты организованы по доменному принципу в одной папке src/componens. Например, можно определить домены: Post — отображение публикации, PostForm — форма редактирования публикации.
Как создать компонент домена - src/компоненты/Post/Post.js. Почему нельзя использовать index.js вместо Post.js — соблюдается уникальность имен файлов компонентов внутри проекта, это упрощает навигацию по вкладкам редактора (и ценную функцию «Найти использования» для контекстного меню выбранный файл будет работать в WebStorm — см.
примечание).
Всем компонентам в папке компонентов домена присваивается префикс компонента домена (Post*.
js).
Подпапки в папке компонента домена не допускаются, внутри плоская файловая структура из компоненты-потомки (PostTitle.js, PostBody.js) и компоненты-предки (PostViewPage.js, PostListPage.js).
Компоненты-потомки используются внутри компонента домена, а компоненты-предки используются снаружи (например, в маршрутизаторе).
Для импорта компонентов домена необходимо внутри каждой папки компонента домена установить собственный package.json, в котором указать «основную» точку входа:
Кроме того, внутри файла компонента домена (Post.js) объявляется реэкспорт компонентов-предков:{ "name": "Post", "version": "0.0.0", "private": true, "main": ".
/Post.js", }
import PostViewPage from '.
/PostViewPage' import PostListPage from '.
/PostListPage' //.
export { PostViewPage, PostListPage } export default Post
К сожалению, вы не можете использовать конструкцию «экспорт из» (ограничение WebStorm), например:export { default as PostViewPage } from '.
/PostViewPage'
В результате явный доступ к файлам внутри папки компонентов не требуется, например:import Post from 'components/Post/Post'
По соглашению вам разрешено импортировать только по имени компонента домена:import Post, { PostViewPage, PostListPage } from 'components/Post'
Источники Примечание с помощью функции «Найти использование» в WebStorm. Как минимум, существует три контекста использования: 1) выбранным файлом, 2) выбранной переменной или символом, 3) выбранным по умолчанию в экспорте компонента.1) Выберите компонент файла/Post/PostViewPage.js, результат поиска:
// Post.js import PostViewPage from '.
/PostViewPage'
2) Выберите символ PostViewPage внутри файла PostViewPage.js, результат поиска:// PostViewPage.js PostViewPage.propTypes = {}
3) Выберите значение по умолчанию в экспорте компонента PostViewPage, результат поиска:// routes.js import { PostViewPage } from 'components/Post' <Route exact path="/post/:id(\d+)/" component={PostViewPage} />
Как видите, третье использование дает наиболее полезную информацию для компонента-предка.
ПС
CSS внутри компонентов Нашел правильный путь винт Стиль-JSX Для Создать приложение React .Теперь блоки CSS живут внутри файлов компонентов естественным образом — в формате CSS (в отличие от встроенных стилей объектов JS).
И вам не нужно беспокоиться о глобальной области видимости.
Абсолютные пути в импорте Они работают относительно папки src, пример:
import MyComponent from 'components/MyComponent'
Конфигурация Babel-plugin-module-resolver
['module-resolver', { 'root': ['src'] }]
Настройка вебшторма
Для папки src в контекстном меню выполните: Отметить каталог как > Корень ресурса.
Настройка Атома
- Установите плагин js-гиперклик .
- Для компонентов домена пропишите путь к src в package.json:
"moduleRoots": [".
/.
"]
Настройка VSCode
Вам необходимо добавить jsconfig.json в корень проекта:{ "compilerOptions": { "target": "ES6" }, "exclude": [ "node_modules" ] }
-
Gpt-3 В Картинках: Краткий Обзор
19 Oct, 24 -
Жилищная Проблема
19 Oct, 24 -
Мост Между Mac Os X И Windows
19 Oct, 24 -
Samsung Ai Forum 2021. День 1
19 Oct, 24