修复TypeScript中导入vue文件报错显红

修复 TypeScript 中导入 vue 文件报错显红 vue 2 的解决办法,针对 vue 文件导入报错 创建一个 shims.d.ts 文件,放置到 src/globalDeclare 中 declare module '*.vue' { import Vue from 'vue'; export default Vue; } vue 3.0 的解决办法,针对 vue 文件导入报错 vue3.0 中使用上述办法,会使 createApp 与 vue 类型不符合 导致 Vue 类型与 PublicAPIComponent 不符合 因此 vue3 中的声明方法使用以下办法: declare module '*.vue' { import { defineComponent } from 'vue'; const Component: ReturnType<typeof defineComponent>; export default Component; } 注意,该模块声明需要单独创建文件声明 在 tsconfig.json 中添加 { "compilerOptions": { "typeRoots": [ "src/globalDeclare" ] } }

2024年1月3日 · 1 分钟 · 诚哥博客

开源项目 ChatGPT Web Share 分享多用户共享 ChatGPT 账号

本文介绍了开源项目 ChatGPT Web Share,该项目使用 FastAPI + Vue3 开发,支持多语言、夜间模式适配以及一键导出对话为 Markdown 或 PDF 文件等特点,并提供了完善的管理功能,能够实现共享一个 ChatGPT Plus 账号给多个用户的需求。 介绍 近一年来,随着 GPT 技术的不断发展,越来越多的公司和个人开始使用该技术进行各种应用、产品的开发。然而,GPT 技术往往需要高昂的费用才能购买到官方提供的 API,这对于许多小型团队和个人来说是一个巨大的负担,因此有必要寻找一些替代方案来降低使用 GPT 技术的门槛。 在这个背景下,开源项目 ChatGPT Web Share 应运而生。该项目旨在为多个用户提供一个共享的 ChatGPT Plus 账号,从而使得更多的用户能够充分利用该技术,并且不需要承担过高的费用。 ChatGPT Web Share 是一个由 FastAPI 和 Vue3 搭建的前后端分离应用,可以提供多语言支持、夜间模式适配、一键导出对话为 Markdown 或 PDF 文件等特性。此外,该应用还提供完善的管理功能,包括修改用户对话限制、管理对话、查看成员对话记录等功能。 特点 多语言支持 ChatGPT Web Share 支持多语言,目前支持简体中文和英语,这可以让更多的用户使用该应用。 夜间模式适配 该应用针对夜间使用场景进行了优化,提供了适配夜间模式的界面。 一键导出对话为 Markdown 或 PDF 文件 ChatGPT Web Share 提供了一键导出对话为美观的 Markdown 或 PDF 文件,方便用户保存对话记录或分享给他人。 完善的管理功能 该应用提供了完善的管理功能,可以修改用户对话限制、管理对话、查看成员对话记录等操作,以便管理员更好地管理应用。 使用指南 以下是 ChatGPT Web Share 的使用指南: ...

2023年11月10日 · 1 分钟 · 诚哥博客

Vue3 如何在组合式 api 中获取循环中的组件的 Ref

本文将介绍 Vue 3 中如何在组合式 API 中获取循环中的组件的 ref。我们将通过在父组件中使用 ref 指令和 v-for 指令来声明和动态创建一个引用,然后在 onMounted 生命周期钩子中循环遍历数据来获取每个子组件的引用并存储在对应的引用中。这种方法可以让我们轻松地在循环中获取子组件的引用并进行操作,非常方便实用。 基本用法 在 Vue 3 中,可以使用 ref 和 v-for 指令来在循环中获取组件的引用。 首先,在组件中,使用 ref 指令来声明一个引用: <template> <div ref="myComponent"></div> </template> 然后,在包含循环的父组件中,可以使用 v-for 指令来遍历数据并在循环中获取子组件的引用: <template> <div v-for="item in items" :key="item.id"> <my-component ref="myComponentRefs[item.id]"></my-component> </div> </template> <script> import { ref, onMounted } from "vue"; export default { setup() { const myComponentRefs = ref({}); const items = [{ id: 1 }, { id: 2 }, { id: 3 }]; onMounted(() => { items.forEach(item => { myComponentRefs.value[item.id] = myComponentRefs.value[item.id].$refs.myComponent; }); }); return { items, myComponentRefs, }; }, }; </script> 上面的例子中,使用 ref 指令在父组件中声明了一个名为 myComponentRefs 的引用。然后,在循环中,使用 myComponentRefs[item.id] 来动态创建一个引用来存储子组件的引用。在 onMounted 生命周期钩子中,通过循环遍历 items 数组来获取每个子组件的引用并存储在对应的引用中。 ...

