【发布时间】:2014-11-07 20:23:31
【问题描述】:
我正在使用 Gulp 和 Browserify 生成一个 bundle.js 文件。
gulp.task('js', function () {
browserify('./js/app.js')
.transform(reactify)
.bundle()
.pipe(source('bundle.js'))
.pipe(gulp.dest('./js/'));
});
我现在正在尝试使用来自服务器的数据初始化我的 Flux 应用程序,以便在页面加载时没有等待时间。
根据 Bill Fisher 的说法,这应该在像这样的引导文件中完成(幻灯片 62):https://speakerdeck.com/fisherwebdev/flux-meetup#62
我的问题是引导函数在哪里被调用?
我见过有人使用命令行来生成一个允许你在全局范围内使用 require 的包。我还看到人们将他们的 JSON 数据放入 script 标签中,并将其分配给 window 变量。
这一切对我来说似乎很混乱。这方面的最佳做法是什么?
我更喜欢:
<script type='text/javascript'>
MyApp.initialize({{json}});
</script>
另外,我正在加载的数据来自数据库。到目前为止,大多数 Flux 示例仅使用 localStorage,它在尝试异步加载数据时对我没有帮助。
【问题讨论】:
-
我认为你应该有一个最顶层的 app.js 文件,它呈现最顶层的反应元素,并触发初始的“加载数据”动作。您可以使用 ajax 加载初始数据,并将请求放入 ActionCreator 或 Store。两者各有利弊。将初始数据加载和 ajax 请求放入 ActionCreator 使 store 仅处理同步操作,但将这些请求放入 Store 更适合 SoC(关注点分离)。
标签: javascript reactjs gulp browserify flux