Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 积分蒸汽和反应_Swift_Reactjs_Vapor - Fatal编程技术网

Swift 积分蒸汽和反应

Swift 积分蒸汽和反应,swift,reactjs,vapor,Swift,Reactjs,Vapor,我正在建立一个经典的数据库支持的动态网站,允许用户共享潜在客户 我有点老派,想用纯MVC架构实现我的系统。我正在考虑以纯“V”模式使用React,由Vapor扮演“m”和“C”角色。我需要一些帮助来理解如何集成蒸汽和反应,或者更准确地说,确定某些功能最好驻留在哪里 我的Vapor服务器端应用程序处理所有安全、路由、模型(通过Fluent存储在PostgreSQL数据库中)和模型控制器。模型控制器只输出纯JSON响应,这些响应将通过中间件层进行:检查用户访问“命令”的权限(基于数据库中保存的角色配

我正在建立一个经典的数据库支持的动态网站,允许用户共享潜在客户

我有点老派,想用纯MVC架构实现我的系统。我正在考虑以纯“V”模式使用React,由Vapor扮演“m”和“C”角色。我需要一些帮助来理解如何集成蒸汽和反应,或者更准确地说,确定某些功能最好驻留在哪里

我的Vapor服务器端应用程序处理所有安全、路由、模型(通过Fluent存储在PostgreSQL数据库中)和模型控制器。模型控制器只输出纯JSON响应,这些响应将通过中间件层进行:检查用户访问“命令”的权限(基于数据库中保存的角色配置文件,以允许动态更改权限);验证访问关联记录的权限(基于它们可以是其成员的组的层次结构);以及记录用户正在执行的操作

到目前为止,我一直在使用叶模板引擎为用户使用的网站生成.html文件。叶子模板通常只传递一个或两个属性——比如将要显示的记录的id,然后我使用一些javascript通过AJAX调用将数据拉回到模型控制器。模型控制器和中间件可以访问cookie以满足所有用户身份验证/会话相关需求。这在模型和视图之间保持了一个非常清晰的分离,并允许我更容易地构建一个移动应用程序,比如说在将来调用模型RESTful接口

现在我正在考虑使用React作为web前端,使用React引导库。但老实说,我对如何正确地整合这一点有点迷茫。例如,要呈现页面以显示记录-如何传递记录id(伪代码警告!):

a) 我是否应该创建一个叶子模板,将id作为参数传递到该模板中。模板只需要一小段javascript就可以将参数传递到react.js脚本上?蒸汽面看起来像:

drop.get("viewRecord", myObject) { request in
    let parameters = try Node(node:["objectId": myObject?.id.makeNode()])
    return try webApp.view.make("viewObject", parameters)
}
和.leaf模板有点像:

<script ...>
    var objectID = #(viewObject.id)
</script>
c) 蒸汽中的其他方式?我是不是没抓住要点?我原以为这是为了不把重点放在前端和后端,但React路由器建议它也需要一些后端工作

d) 放弃反应,说用叶子粘住

关于最后一点——如果我按照React的方式,我是否会为我构建叶模板的每个“屏幕”都有一个.jsx文件(传输到.js)?如果是这样,我将如何通过引用公共元素(如react和react引导组件)来减小文件大小。目前,我正在使用Webpack生成一个.js文件。我假设我不会使用React路由器,因为我使用的是蒸汽

很抱歉,如果其中一些是非常基本的,但是我对后端比较满意,但是我希望前端也能设计得很好,并使职责分工达到最佳


谢谢你深思熟虑的想法

所以经过一些工作,我的问题的答案是c

我有两个独立的项目:

1) 使用Vapor构建一个纯restful服务,该服务使用JSON响应GET和POST请求。假设浏览器不安全,它会处理所有安全问题

2) 在前端,我有一个React单页应用程序。它在登录期间下载用户的权限,并使用此权限控制屏幕上显示的内容


服务器确保不会发送或保留任何超出用户权限的数据。因此,如果用户能够尝试在React应用程序中查看他们没有权限查看的页面,他们只会看到页面结构,而不会看到任何数据。

回到这里……我在我的网站上为此编写了一个介绍教程,如下所示:


但本质上,使用两个独立的项目,并使用前端向后端发出API请求

开始使用Vapor并对此感到疑惑。难道不可能只将Vapor设置为后端API,然后从单独的React项目调用它吗?在您的MVC架构中,React项目将是V,Vapor后端将是M和C,正如您前面所述。至少,我会尝试一下,然后再向大家汇报。我本想回到这个问题上来,因为我现在有点进步了。是的,我有两个独立的项目:Vapor是一个纯restful服务——基本上用JSON响应GET和POST请求。假设浏览器不安全,它会处理所有安全问题。在前端,我有一个React单页应用程序。它在登录期间下载用户的权限,并使用此权限控制屏幕上显示的内容。服务器确保不会发送或保留任何超出用户权限的数据。所以一切都很好,而且速度也很快!如果你对你的解决方案感到满意(看起来你很满意),那么你应该发布你自己对这个问题的答案,并将其标记为已解决。
drop.get("viewRecord", myObject) { request in
     return Response(redirect: "/viewObject.html", myObject?.Id)
}