2023年3月3日 · 2 分钟 · 诚哥博客

Vue2、Vue3双向绑定封装组件例子

Vue2、Vue3 双向绑定封装组件例子:本文将讲述如何使用 Vue2 和 Vue3 的双向绑定功能,来创建封装组件,并且提供了一个实际的示例。 Vue2 以下是一个简单的双向绑定组件示例,使用 Vue 的 v-model 指令来实现数据的双向绑定: <template> <div> <label for="input">输入:</label> <input type="text" id="input" :value="value" @input="$emit('input', $event.target.value)" /> </div> </template> <script> export default { props: { value: { type: String, required: true, }, }, }; </script> 在这个示例中,组件接受一个名为 value 的 prop,用于传递输入框的值。在模板中,使用 :value 绑定输入框的值到 value prop 上,实现初始值的渲染。同时,使用 @input 监听输入框的输入事件,并通过 $emit 方法触发名为 input 的自定义事件,传递输入框的新值作为参数。这样,父组件就可以通过 v-model 指令将数据双向绑定到这个组件上。 假设父组件中有一个名为 text 的 data 属性,可以像这样使用这个组件: <template> <div> <my-input v-model="text" /> <p>输入的文本是:{{ text }}</p> </div> </template> <script> import MyInput from "./MyInput.vue"; export default { components: { MyInput, }, data() { return { text: "", }; }, }; </script> Vue3 在这个示例中,通过 v-model 指令将父组件的 text 数据属性双向绑定到 MyInput 组件的 value prop 上,实现了输入框值的同步更新。同时,通过模板插值将 text 数据属性渲染到页面上,实时显示输入框中的文本。 ...

2023年2月27日 · 1 分钟 · 诚哥博客

Vue2、Vue3根据环境关闭devtools开发工具

Vue Devtools 是一款浏览器插件,用于调试 Vue.js 应用。它可以帮助你检查 Vue 组件的状态、跟踪组件之间的数据流、查看 Vuex 状态管理器中的状态、调试应用中的事件等。Vue Devtools 能够大大简化 Vue 开发过程中的调试工作,是 Vue 开发必备的工具。Vue Devtools 可以安装在 Chrome、Firefox 和 Safari 浏览器中,具体安装方法可以参考 Vue Devtools 的官方文档。那么我们如何关闭他们呢? Vue2 关闭方案 在 Vue 2 中,您可以使用 Vue.config.devtools 选项来启用或禁用 Vue Devtools。您可以在创建 Vue 根实例之前设置此选项。 例如,在开发环境中启用 Vue Devtools,在生产环境中禁用它,您可以这样做: // 浏览器插件devtools工具 const isDebug_mode = import.meta.env.MODE == "development"; Vue.config.debug = isDebug_mode; Vue.config.devtools = isDebug_mode; Vue.config.productionTip = isDebug_mode; 注意:如果您使用了构建工具(如 Webpack),则可以使用其内置的环境变量来判断是否在生产环境中。例如,在 Webpack 中,您可以使用 process.env.NODE_ENV 来判断是否在生产环境中。Vite 的话就是 import.meta.env.MODE Vue3 关闭方案 在 Vue3 里面默认是对生产环境关闭的,所以只要我们的生产环境是 production,那么我们就可以不需要改,如果我们要修改生产环境中开启 devtools,那么可以按下面进行操作 // vite.config.ts import { defineConfig } from 'vite'; export default defineConfig({ define: { // 具体环境设置是否开启 __VUE_PROD_DEVTOOLS__: true } ... });

2023年1月6日 · 1 分钟 · 诚哥博客