流明 - 服务于ReactJS项目

我正在为一个项目开发一个Lumen / React应用程序。 Lumen显然正在提供API,而React正在生成用户界面。 我现在尝试通过Lumen提供我的React应用程序,以便它可以接管所有用户界面工作。</ p>

我希望尽可能保留应用程序的客户端部分 如果我愿意的话,允许我将来很容易从Lumen切换到Koa或任何其他后端。 我的应用程序结构如下所示:</ p>

</ p>

正如您当前可以看到的React应用程序 是repo的子目录。 这是我以前的Koa项目所做的事情,但是,由于Nodejs web服务的性质,它使得提供这些文件变得容易得多。</ p>

从我的测试到目前为止, 我认为提供文件服务的最佳方法是从客户端文件夹中读取 index.html </ code>的内容,/ build或/ public,具体取决于是否启用了生产。 然后,我需要将Web服务器设置的公共文件夹之外的资源请求重定向到客户端文件夹中的/ build或/ src,这取决于它是否正在生产中。</ p>

我的问题是:</ p>

A)这是否可以以安全可靠的方式实现?</ p>

B)这是否是提供服务的最佳方式 通过Lumen反应应用程序?</ p>
</ div>

展开原文

原文

I am working on a Lumen / React app for a project. Lumen is obviously supplying the API and React is producing the user interface. I am trying to now serve my React application through Lumen so it can then take over all the user interface work.

I wish to keep the client side section of the app as contained as possible to allow me to switch easily from Lumen to Koa, or any other backend, in the future if I wish. My application structure looks something like this:

enter image description here

As you can see currently the React app is a subfolder of the repo. This is something that I have done with previous Koa projects, however, due to the nature of Nodejs web serves it made it a lot easier to serve these files.

From my testing so far, I think the best way of going about serving the files is to read the contents of the index.html from the client folder, either /build or /public depending on whether production is enabled. I will then need to redirect requests for assets outside the public folder set by the web server to /build or /src in the client folder, again, depending on whether it is in production.

My questions are:

A) Is this possible in a secure and reliable way?

B) Is this the best way of going about serving the React application through Lumen?

douxieqiu0651
douxieqiu0651 我真的不希望维护两个存储库以及以两种不同的方式提供内容。除此之外,我正在使用的验证系统,由其他提供商提供,如果通过Lumen应用程序提供所有内容,则可以更好地工作。还有其他合适的方式吗?
接近 2 年之前 回复
doucang6914
doucang6914 这些天大多数人都将它们作为单独的回购,这有助于切换后端,并使回购不那么繁琐。同样在一天结束时,您的客户端只会生成可以在CDN上提供的静态资产,所有它需要知道的是API基本URL。
接近 2 年之前 回复

1个回答



可能不是最好的解决方案,但我只是编写了自己的脚本,在构建脚本运行后将构建的版本部署到Lumen文件 。</ p>

可以使用React代理选项进行开发。</ p>

  const copydir = require('copy-dir'); 
const fs = require('fs');

copydir.sync('。/ build','.. / public');
nnfs.readFile('。/ build / index.html','utf8' ,function(err,data){
if(err)throw err;
fs.writeFile('../resources/views/index.php',data,function(err){
if(err)throw 错误;
});
});
</ code> </ pre>
</ div>

展开原文

原文

Probably not the nicest solution, but I just wrote my own scripts to deploy the built version to the Lumen files after the build script is run.

Development can be done with the React proxy option.

const copydir = require('copy-dir');
const fs = require('fs');

copydir.sync('./build', '../public');

fs.readFile('./build/index.html', 'utf8', function (err, data) {
    if (err) throw err;
    fs.writeFile ('../resources/views/index.php', data, function(err) {
        if (err) throw err;
    });
});

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