ruby-on-rails - Rails 5.1+ Vuejs Webpacker : Normal Rails MVC vs Rails API

标签 ruby-on-rails api vue.js vuejs2 webpacker

我正在使用 Rails 5.1 和 Vue.js 启动一个新应用程序,并带有内置的 Webpacker Vue.js 包(通过 --webpack=vue 标志生成)。

我试图了解使用普通 Rails MVC 应用程序与 Rails API 应用程序(使用 --api 标志生成 Rails 应用程序)的优缺点。

$ rails new someapp --webpack=vue
      vs.
$ rails new someapp --api --webpack=vue

鉴于 Rails API 自 2015 年以来已合并到核心中,并且通过 Webpacker gem 内置的 Webpack 是全新的(Rails 5.1,2017),构建 Rails 应用程序的最佳方式是什么,其中前端将是 Vuejs?或者,主要是 Vuejs?

坚持使用带有 Webpacker Vue 的常规 Rails,或带有 Webpacker Vue 的 Rails API?权衡取舍是什么?

部分答案将简单地归结为关于全栈 MVC 应用程序与带 API 的 SPA 应用程序的对话。但是,除了“这是一个全栈 MVC 应用程序与 SPA 应用程序的问题”之外,是否有任何我应该考虑的特定 Rails Way +Vue.js 组件工作流程。

我想指出的是,我意识到答案在某种程度上偏向于风格。有些人可能更喜欢其中之一。

两者都可以,但我想考虑易用性、兼容性以及以一种方式与另一种方式进行权衡。

谢谢。

最佳答案

要在 API --api 模式下使用 Rails,可以在此处找到相关的官方文档:

http://guides.rubyonrails.org/api_app.html

这会设置一个 JSON API,因此没有 View 层或任何中间件。

当使用命令 --webpack=vue 时,您会获得 View 层。在 GoRails 上可以找到一个很好的例子,说明如何使用它:

https://gorails.com/episodes/tagged/VueJS (将 VueJS 用于嵌套表单)

您会看到,像这样,您可以将多个 SPA 分布在您的 Rails View 目录中。

我个人会选择将两个代码库分开。这意味着 Rails 5 API,然后弄清楚 VueJS 如何与之通信,以便一切正常工作。

此处描述了如何设置经过良好测试的可靠 Rails 5 API:

http://aalvarez.me/blog/posts/testing-a-rails-api-with-rspec.html

同样出色且切中要点:

https://paweljw.github.io/2017/07/rails-5.1-api-with-vue.js-frontend-part-0-stack-choices/

请告诉我您的发现。

关于ruby-on-rails - Rails 5.1+ Vuejs Webpacker : Normal Rails MVC vs Rails API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45359493/

相关文章:

api - GitHub GraphQL API v4 与 REST API v3

ruby-on-rails - 在 sinatra 子应用程序中过滤之前

ruby-on-rails - Capistrano 和 Git,毁了我的生活。 "Unable to resolve revision for [HEAD] on repository ..."

c# - 如何开始使用 Google API v3?

node.js - 如何使用 NodeJs Express 请求模块发出 POST 请求

javascript - 一个基本的 Vue JS 搜索过滤器,不区分大小写或仅在数组中小写?

arrays - 复选框组的 vuejs 模型

ruby-on-rails - ActiveStorage-Safari缓存的附件

ruby-on-rails - Rails 3 - 在 Controller 中截断?

ruby-on-rails - Errno::ENOENT:没有这样的文件或目录 config/settings.yml (heroku 部署)