提问人:LeXav 提问时间:9/3/2023 更新时间:9/3/2023 访问量:92
Vue3.js和导出的命名空间
Vue3.js and exported namespace
问:
我有一个代码在一个.ts文件中,我想将其导入 a.vue 文件以保持一致性。
在.ts文件中,我在导出的命名空间中有一些函数。
问题是当我将其保存在 .vue 文件中时,出现以下错误:
<script setup> cannot contain ES module exports. If you are using a previous version of <script setup>, please consult the updated RFC at https://github.com/vuejs/rfcs/pull/227
如果我删除 export 关键字,我会得到:
SyntaxError: ambiguous indirect export: ...
/path/to/file.js 的结构
<script setup lang="ts">
import { Stuffs } from "package";
export namespace myNS {
// members here
}
</script>
/path/to/importer.js 的结构
<script setup lang="ts">
import { ref, onMounted } from "vue";
import { myNS } from "@/path/to/file.js";
//Stuffs
</script>
viteJS公司
import { fileURLToPath, URL } from "url";
import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
// https://vitejs.dev/config/
export default defineConfig({
define: {
__VUE_I18N_FULL_INSTALL__: true,
__VUE_I18N_LEGACY_API__: false,
__INTLIFY_PROD_DEVTOOLS__: false,
},
plugins: [vue()],
resolve: {
alias: {
"@": fileURLToPath(new URL("./src", import.meta.url)),
},
},
});
问题:
那么我如何在此上下文中导出我的命名空间呢? 除了导出之外,我还有什么替代方案?
我需要我的函数可以在他们的文件之外访问并在 vue3 组件中调用。
谢谢
答:
0赞
Dimava
9/3/2023
#1
由于这个确切的原因,您无法将代码从 TS 文件移动到脚本设置中 -
您不能在脚本安装程序中使用导出
这就是使用 TS 而不是仅使用脚本设置的全部原因
脚本安装程序唯一可以导出的是整个组件的隐式默认导出
如果要导出命名空间,请使用 TS 文件
如果需要组件的命名空间,请将组件作为默认值导入,然后重新导出到命名空间中.vue
评论
0赞
LeXav
9/3/2023
好吧,那我就退后一步。我以为我可以避免多次扩展,但没有。谢谢迪马瓦
0赞
Dimava
9/3/2023
@LeXav好吧,你可以避免使用 Vue 苍蝇 ,但你绝对不希望这样
1赞
Famurewa Taiwo
9/3/2023
#2
在代码中,您尝试导出命名空间 (myNS) 并从外部包导入。不直接支持这些功能。要解决此问题,您可以考虑以下方法: 使用块:如果需要导出命名空间或使用高级 ES 模块功能,最好使用常规块而不是 .
<script lang="ts">
import { Stuffs } from "package";
export namespace myNS {
// members here
}
</script>
评论
0赞
LeXav
9/6/2023
你的意思是除了脚本设置之外的脚本块?很好,我会尝试的,同时+1
评论
<script setup lang="ts">