VUE使用过程中的碰到问题记录

1. 为什么 Vite + Vue + Ts 项目会有三个 tsconfig 文件

在使用 Vite 创建 vue-ts 模板的项目时,会发现除了 tsconfig.json 外,还有一个 tsconfig.node.json 和 tsconfig.app.json 文件。并在 tsconfig.json 使用了 references 字段引用了其他两个文件

tsconfig.json 是 TypeScript 项目的配置文件,放在项目的根目录。主要供tsc编译器使用。

TypeScript 3.0 新增的 项目引用(Project References) 功能,它允许用户为项目的不同部分使用不同的 TypeScript 配置。

  • 关于 tsconfig.node.json, 注意到 "include": ["vite.config.ts"] 这段代码,它说明 tscnofig.node.json 是专门用于 vite.config.ts 这一文件的 TypeScript 配置文件。
  • 关于 tsconfig.app.json, 注意到 "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"] 这段代码,它说明 tscnofig.app.json 是专门用于 src 代码文件的。

如果要控制 src 文件夹下的文件的编译行为的时候,就需要在 tsconfig.app.json 文件中添加对应的配置;反之,如果要控制 vite.config.ts 的编译行为就在 tsconfig.node.json 中添加配置。

2. 无法使用 JSX,除非提供了 "--jsx" 标志。ts(17004)

模块 已解析为 xx.tsx,但尚未设置 "--jsx"。ts(6142)

tsconfig.json文件中compilerOptions配置中的"jsx"改为"preserve,如果项目中有 tscnofig.app.json 文件,则添加在该文件中:

"jsx": "preserve"

3. 模块 只能在使用 "esModuleInterop" 标志时进行默认导入

tsconfig.json文件中compilerOptions配置中处理,如果项目中有 tscnofig.app.json 文件,则添加在该文件中:

"esModuleInterop": true

4. 类型“{}”上不存在属性“xxxx”。ts(2339)

参考网上博客:类型“{}”上不存在属性“xxx”。ts(2339)-解决方案集锦_ts-plugin(2339)-优快云博客

仍然无法解决我的问题,继续寻找。

### Vue3 获取路由表的方法 在 Vue3 中,可以通过 `router` 对象来访问当前应用的路由表。以下是具体的实现方式以及代码示例: #### 通过 `getRoutes()` 方法获取路由表 Vue Router 提供了一个内置方法 `getRoutes()`,可以用来获取所有的静态路由配置。 ```javascript import { useRouter } from 'vue-router'; export default { setup() { const router = useRouter(); // 获取完整的路由表 const routes = router.getRoutes(); console.log(routes); // 输出所有路由信息[^1] return { routes }; } }; ``` 上述代码展示了如何利用 `useRouter` 钩子函数获取整个路由表的信息,并将其打印到控制台中。 #### 如果涉及动态路由加载的情况 当使用动态导入的方式定义路由时,可能需要额外处理才能完全展示路由结构。例如,在某些场景下,动态路由可能是基于后端接口返回的数据生成的。此时可通过遍历路由模块的方式来构建最终的路由表。 ```typescript function loadDynamicRoutes(): void { const dynamicModules: Record<string, any> = import.meta.glob('@/views/**/*.vue'); Object.keys(dynamicModules).forEach((key) => { const routePath = key.replace(/\.\/views/, '').replace(/\.vue$/, ''); router.addRoute({ path: routePath, component: dynamicModules[key], }); }); console.log(router.getRoutes()); // 查看更新后的完整路由表[^4] } ``` 此部分逻辑适用于更复杂的项目架构,比如微前端环境下的独立子应用开发[^3] 或者按需懒加载功能页面的设计模式。 #### 处理潜在错误情况 需要注意的是,在实际操作过程中可能会碰到一些异常状况,像新增加了一条未匹配成功的路径,则会跳转至默认设定好的错误提示页 (通常是404 Not Found)[^5] 。因此建议开发者们仔细校验每一条新加入的记录是否符合预期标准。 ```javascript const notFoundRoute = { path: '/:pathMatch(.*)*', name: 'NotFound', component: () => import('@/pages/ErrorPage.vue'), }; router.addRoute(notFoundRoute); console.warn('Added fallback route for unmatched paths.'); ``` 以上片段演示了怎样添加一个全局性的捕获器用于应对未知请求地址的情形。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值