-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
基于 NPM 的大型 React 单页应用探索(多场景多方案) #10
Comments
Nice sharing |
@AllenFang Thank you。先整理下资料,后续会整理出基于 npm 的多模块多项目开发协作流程及工具。 |
👍 |
@AllenFang 推荐你看看上面的两篇参考文章 |
Readed, Good articles :) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
基于 NPM 的大型 React 单页应用探索(多场景多方案)
本文目标构建基于 NPM 的大型 React 单页应用(以及多页面),支持多模块协同开发、分布式构建与发布。
JavaScript 规划
首先初始化顶层目录结构:
按文件类型组织 File-Type First (FTF)
按功能组织 Feature First (Pods)
可以像这样按功能分组:
那么通用文件如何放置呢?一个方案是将他们放入框架文件夹:
多 App 模式 Multiple Apps
依然有很多通用代码,可以放入通用文件夹:
到目前为止,按功能组织模式仍然可以 hold 住,我们可以在每个 App 使用按文件类型组织模式,但是依然有缺点,仅仅适合单 App 模式。
面对疯狂增长的 routes 或者 reducers,还有一种优雅的方式是使用代码分包(code-splitting),例如动态加载 React Router 和动态增加 Redux reducers,那么我们如何组织这些文件呢?我们可以定义一个顶级文件夹
boot/
,一个项目文件夹例如kapost/
。……
Application Organization
API
同构 Universal Rendering
Domains and Authentication
App Configuration
Assets
Styles
CSS 方案:
构建工具:
本文基于 SASS 实现模块化方案。
Without webpack and inlining
每个项目的样式文件目录:
每个样式文件通过命名空间来实现模块化,根据组件确定前缀:
共享的样式可以放入
shared/
目录,全局样式可以放入类似stylesheets/app/
的目录(使用命名空间)。每个 app 都负责引入所有功能模块的样式文件,顶层 app 负责引入所有子 app 的样式文件。如果分离一些 apps 到分离的代码仓库,可以共享相同的构建流程,只需要维护相同的构建配置。
With webpack and inlining
Why You Shouldn’t Style React Components With JavaScript
Testing
基于 NPM 的协同开发方案
私有 NPM 方案:
NPM 分包:
……
分布式编译
参考:
The text was updated successfully, but these errors were encountered: