我有一个很难在网上找到信息的问题。我已经使用webpacker成功地将VueJS安装到Rails 6应用程序中,并在我的应用程序布局文件中注册了一个很好的根组件:
<!-- application.html.erb -->
<!-- javascript pack tags loaded in head and my app component displays the template properly -->
<div id="vue-app-root">
<app></app>
</div>
我知道,在单页应用程序中,VueJS应用程序在访问网站时只初始化一次,然后发出异步请求,而视图/模板更改则由VueJS发起--这一切都是有意义的。我的问题是,vue应用程序初始化应该如何与多页应用程序一起工作。
该应用程序是否在每次重新加载/涡轮链接加载时都完全初始化?如果我只是在不同的页面中到处使用几个组件,那么我会继续在每次加载页面时初始化整个VueJS应用程序,然后,然后再使用组件吗?如果是的话,应该在application.html.erb中的body标记(或根元素)上初始化Vue JS应用程序,还是应该仅在具有组件的页面上初始化应用程序?
发布于 2021-05-14 16:23:49
您需要找出什么是您的路由- Vue或Rails?
如果是Rails,那么是的,Vue应用程序需要在每次加载页面时重新挂载。这适用于您是否使用Turbo/Turbolinks,只要Vue应用程序在获取的部分。如果获取的部分位于Vue容器之外,并且使用Turbo/Turbolinks,则Vue应用程序将不会被重新加载。即使是在客户端上生成水合物的服务器呈现的Vue也是如此。
如果是Vue执行路由,Rails可能不会这样做,否则Vue应用程序将始终被重新加载。
发布于 2021-05-14 16:21:02
对于@sjaustirni的回答,我要补充的是,取决于您是否想使用Rails集成路由,您可以拆分这两个代码基。我的意思是:如果您只使用Rails作为API而不是它的路由,那么您应该将Vue项目放在它自己的repo中,而不是将两者混合在一起。
当然,如果您使用Rails的路由,那么将两者保持在同一个位置是有意义的。
此外,我想分享vue-turbolinks的存在,这在您的情况下可能是有用的,特别是如果使用Hotwire的话。
这是一个视频解释:https://gorails.com/episodes/how-to-use-vuejs-and-turbolinks-together
https://stackoverflow.com/questions/67289636
复制相似问题