【发布时间】:2017-05-24 12:07:59
【问题描述】:
我正在为 React 使用 Next.js。我喜欢 Arc(其他反应样板)如何动态导入组件而无需开发人员指定路径。
import { Input, Label, Field, HomePage, PageTemplate } from 'components'
文件夹结构可能看起来像这样:
components
|_ index.js
|_ atoms
|_ Input
|__ index.js
|_ molecules
|_ organisms
|_ templates
我想像这样导入它:
import { Input } from 'components'
用于动态导入的代码:components/index.js
const req = require.context('.', true, /\.\/[^/]+\/[^/]+\/index\.js$/)
req.keys().forEach((key) => {
const componentName = key.replace(/^.+\/([^/]+)\/index\.js/, '$1')
module.exports[componentName] = req(key).default
})
但是它不起作用。我得到的错误:
找不到模块:错误:无法解析模块“组件”...
问题是require.context 在服务器端不可用。
我想我需要在加载器配置中指定要像这样导入的路径。任何人都可以分享如何正确完成此操作的提示吗?
【问题讨论】:
-
为什么不让你的 /components/index.js 导出文件夹中的所有组件?
-
@Robsonsjre 能否请您链接参考或显示示例?顺便说一句,这在后台如何工作?它会破坏性能或内存消耗吗? Next.js 默认做 SSR,只渲染导入的内容。
标签: javascript reactjs webpack next.js