Vue3入门之Typescript
使用vite可以创建vue-ts模板
1.项目创建
使用pnpm可以方便的创建vue-ts的模板,选择vue,选择vue-ts即可。
1 | ## 根据要求选择vue-ts模板 |
2.修改typescript版本
在使用 vite 创建vue-ts的模板之后,什么代码都没有改
1 | ## 安装 |
安装运行之后,还是可以允许的,就是报错,打开vscode,出现了vscode报错的情况,一片一片的红,比如:Cannot find name ‘defineProps’
[解决]
最新版本可能没有这个问题了,遇到就按下面这么做好了,而且输入type,也没有了Volar这个选项了,不知道为什么,要是遇到了再说好了。
(1) 在VS code 中,按F1键,输入框中输入 “typescript: select Typescript version”
(2) 选择 workspace 下的 typescript 即可
为什么会出现这样的情况,暂时不清楚,反正就是这么解决了,要是报错,我就浑身难受,虽然不影响开发,但是就是想解决。
1.vue3.0.0 初体验
2.Vite 官方中文文档
3.使用vite来新建vue3项目,配置vuex、vue-router
4.vue vite项目报ts错误
5.vue3.0+vite (二) vite.config.js基本配置
6.配置 Vite
3.配置src别名
以前的vue的时候,经常用 @ 符号代替 src 目录,这样可以少些一些代码,也不用写相对路径了,这样更加的方便。主要有两步
(1) 增加 “allowSyntheticDefaultImports”:true
引入path路径的时候,需要在tsconfig.node.json中compilerOptions节点下添加:”allowSyntheticDefaultImports”:true。
有些参考文章是在tsconfig.json中的compilerOptions,我在这个文件中修改没有用。修改alias的别名(可以把tsconfig.node.json删除,把tsconfig.json中的 “references”: [{ “path”: “./tsconfig.node.json” }] 删除 )。
(2) 安装依赖
1 | ## 安装依赖 |
(3) 配置 vite.config.js 文件
编写 vite.config.js 文件,增加如下内容:
1 | import { defineConfig } from 'vite'; |
这样做之后,虽然可以编译通过,但是vscode还是提示找不到模块。
1.vue3.0+vite+ts项目搭建–vite.config.ts配置(三)
2.找不到模块“path”或其相应的类型声明 npm install @types/node –save-dev
3.此模块是使用 “export =“ 声明的,只能在使用 “allowSyntheticDefaultImports“ 标志时进行默认导入。 tsconfig.json中compilerOptions对象下添加设置allowSyntheticDefaultImports为true就可以了
4.vs code 中路径别名(@)提示和转定义等问题。
5.vscode vue+ts 提示找不到模块但是程序正常运行 我在这里写了答案
6.tsconfig.json 是什么
7.模块 “path“只能在使用 “allowSyntheticDefaultImports“ 标志时进行默认导入,使用 “export =“ 声明的,只能使用 “allowSyntheticDefau“
(4) 修改 tsconfig.node.json 文件
我写了一个api模块,是一个js文件,但是在引入的时候,总是会报错找不到模块:Cannot find module ‘@/api/gas.js’ or its corresponding type declarations.。
【解决】
在tsconfig.json中添加如下的内容,增加@别名。注意,就是不能写成 “@”,需要带着后面的 “@/*”
1 | "compilerOptions": { |
1.ts文件中引入js模块 使用require引入js模块
2.为TypeScript引用的JS写声明文件 这里的内容还是挺多的,
3.ts中引入js文件以及使用全局js方法报错问题 无法找到模块“@/xxx/xxx”的声明文件。“xxx.js”隐式拥有 “any” 类型。const { encryptionJump,decryptJump } = require(“@/utils/rsa”)
4.深入理解 TypeScript
5.Show error “Cannot find module” although I have typings folder 这个讨论没看明白
6.vite+ts vscode无法识别别名路径 这个可以借鉴一下
5.开发环境和生产环境
vite在 import.meta.env 对象上暴露环境变量,替代了 process.env。.env.production用于生产环境,.env.development 用于生产环境。在.env文件中的以 VITE_开头的变量,可以在 import.meta.env 上使用。
1.Vue3+Vite+TypeScript多环境项目搭建 在根目录下创建 .env.dev文件和 .env.prod文件,分别代表开发、测试环境,文件内容如下,注意这里边的变量需要已VITE_开头。在package.json修改scripts里的dev命令为vite –force –mode dev,新建prod命令”prod”: “vite –mode prod”
2.环境变量和模式
3.vite+vue3+ts+vant搭建项目 1.babel.config.js文件需要对vant框架需做额外插件处理;2.ts配置时需要去除掉node_modules, 避免对依赖项进行校验,额外增加项目编译时间;3.项目引用路径的简写除了在webpack文件中需要配置,tsconfig.json也需要额外配置;4.在vite.config.js的plugins中处理vant框架的引入,在配置文件中还有对less的处理;5.vite-ssr服务配置
6.编写ts模块
router
1 | import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router'; |
vuex
1 | import { createStore } from 'vuex' |
1.浅谈TypeScript的模块导入导出
2.vue3 + ts 初体验 包含了路由配置、组建创建,还有组件编写。在 vue-router4.0 中,提供了两种创建 history 的方式,分别是 createWebHistory 和 createWebHashHistory。由于采用了 typescript 编码,在定义 routes 常量时,需要声明类型为 Array
3.VSCode 中,TS 提示 ”无法找到 *.vue 声明文件“ 的解决方案
引入组件
在 script setup 中,引入的组件可以直接使用,无需再通过components进行注册,并且无法指定当前组件的名字,它会自动以文件名为主,也就是不用再写name属性了。而且需要将Vetur插件,换成Volar插件,这样就不会报找不到组件的问题了。
1 | <template> |
1.Vue3 script setup 语法糖详解 组件自动注册,组件核心 API 的使用,父子组件通信,定义响应变量、函数、监听、计算属性computed 等等内容。
2.vscode使用vue3 setup语法引入组件时波浪线问题 用Volar,再把之前的Vetur 禁用掉,波浪线解除
7.配置二级目录
路由模式使用了 history 模式,使用 nginx 进行转发,配置为二级目录,页面现实空白。比如我这里的二级目录为 test,主要解决方法包括下面几个步骤
(1) 配置vite.config.js中的 base 配置为 ”/test“,可以用 mode===’production’?’/test’:’’ 配置
1 | export default defineConfig(({ mode, command }) => { |
(2) 修改route中的history: createWebHistory(“/test”),可以用变量:import.meta.env.VITE_BASE_URL 替代,这里需要在.env.producation文件中定义 VITE_BASE_URL
1 | let baseUrl=process.env.NODE_ENV == 'development' ?"/":"/test"; |
(3) 配置nginx,指向二级目录
1 | ## 用汽申报 |
1.Vite + Vue3 + Ts 解决打包生成的index.html页面显示空白、报资源跨域、找不到资源、404-Page Not Found等错误
2.VUE3 造轮子之 打包构建配置二级目录
3.Vue 3使用二级目录部署(Nginx) Vue项目中route关键配置如下:
8.配置局域网访问
在vite.config.js文件中添加server配置。
1 | server: { |
1.vite启动的服务默认不能通过ip地址访问
9.引入js文件
10.在html中使用环境变量
我这里有一个使用高德地图密钥的配置,这里我想着在这个script的标签里面,使用环境变量,如果直接输出,就会出现 :Uncaught SyntaxError: import.meta may only appear in a module 错误。
1 | <body> |
经过一番的折腾,我放弃了,直接写到了 模块的代码里面。
1.如何在 Vite 2.0 项目中导入环境变量
2.vite 使用 env 环境变量 这里安装了一个 vite-plugin-html 插件,但是我这里没有显示:模块“”vite-plugin-html””没有导出的成员“injectHtml”
11.script setup lang=”ts”
直接引入其他的组件,然后在模板中使用就可以了。
1 | <template> |
引入的组件会自动注册的。需要注意的是,使用动态组件的时候,应该使用动态的 :is 来绑定
1 | <template> |
1.Vue3中