我有一个 Nuxt 项目,我需要制作自定义函数和 Vue mixins,以便在 Vue 组件和页面中重用。
我应该将包含这些文件的文件放在哪个文件夹中?我应该在 Nuxt 项目的顶层创建一个“lib”文件夹并将文件放在那里吗?
如果有帮助,请提供更多详细信息:
- 这些函数只会在需要时导入(不是全局的)
- 这些功能将被测试
我有一个 Nuxt 项目,我需要制作自定义函数和 Vue mixins,以便在 Vue 组件和页面中重用。
我应该将包含这些文件的文件放在哪个文件夹中?我应该在 Nuxt 项目的顶层创建一个“lib”文件夹并将文件放在那里吗?
如果有帮助,请提供更多详细信息:
在我的 nuxt 项目中,我通常在项目的根目录级别添加四个文件夹,这些文件夹mixins
用于我的所有 mixin,models
用于我在整个应用程序中使用的模型或类,services
其中包含我所有的 API 端点和我的utils
所有实用程序函数和其他通用函数,例如我的输入验证函数和我的目录,如下所示:
在这种情况下,mixins
您可以将所需的 mixin 导入所需的组件并像往常一样使用它们:
import someMixin from '@/mixins/someMixin'
...
export default {
mixins: [someMixin],
...
}
由于 Nuxt 没有任何特定的 mixins 目录,您可以像创建项目中的任何其他插件一样创建它们。我更喜欢将我过度使用的插件放在一个名为common
. 这真的是你的选择。但是由于您想在整个项目中重用它们,那么您可能需要使用类似的全局 mixin,但是如果处理不当,它们会导致内存泄漏。所以我们需要某种标志来防止它多次注册。
因此,创建一个您喜欢的目录(例如myMixinFolder
)。例如,我将创建一个 mixin 文件。我在里面创建了一个文件myMixinFolder
并命名它my-mixin-plugin.js
。
import Vue from "vue"
if (!Vue.__my_mixin__) {
Vue.__my_mixin__ = true
Vue.mixin({
methods: {
sayIt(name) {
console.log(`Hello dear ${name}`)
}
}
})
}
然后将其添加到nuxt.config.js
文件中:
plugins: [
{ src: '~/plugins/my-mixin-plugin.js' },
],
现在您可以在任何组件中使用它,如下所示:
<template>
<span>{{ sayIt('Batman') }}</span>
</template>
或在里面script
:
this.sayIt('Batman')
这样你就不需要一次又一次地导入mixin(虽然,如果你有多个mixin文件,你需要小心以防止内存泄漏)。