我是React.JS的新手,并使用react-create-app来设置项目。
我想知道有没有办法使用相同的主机和端口来响应API请求,(服务器同时服务于前端和后端,就像在Django中一样)。
该文件提到了这一点,但没有详细说明。
通过相同的主机和端口我的意思是我只需要一个终端并运行npm start。
答案 0 :(得分:2)
如果仅用于开发,您只需添加
即可"proxy": "http://localhost:8000/"
到package.json
。
这会将您的API查询从React代理到您在另一个端口上工作的其他应用程序(有8000个)。
完成后,您需要构建生产代码(npm build
命令),其结果是index.html
,它会加载构建的js和css包。
从Django你只需要将你的IndexView指向这个文件(你可以将它作为TemplateView来实现,但也许更简单只是像那样呈现:
class IndexView(View):
def get(self, request):
index = open(str(settings.BASE_DIR.path('build/index.html')), 'r')
return HttpResponse(content=index.read())
然后只使用来自React的API - 从这一点开始,两者都可以在公共端口上使用。
回到开发模式 - 您还可以配置Webpack以在每次保存更改时构建应用程序并仅从Django(或Rails,或Node或任何后端)运行它们,但我更喜欢使用代理,在完成开发之前,将这两个应用程序保留在其原生上下文中。这种解决方案的一个缺点是您需要始终同时运行这两个应用程序。
我在那里发现了一些有用的信息和灵魂:https://www.fullstackreact.com/articles/using-create-react-app-with-a-server/