我正在学习反应并编写自己的组件,但是我遇到了项目组织方面的问题。
这是我的树
Project_Folder
- Components
- Form
- index.js
- form.less
- package.json
- Button
- index.js
- button.less
- package.json
- node_modules
- <million unknown packages>
- application.js
- webpack.conf.js
在我的application.js
中,我以如下方式导入表单:import Form from './Components/form/index.js';
最近,我想出是否只要将自己的components文件夹放到node_modules
文件夹中,就可以使用import Form from 'Components/Form';
来导入我的组件更好。但是开发这个组件变得很麻烦,因为每当我进入node文件夹时,它就有数百万个webpack或babel或mini-CSS-extractor所需的其他模块。
在node_modules中是否有更好的组织解决方案,或者我应该在全球范围内安装开发工具?
答案 0 :(得分:3)
当然,您不应该将组件保留在node_modules目录中,在那儿,您只能保留应用程序的依赖项。这可能是一个不错的read for you。尤其是在使用git存储库时,不应在其中复制node_modules
目录,因为正如您所注意到的那样-这很麻烦。克隆存储库后,让其他使用此代码的人自己安装依赖项。
约定很少-一种约定是将组件保留在src/
目录中。我的建议是在全局安装create-react-app
(用于React网站的样板生成器,available here)并检查其约定。对您来说应该是一个很棒的课程。
与我有关的一件事是,为什么每个组件中都有package.json
?整个项目应该只有一个package.json
文件。 Read here。
如果您希望文件路径更短并且更易于阅读/使用,则可以使用Webpack like this创建别名。
答案 1 :(得分:2)
将组件放在node_modules文件夹中不是一个好主意。 除非,否则您将通过其他工具/框架在团队之间创建可共享代码。使用您的组件会产生一堆尚未遇到的问题:(!!p
i.e节点模块提供了仅使用package.json
共享代码并使用.gitignore
忽略代码的灵活性。并通过npm install
重新安装它们。
您能在这里看到问题吗?
现在要在节点模块内共享组件,这些选项是:
构造文件夹是一个微妙的话题。它会分析一些更适合您的口味的方法,并且没有正确的方法(即使您发现专家声称这种方法是正确的)
要获得更好的方法,您可以查看react文档:
https://reactjs.org/docs/faq-structure
以及我认为足以满足您情况的教程
祝你好运:)
答案 2 :(得分:1)
您应该避免弄乱您的node_modules文件夹。最好让npm或yarn写入其中。
按功能分组文件
common/
Avatar.js
Avatar.css
APIUtils.js
APIUtils.test.js
feed/
index.js
Feed.js
Feed.css
FeedStory.js
FeedStory.test.js
FeedAPI.js
profile/
index.js
Profile.js
ProfileHeader.js
ProfileHeader.css
ProfileAPI.js
按类型分组文件
api/
APIUtils.js
APIUtils.test.js
ProfileAPI.js
UserAPI.js
components/
Avatar.js
Avatar.css
Feed.js
Feed.css
FeedStory.js
FeedStory.test.js
Profile.js
ProfileHeader.js
ProfileHeader.css