我有一个App.vue
,它有一个模板:
<template>
<div id="app">
<login v-if="isTokenAvailable()"></login>
</div>
</template>
我已经在methods
中为Vue以常规方式声明了isTokenAvailable
方法,它使用了我在一个单独的js
文件中编写的一个函数:
<script>
import * as mylib from './mylib';
export default {
....
methods:{
isTokenAvailable: () => {
return mylib.myfunc();
}
}
}
</script>
mylib
是这样开始的:
import models from './model/models'
import axois from 'axios'
export default function() {
// functions and constants
}
当我运行该项目时,我收到以下警告:
export 'myfunc' (imported as 'mylib') was not found in './mylib'
我想我没有正确地导入或声明一个javascript模块...但是似乎有很多方法可以做到这一点,加上Vue中作用域的复杂性,我不确定什么是正确的方法?
这一点似乎并没有解决问题,特别是在vuej的背景下。
我已经试过了:
<script>
const mylib = require('./mylib');
...
</script>
函数修改为:exports.myfunc = function()
- 我是否应该有一些其他的依赖项才能使它工作?**因为我得到了一个不同的错误:
[Vue warn]: Error in render function:
TypeError: mylib.myfunc is not a function
4条答案
按热度按时间8fq7wneg1#
假设我想将数据从
src/mylib.js
导入到组件中:在我的.Vue文件中,我只是从
src/mylib.js
导入了test
:olmpazwi2#
经过几个小时的折腾,我终于得到了一些工作,部分答案在一个类似的问题在这里:How do I include a JavaScript file in another JavaScript file?
但是有一个导入程序把剩下的部分搞砸了:
在
.vue
文件中使用require以
mylib
导出避免
import
在我的例子中,实际的问题(我不认为这是相关的!)是
mylib.js
本身使用了其他依赖项,产生的错误似乎与此无关,并且没有来自webpack
的错误,但无论如何我有:只要我没有在
.vue
组件中使用mylib
,这个方法就可以工作,但是一旦我在那里使用mylib
,这个问题中描述的错误就会出现。我改为:
而且一切都按预期工作。
liwlm1x93#
我喜欢Anacrust的答案,但是,由于“console.log”执行了两次,我想对
src/mylib.js
做一个小的更新:所有其他代码保持不变...
mbzjlibv4#
我试图组织我的vue应用程序代码,遇到了这个问题,因为我的组件中有很多逻辑,不能使用其他子组件,所以在单独的js文件中使用许多函数并在vue文件中调用它们是有意义的,所以下面是我的尝试
1)组件(.vue文件)
2)外部js文件
3)查看实际应用:https://codesandbox.io/s/distracted-pare-vuw7i?file=/src/components/MyComponent.vue
编辑
在对Vue有了更多的经验之后,我发现您也可以使用mixin将您的代码拆分到不同的文件中,从而使编码和维护更加容易(参见https://v2.vuejs.org/v2/guide/mixins.html