我从Vue2更新到Vue3,现在有点卡住了。我在Rails中使用它。问题是一切都在加载和编译,而不是错误。我加载我的网页,看到的一切,而不是Vue文件。完全不知道如何修复它:(有什么想法吗?也许我没有看到smth或不知道在哪里寻找它。
如果我在应用程序文件上更改smth,它会显示一些更改或错误。我甚至删除了所有内容并添加了Vue文件,就像教程中显示的那样,仍然没有任何工作。
application.js
require("@rails/ujs").start()
require("turbolinks").start()
require("@rails/activestorage").start()
require("channels")
import Routes from '../routes/index.js.erb';
import '../css/index.css'
window.Routes = Routes;
import {createApp} from 'vue';
import Customer from '../customer.vue'
import CustomerSearch from '../customer_search.vue'
import CustomerPackages from '../customer_packages.vue'
import BusinessCases from '../business_cases.vue'
import SearchPanel from '../components/business_case/SearchPanel.vue'
import {turbolinksAdapterMixin} from "vue-turbolinks";
import Clipboard from 'v-clipboard'
document.addEventListener('turbolinks:load', () => {
const app = createApp({
el: "[data-behavior='vue']",
mixins: [turbolinksAdapterMixin],
})
})
app.component('customer', Customer);
app.component('customer-search', CustomerSearch);
app.component('packages', CustomerPackages);
app.component('business-cases', BusinessCases);
app.component('search-panel', SearchPanel);
envirement.js
const { environment } = require('@rails/webpacker')
const { VueLoaderPlugin } = require('vue-loader')
const vue = require('./loaders/vue')
const erb = require('./loaders/erb')
const pug = require('./loaders/pug')
environment.plugins.prepend('VueLoaderPlugin', new VueLoaderPlugin())
environment.loaders.prepend('vue', vue)
environment.loaders.prepend('erb', erb)
environment.loaders.prepend('pug', pug)
module.exports = environment
package.json
{
"name": "backyard",
"private": true,
"dependencies": {
"@rails/actioncable": "^6.0.0",
"@rails/activestorage": "^6.0.0",
"@rails/ujs": "^6.0.0",
"@rails/webpacker": "5.2.1",
"@tailwindcss/aspect-ratio": "^0.2.0",
"@tailwindcss/forms": "^0.2.1",
"@tailwindcss/typography": "^0.4.0",
"@vue/cli": "^5.0.0-alpha.8",
"axios": "^0.21.0",
"css-loader": "^5.0.2",
"dayjs": "^1.10.4",
"litepie-datepicker": "^1.0.13",
"node-sass": "4.14",
"pug": "^3.0.0",
"pug-plain-loader": "^1.1.0",
"rails-erb-loader": "^5.5.2",
"sass": "^1.32.7",
"sass-loader": "^11.0.1",
"turbolinks": "^5.2.0",
"v-clipboard": "^2.2.3",
"vue": "^3.0.2",
"vue-clickaway": "^2.2.2",
"vue-clipboards": "^1.3.0",
"vue-fuse": "^2.2.1",
"vue-loader": "^16.2.0",
"vue-nav-tabs": "^0.5.7",
"vue-pdf": "^4.2.0",
"vue-pug": "^4.0.0",
"vue-turbolinks": "^2.1.0",
"webpack": "4"
},
"version": "0.1.0",
"devDependencies": {
"@tailwindcss/postcss7-compat": "^2.0.3",
"@vue/compiler-sfc": "^3.0.11",
"@webpack-cli/serve": "^1.3.0",
"autoprefixer": "9",
"postcss": "7",
"tailwindcss": "npm:@tailwindcss/postcss7-compat",
"vue-cli-plugin-pug": "~2.0.0",
"webpack-cli": "3.3.12",
"webpack-dev-server": "^3.11.2"
},
"browserslist": [
"defaults"
]
}
2条答案
按热度按时间v2g6jxz61#
我遇到过类似的问题,我最好的猜测是
turbolinksAdapterMixin
。Vue 3将destroy
钩子更改并重命名为unmounted
钩子(参见此处),并对其组件API进行了其他更改。我相信,vue-turbolinks包仍然使用Vue 2的功能,例如$on
,$off
和$once
用于事件。Turbolinks
的工作方式是通过 AJAX 获取“下一个HTML主体”,然后替换document.body
。因此,您需要做的-并且已经正确地做了-是在turbolinks:load
的事件侦听器中使用createApp
创建Vue 3 App(当主体成功替换时)。然后,你必须在离开页面(即单击turbolinks链接)时使用
unmount()
拆除,即卸载Vue应用程序。因此,你必须替换你的代码:
用这个:
2nbm6dog2#
This article talks about获得rails 7与涡轮驱动(涡轮链接替换)与vue3和vuetify一起工作。
希望这能帮助你得到它。