Rails Webpacker 还是 Vue-CLI?

Rails Webpacker or Vue-CLI?

我正在构建单页(Web)应用程序。我非常喜欢 Rails v5.0,尤其是它内置的 API 功能。

过去我使用 Vue.js 构建了 JavaScript 前端,通常使用 Vue-CLI project 提供的模板。这允许基本上在任何地方部署 Vue component-based 个静态站点。太棒了。

现在,Rails 5.1 有一些内置的 Webpack 和 Yarn 功能,这些功能看起来也非常引人注目。我不确定如何继续我的新申请。

我的问题:

  • What are the pros/cons of integrating Webpack and Vue into Rails itself, using the Webpacker extensions available in Rails v5.1? I intend to deploy to Heroku.
  • On the other hand, what are the pros/cons of using the Rails API-only mode for the backend, and maintaning the Vue/Webpack-based frontend in its own directory? I'd keep everything in the same repository, deploy the backend via Heroku, and the frontend via a static host like Netlify.
  • Which approach would have more cognitive overhead or technical complexity?

这几天一直在四处寻找,并没有在网上找到太多这方面的简明资料。人们似乎对 Rails 开发环境的自动重新加载功能很感兴趣,但我已经通过 Vue-CLI 免费获得了它。

据我所知,这些是将它们分开的原因:

  • Deployment of the frontend is pretty darn simple to anywhere.
  • The Webpacker mode for Rails is very new, and not many tutorials or guides exist yet, especially regarding integration testing. Keeping things separate means that my existing testing apparatus should still apply.

以下是将这两个部分集成在一起的一些优点:

  • The possibility of using static assets both for the frontend and possibly for server-generated pages in the future, should that be necessary.
  • Buy-in to "the Rails way", with implied future maintenance by the Rails team.
  • the JS Frontend would not need to be hosted separately.
  • Don't need to worry about CORS (?)

这两种方法还有哪些其他具体好处?

当我开始时,我采用了 webpacker 的方式,不知何故,因为它看起来就是 "supposed" 的样子。正如你所说,指导很少。 Webpacker(依赖于 latest 节点)似乎是一个移动的目标,使部署甚至开发变得更加复杂。为了什么好处,我问了就去掉了。

现在我使用 vue from the cdn。好处:

  • 靠近用户缓存
  • 几乎零安装
  • 容易获得dev/production个版本

我将应用程序代码写入 rails 模板。使用 haml,实际上 ruby2js,但您可以使用 javascript 就好了。这就是我开始的方式,但我喜欢 ruby,并且 ruby 代码几乎是生成的 js 的一半大小,但我偏离了轨道。

所以模板就是您的 "vue annoted" rails 模板。 小代码也进入 rails 模板。 可以在资产中定义更多代码并从应用程序中引用。 甚至可以使用 x-template 语法将组件写入模板。

最后但同样重要的是:数据可以通过 to_json 直接传输到模板中。并在同一个渲染中。比附加查询快得多。当 to_json 不够时,可以使用 rabl 来获得所需的东西。

我希望我说清楚了。我正在写一些 vue-rails 的东西,因为找不到什么。注意 here(我会在 post 准备好后发表评论)