我正在构建一个经典的数据库支持的动态网站,允许用户共享潜在客户。
我有点守旧,想使用纯 MVC 架构来实现我的系统。我正在考虑以纯“V”模式使用 React,而 Vapor 则扮演“M”和“C”角色。我需要一些帮助来了解如何集成 Vapor 和 React,或者更准确地说,我需要一些帮助才能确定某些功能最适合驻留在何处。
我的 Vapor 服务器端应用程序,处理所有安全、路由、模型(通过 Fluent 存储在 PostgreSQL 数据库中)和模型 Controller 。模型 Controller 仅输出纯 JSON 响应,以响应将通过中间件层的请求:检查用户访问“命令”的权限(基于数据库中保存的角色配置文件,以允许动态更改权限);验证访问相关记录的权限(基于他们可以成为成员的组的层次结构);并记录用户正在执行的操作。
到目前为止,我一直在使用 Leaf 模板引擎为用户使用的网站生成 .html 文件。 Leaf 模板通常只传递一个或两个属性——比如将要显示的记录的 ID,然后我使用一些 javascript 通过 AJAX 调用将数据拉回模型 Controller 。模型 Controller 和中间件可以访问 cookie 以满足所有用户身份验证/ session 相关需求。这在模型和 View 之间保持了非常清晰的分离,并且让我能够更轻松地构建一个移动应用程序,比如将来调用模型 RESTful 接口(interface)的移动应用程序。
现在我正在考虑将 React 用于 Web 前端,使用 React-Bootstrap 库。但老实说,我对如何正确整合它有点迷茫。例如呈现页面以显示记录 - 我如何传递记录 ID(伪代码警告!):
a) 我是否应该创建一个叶模板,将 id 作为参数传递到其中。该模板只需要一小段 javascript 来将参数传递给 react.js 脚本? Vapor 面看起来像:
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 Router 表明它也需要一些后端工作?
d) 放弃 React,坚持使用 leaf?
关于最后一点——如果我采用 React 方式,我会为每个我会为其构建叶模板的“屏幕”提供一个 .jsx 文件(转换为 .js)吗?如果是这样,我将如何通过引用公共(public)元素(例如 react 和 react-bootstrap 组件)来减少文件大小。目前我正在使用 Webpack 生成单个 .js 文件。我假设我不会使用 React 路由器,因为我为此使用 Vapor。
抱歉,如果其中一些是非常基本的,但我更喜欢后端,但也希望前端也经过精心设计,并实现最佳的职责分配。
感谢您深思熟虑的想法!
最佳答案
所以经过一些工作后,我的问题的答案是 c。
我有两个独立的项目:
1) 一个使用 Vapor 构建一个纯 RESTful 服务,该服务使用 JSON 响应响应 GET 和 POST 请求。假设浏览器不安全,它会处理所有安全问题。
2) 然后在前端,我有一个 React 单页应用程序。它在登录期间下载用户的权限,并使用它来控制屏幕上的可见内容。
服务器确保不会发送或保留任何超出用户权限的数据。因此,如果用户能够尝试在 React 应用中查看他们没有权限的页面,他们将只能看到页面结构而看不到数据。
关于swift - 整合 Vapor 和 React,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43504519/
我有一个将某些事件写入队列的Rails3应用。现在我想在服务器上创建一个服务,每x秒轮询一次队列,并按计划执行其他任务。除了创建ruby脚本并通过cron作业运行它之外,还有其他稳定的替代方案吗? 最佳答案 尽管启动基于Rails的持久任务是一种选择,但您可能希望查看更有序的系统,例如delayed_job或Starling管理您的工作量。我建议不要在cron中运行某些东西,因为启动整个Rails堆栈的开销可能很大。每隔几秒运行一次它是不切实际的,因为Rails上的启动时间通常为5-15秒,具体取决于您的硬件。不过,每天这样做几
是否可以在单个事件机器中运行多个服务器?我的意思是,多个服务可以由一个客户端连接同时使用。例如,登录服务器对用户进行身份验证,然后用户可以同时使用聊天室和简单的游戏,例如带有单个客户端套接字的跳棋?或者我是否需要为每个服务使用多个事件机器react器? 最佳答案 我试过了,它正在工作:#!/usr/bin/envrubyrequire'eventmachine'moduleEchoServerdefpost_initputs"--someoneconnectedtotheechoserver!"enddefreceive_datad
我正在尝试找到一种更好的方法将IRB与我的常规ruby开发集成。目前我很少在我的代码中使用IRB。我只用它来验证语法或尝试一些小的东西。我知道我可以将我自己的代码加载到ruby中作为一个require'mycode'但这通常不符合我的编程风格。有时我要检查的变量超出范围或在循环内。有没有一种简单的方法可以启动我的脚本并在IRB内的某个点卡住?我想我正在寻找一种更简单的方法来调试我的ruby代码而不破坏我的F5(编译)键。也许有经验的ruby开发者可以和我分享一个更精简的开发方法。 最佳答案 安装ruby-debugg
我开始了一个小型网络项目并使用Drupal来构建它。到目前为止,还不错:您可以快速建立一个不错的面向CMS的网站,通过模块添加社交功能,并且您有一个广泛的API可以在一个架构良好的平台中进行自定义。现在问题来了:网站的增长超出了最初的计划,我发现自己正处于认真开始为它编写代码的境地。由于Drupal项目,我对PHP有了新的认识,但我想用Ruby来做。我会感觉更舒服,以后维护起来更容易,我可以在其他Ruby/Rails应用程序中重用它。随着时间的推移,我想我会用Ruby重写Drupal中的现有部分。基于此,问题是:是否有人将两者(成功或失败的故事)结合起来?这是一个相当大的决定,但我在G
一、Elasticsearch简介实际业务场景中,多端的查询功能都有很大的优化空间。常见的处理方式有:建索引、建物化视图简化查询逻辑、DB层之上建立缓存、分页…然而随着业务数据量的不断增多,总有那么一张表或一个业务,是无法通过常规的处理方式来缩短查询时间的。在查询功能优化上,作为开发人员应该站在公司的角度,本着优化客户体验的目的去寻找解决方案。本人有幸做过Tomcat整合solr,今天一起研究一下当前比较火热的Elasticsearch搜索引擎。Elasticsearch是一个非常强大的搜索引擎。它目前被广泛地使用于各个IT公司。Elasticsearch是由Elastic公司创建。它的代码位
React添加Class的方式在vue中添加class是一件非常简单的事情:你可以通过传入一个对象,通过布尔值决定是否添加类:button:class="{active:isFlag,aaa:true}">按钮button>你也可以传入一个数组:h2:class="['aaa','bbb']">HelloVueh2>h2:class="[className1,className2]">HelloVueh2>甚至是对象和数组混合使用:h2:class="['aaa',{active:isFlag}]">HelloVueh2>而在React中就相对繁琐了,React在JSX给了我们开发者足够多的灵
从ReactRouterV3过渡到V4后,我再也无法使ReactTransition组低级API工作。React路由器的文档显示了与CSS动画相关的高级API的示例,这些示例与低水平的JS风味不起作用。任何人都设法或知道让这个工作?看答案已经一个月了,所以我想您找到了自己的出路,但可能会对他人有所帮助。我创建了这个:https://www.npmjs.com/package/reeact-router-v4-transition在我遇到同样的问题之后。它在开关组件中提供了一种过渡组。从将开关更改为TransitionSwitch的Appart,它不需要大幅度更改。我将在接下来的几天(可能是星期
是在React-Router(1.0.0-rc)url参数中的路由之间传递数据的唯一方法吗?我有一个组件A,它使用Historymixin,并且有一个事件处理程序,该事件处理程序发出服务器请求,然后调用that.history.pushState(null,'/B');以过渡到路由B由组件B处理。现在,我想将服务器返回的一些数据作为Prop(例如“登录成功”)传递给组件B,或者以某种方式影响B的状态,但我找不到任何说明这是可能的。有什么办法可以做到这一点,还是我需要将其作为url参数传递? 最佳答案 你有两个选择:将数据作为查询参数
我最近开始使用React,我遇到了输入验证问题。例如,它只是通过指令在另一个框架中作为Angular.js实现。经过一番研究,我发现newforms库,看起来像是当前开箱即用的最佳解决方案。但它非常重,不确定当前是否支持它(最后一次更新是7个月前)。另一种方法是将事件从父表单发送到其子输入,并在每个子输入上调用验证方法。但我找不到每个人都试图发明自己的东西的最佳实践,因此你需要自己写一些东西。表单验证的最佳解决方案是什么?React架构/框架(Flux/Redux)是否提供任何解决方案?谢谢, 最佳答案 我最近在React中使用了一
我正在创建一个网络应用程序,该应用程序将根据用户点击的城市对OpenWeatherAPI进行AJAX调用以获取城市的天气数据。我的前端使用React,后端使用Node.js/Express-但我无法正确设置如何根据用户的点击进行API调用。如何重构我的代码以使其基于点击?这是我目前所拥有的(JSBIN:http://bit.ly/1WedsL2)——目前硬编码为“London”:vardata=[{name:"London"},{name:"Tokyo"},{name:"NYC"}];varMusicBox=React.createClass({render:function(){re