- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在不接触应用程序的实际服务器 API 部分的情况下开发我的 React/Redux 应用程序。理想情况下,我会针对一组 JSON 文件进行开发。执行此操作的最佳方法或最简单的方法是什么?理想情况下使用某种插件?这是我目前的想法:
创建一个仅在开发环境中启动的单独 API 服务器,并将我的客户端应用程序指向该服务器。
在我实际的中间件服务器 (Express) 中进行检查,如果不在生产环境中,则提供 JSON 文件。我不喜欢可能在更高环境中提供样本数据的想法,这感觉很老套。
两者都可以,但感觉很乱。我不想要一个单独的“假”API 服务器,因为这会导致我调用的路由可能有拼写错误或不同。如果 Javascript 有适当的接口(interface),这将减轻这种情况,但仍然感觉很乱。
这是我的环境的简化概述,它与您看到的示例略有不同,因为我将服务器端代码和客户端代码分开:
/my-cool-project
/api (express, no clientside)
/client-side-app-1 (react/redux)
/client-side-app-2 (react/redux)
/vendor (all libraries go in here so they can be shared across projects)
/release (upon building currently everything gets bundled up and this is what gets copied to the server)
我想这并不是真正的 React/Redux 问题,但这是我的项目第一次有 90% 是客户端。在 .NET MVC 应用程序中,我会使用构建转换通过 IOC 换出数据提供程序,并指向我希望它指向的内容(平面文件、不同的 sql 数据库、web 服务等)。
最佳答案
我们公司的一些更传统的开发人员最近一直在从 .NET MVC 应用程序过渡到 React/redux,因此这是我们为他们提出的解决方案。这只是众多可能实现中的一种。
REST API
他们首先学会了制作 RESTful API,因为其中一些仍在使用陈旧的、非特定的 API。根据您提到的“JSON 文件”,我假设您走在正确的道路上,但我会仔细检查以确保 API 真正符合 RESTful。原因是随着您的应用程序变得越来越复杂,您最终将需要一种方法来处理 POST 和 GET。
服务分离
下一步是将服务后端与前端完全分离,即分离服务器实例。我推荐一个简单的节点服务器,但几乎任何东西都可以。这里的关键是了解前端服务器中的环境变量。
使用环境变量,您可以导出 Web 应用程序的生产版本和开发版本,而无需将开发代码部署到生产版本,正如您正确指出的那样。有了手边的环境变量,我们称它为 env
,我们建议分派(dispatch)一个操作以将其存储在商店中,因为这是一个应用程序范围的状态变量,任何需要进行服务调用的组件都会使用它。
格式化服务调用
最后一部分是使用 env
来制定您的服务调用。我们使用 fetch
进行服务调用(强烈推荐它,因为它易于与 CORS 和 Cookies 一起使用)并有一个 utilities.js
文件来“生成”端点 URL .如果您仔细地以 RESTfull 方式创建 API,您会发现按照以下格式创建您所建议的内容非常容易:
示例
假设您的生产服务托管在
const PROD_ENDPOINT = 'exampleDomain.com:8080'
和一个在
获取的示例路径const sampleEndpoint = 'sample/documents'
当组件(有权访问 env
)需要获取该端点的数据时,我们调用 util 函数使用 env
编写 URL:
function composeURL(endpoint, env) {
if (env === 'prod') {
return `${PROD_ENDPOINT}/${sampleEndpoint}` // note I'm using ES6 string interpolation
} else {
return `file://some_path_to_your_JSON_files/${sampleEndpoint}`
}
}
我们没有像这样使用这个 composeURL
函数,因为在我们的例子中,我们的环境决定了要命中哪些托管服务而不是本地 JSON 文件。如果您只需要获取“本地 JSON 文件”用于开发,我建议您在本地运行您的开发服务以及您的 Web 应用程序。直接获取本地文件很快就会变得困惑。
希望这对您有所帮助,祝您好运!
关于javascript - 在 Redux/React 中交换样本数据有哪些技巧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36865364/
我在理解这些函数如何更新底层引用、原子等时遇到问题。 文档说:(应用当前身份值参数) (def one (atom 0)) (swap! one inc) ;; => 1 所以我想知道它是如何“扩展到
尝试让一段代码看起来更好。 我在 Clojurescript 中有以下内容: (swap! app-state assoc-in [:lastresults] []) (swap! app-state
我在数据库中有带有排序顺序号的记录。现在我想创建一个带有向上和向下按钮的用户界面来重新排序它们。制作两个 functionsUp(record) 和 functionDown(record) 的最佳算
如何才能让第二次点击时返回?我想我必须以某种方式找到活跃的,但不确定。 $("#test").click(function(){ $("#dsa").fadeOut() $("#asd
我需要有关这次考试的帮助。我需要反转输入字符串。 int main(void) { char str[30]; int strlen; int i=0; int count=0;int
我正在用 C 语言玩指针...我尝试编写一个接收指向值的指针、检索指针的指针并交换指向值的指针的交换,而不是接收指向值的指针和交换值的常规交换。 这是代码... 互换功能: void swap(voi
如何在 javascript 中切换值?例如,如果 x = apple,则函数应返回 x = orange。如果 x = orange,则函数应返回 x = apple。不确定,这里有什么用,切换或交
刚接触这类东西,可能做错了什么,但是- 我有 3 个成员 std::unique_ptr currentWeapon; std::unique_ptr weaponSlotOne; std::uniq
我想在 Map 内的不可变列表内交换项目,示例: const Map = Immutable.fromJS({ name:'lolo', ids:[3,4,5] }); 我正在尝试使用
我创建了动态数组。如果具有某些值,则填充。打印它。但是交换/交换指针后(任务是在特定条件下交换行) 条件取决于sumL。为了不浪费您的时间,我没有描述细节。 问题在于交换指针。 for ( k = 0
要反转整个 vector,存在 std::reverse。但我想将一个 vector “划分”为两部分(恰好在中间)并将两者反转,将它们放回一起并再次反转整个 vector 。例如我们有: 0 1 2
我正在致力于代码最小化和增强。我的问题是:是否可以在不破坏代码逻辑的情况下交换上面的 if 语句? int c1 = Integer.parseInt(args[0]) ; int c
我读过释放 vector 内存的最佳方法是: vector().swap(my_vector); 而且我真的不明白发生了什么。交换函数需要 2 个 vector 并交换它们的元素,例如: vector
我正在尝试编写一个 Haskell 函数,该函数接受一串字母对,并在所有字母组成的字符串中交换该对字母,但我想出的方法感觉很尴尬且不惯用。 我有 swap a b = map (\x-> if x =
我正在尝试使用向上和向下箭头交换两个元素。 JSFiddle 解决方案会很棒! 我的 HTML: Some text down Some ot
当将 subview 与另一个太阳 View 交换时,是否需要重新应用约束?是否需要删除适用于已删除 View 的约束? 或者它们应该自动持续存在? 最佳答案 约束是 View 的“一部分”。当您删除
所以我制作网站已经有一段时间了,但只是真正用于显示和信息的东西。我想尝试一下 AngularJs,所以我遵循了 Codeschool 上的指南。当我根据在线文档意识到我使用的语法不被推荐时,我在该应用
我正在尝试编写一个函数,可以将字符串中的 unicode 字符替换为非 unicode ASCII 字符,问题是上传包含它们的字符串时,unicode 连字符和引号不会被读取。 我希望该函数有一个带有
我目前正在使用 Azure 网站来部署我的应用程序。我目前正在使用两个网站,每个网站监听我的 GIT 的不同分支。如图所示here . 现在,为了让它变得完美,我只是缺少一种在这两个实例之间快速切换的
在我的 javascript 中,有两个包含一些值的 div。 我想交换这些div中的值。 有什么解决办法吗? 最佳答案 var temp = $('#div1').html(); $('#div1'
我是一名优秀的程序员,十分优秀!