swift – 整合蒸汽和反应

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

我有点老了,想要使用纯MVC架构来实现我的系统.我正在考虑在纯’V’模式下使用React,Vapor履行’M’和’C’角色.我需要一些帮助来了解如何集成Vapor和React,或者更精确地确定哪些功能最适合驻留.

我的Vapor服务器端应用程序,处理所有安全性,路由,模型(通过Fluent存储在Postgresql数据库中)和模型控制器.模型控制器仅向通过中间件层的请求输出JSON响应:检查用户访问“命令”的权限(基于数据库中保存的角色配置文件,允许动态更改权限);验证访问关联记录的权限(基于他们可以成为的组的层次结构);并记录用户正在执行的操作.

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

现在我正在考虑使用React进行Web前端,使用React-Bootstrap库.但说实话,我有点迷失了如何正确地整合这个.例如,渲染页面显示记录 – 如何传递记录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>

b)或者我应该拨打电话,例如,我将id作为URL参数传递,然后我将使用一些小的javascript提取并传递给react组件:

drop.get("viewRecord",myObject) { request in
     return Response(redirect: "/viewObject.html",myObject?.Id)
}

c)Vapor中的其他方式?我错过了React的观点吗?我认为这意味着没有关注前端和后端的不可知,但React路由器建议它也需要一些后端工作?

d)放弃反应,并说贴叶?

在最后一点 – 如果我采用React方式,我是否会为每个“屏幕”创建一个.jsx文件(转换为.js),我会为其构建一个叶子模板?如果是这样,我将如何通过引用公共元素(例如react和react-bootstrap组件)来减少文件大小.目前我正在使用Webpack生成一个.js文件.我假设我不会使用React路由器,因为我使用Vapor.

对不起,如果其中一些是非常基本的,但我对后端更加满意,但希望前端也能很好地设计,并且最大限度地分担责任.

谢谢你的想法!

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

我有两个独立的项目:

1)使用Vapor构建纯粹的restful服务,使用JSON响应响应GET和POST请求.它假设浏览器不安全,它处理所有安全性.

2)然后在前端,我有一个React单页面应用程序.它在登录期间下载用户的权限,并使用它来控制屏幕上可见的内容.

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

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...