用mobx构建大型项目的最佳实践(2)
栏目: JavaScript · 发布时间: 6年前
内容简介:有朋友在读了上篇文章之后,希望我能出个
有朋友在读了上篇文章之后,希望我能出个 demo
。于是我做了一个简单的项目来实践上文中所讲到的理念。
仓库地址
下面简要介绍一下项目结构及开发流程,以帮助各位同学更好的理解项目。
目录结构
项目根目录为 ./src
(可通过 package.json
内的 basePath
配置) 页面目录为 pages
, 跨页面通用业务组件目录为 components
。两个目录仅仅业务含义不同,但 store
和 action
的组织方式一致。
以 pages
目录为例( components
下的组件同理)
|--pages |--aPage |--index.tsx |--index.scss |--aComponet |--index.tsx |--index.scss |--actions |--nameaAction.ts |--namebAction.ts |--stores |--nameaStore.ts |--namebStore.ts |--components 同pages结构 复制代码
store
或者 action
的所在页面名称和文件名称暗示了组件内获取对应实例的路径
如 在组件文件 index.tsx
里,
@inject(({rootStore, rootAction}) => { return { storeA: rootStore.aPage.nameaStore, actionA: rootAction.aPage.nameaAction } }) class AComponent extends React.Component{ } 复制代码
实现上述功能的核心代码在 mobx
目录内。
-
1、
mStore
和mAction
装饰器收集需要注册的store
和action
的class
-
2、
provider
根据收集到的store
和action
按照页面划分结构,并注入到根组件中。 -
3、各级子组件通过
mobx-react
提供的inject
来获取需要的store
和action
-
4、
action
和store
按需实例化,action
实例化时会传入当前页面的store
和action
,也可以通过第3、4个参数拿到rootStore
和rootAction
-
借助
zone.js
确保store
的方法调用只能限制在action
内
脚手架
添加前端页面或者组件
node tools/add-page.js [page-path] -m 创建mobx相关文件 xxStore,xxAction -c 创建通用组件,所有文件会生成到components目录下,其他没区别 更多命令通过 node tools/add-page.js -h 查看 # 如 node tools/add-page.js home -m node tools/add-page.js home/aComponent -m //创建页面内的组件 复制代码
删除前端页面目录或者组件目录
node tools/rm-page.js [page-path] # 如 node tools/rm-page.js home node tools/rm-page.js home/aComponent 复制代码
以上两个命令除了生成或者删除对应文件,还会更新 mobxDependence.js
文件对所有 store
和 action
文件的引用.
如果是手动添加删除,需要手动去引入或删除对应 store
和 action
文件的引用。
类型声明
在用脚手架创建或删除组件时,均会更新 typings/index.d.ts
,以便获得更好的代码提示。
ts transformer plugin
所在目录 ./transformer
可以发现组件里 store
和 action
的装饰器并未显式的指定本身的访问路径(当然也可以手动指定),这正是这个 ts
插件所发挥的作用,通过 store(action)
所在的目录和文件名暗示 store(action)
在 rootStore
( rootAction
)的访问路径。
最后
欢迎star,pr,有什么问题也可以提issue。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Uberland
Alex Rosenblat / University of California Press / 2018-11-19 / GBP 21.00
Silicon Valley technology is transforming the way we work, and Uber is leading the charge. An American startup that promised to deliver entrepreneurship for the masses through its technology, Uber ins......一起来看看 《Uberland》 这本书的介绍吧!