首页IT科技ts vue computed(vue+ts+vite详细入门及实践)

ts vue computed(vue+ts+vite详细入门及实践)

时间2025-09-19 12:49:43分类IT科技浏览9358
导读:vite是前端代码打包的一个工具,首先可以通过一张图来理解vite的打包构建方式...

vite是前端代码打包的一个工具                ,首先可以通过一张图来理解vite的打包构建方式

一                、前置知识:npm 和yarn包管理器

1                             、npm常用命令及说明

// 查看npm版本 npm -v // 初始化一个项目                             ,会出现一个package.json配置文件         ,可以在后面加上-y             ,快速跳过问答式界面 npm init // 安装依赖包 npm install // 根据项目中的package.json文件自动下载项目所需的全部依赖 npm install 包名 --save-dev (npm install 包名 -D) // 安装的包只用于开发环境                            ,不用于生产环境              ,会出现在package.json文件中的devDependencies属性中                    。 npm install 包名 --save (npm install 包名 -S) // 安装的包需要发布到生产环境的        ,会出现在package.json文件中的dependencies属性中 // 更新 npm update 包名 // 更新指定包 // 移除依赖包 npm uninstall 包名 // 卸载指定包 // 查看 npm list // 查看当前目录下已安装的node包 npm list -g // 查看全局已经安装过的node包 npm info 指定包名 // 查看远程npm上指定包的所有版本信息 npm config list // 查看配置信息 npm ls 包名 // 查看本地安装的指定包及版本信息                           ,没有显示empty npm ls 包名 -g // 查看全局安装的指定包及版本信息                   ,没有显示empty npm root // 查看当前包的安装路径 npm root -g // 查看全局的包的安装路径 // 其他 npm config set registry https://registry.npm.taobao.org // 修改包下载源    ,此处修改为了淘宝镜像 npm --help // 查看npm帮助命令 npm 指定命令 --help // 查看指定命令的帮助

2         、yarn常用命令及说明

// 初始化一个新项目 yarn init // 运行脚本 yarn run // 用来执行在 package.json 中 scripts 属性下定义的脚本 // 发布包 yarn publish // 添加依赖包 yarn add [package] // 会自动安装最新版本                          ,会覆盖指定版本号 yarn add [package] [package] [package] // 一次性添加多个包 yarn add [package]@[version] // 添加指定版本的包 yarn add [package]@[tag] // 安装某个tag(比如beta,next或者latest) // 将依赖项添加到不同依赖项类别                        ,不添加则默认安装到package.json中的dependencies里 yarn add [package] --devyarn add [package] -D // 加到 devDependencies yarn add [package] --peeryarn add [package] -P // 加到 peerDependencies yarn add [package] --optionalyarn add [package] -O // 加到 optionalDependencies // 升级依赖包 yarn upgrade [package] // 升级到最新版本 yarn upgrade [package]@[version] // 升级到指定版本 yarn upgrade [package]@[tag] // 升级到指定tag // 移除依赖包 yarn remove [package] // 移除包 // 安装package.json里的包依赖,并将包及它的所有依赖项保存进yarn.lock yarnyarn install // 安装所有依赖 yarn install --flat // 安装一个包的单一版本 yarn install --force // 强制重新下载所有包 yarn install --production // 只安装生产环境依赖 // 显示某个包的信息 yarn info [package] // 可以用来查看某个模块的最新版本信息 // 缓存相关 yarn cache yarn cache list // 列出已缓存的每个包 yarn cache dir // 返回全局缓存位置 yarn cache clean // 清除缓存

二            、创建一个vite项目

确保node版本需要在12.0以上

1                            、安装vite官网最新版本

npm init vite@latest // 安装最新版本的vite

本文展示基于vite最新版本及vue+ts搭建项目                     ,并按照指示来                             ,运行项目

cd "项目名称" // 进入项目目录 npm instasll // 安装依赖包 npm run dev // 运行项目

2              、安装 vite1.x 版本

安装vite项目命令: yarn create vite-app "项目名称" 或 npm init vite-app + "项目名称"

如下:(不推荐)

至此    ,就成功创建并运行了一个vite项目                         。

三        、目录结构分析

vite+vue+ts项目目录初始结构如下:

1                           、.vscode

该目录下的文件extensions.json中记录了开发工具vscode相关的配置

2                   、node_modules

通过执行安装命令npm install或yarn自动生成的依赖包目录         。

3    、public

vite会把所有放在public文件夹下的文件都原封不动的复制到打包后的文件夹的根目录中               。

在使用public中的文件时需要注意点:1)应该一直使用根目录/来引用public文件夹的文件                ,如使用/favicon.ico来引用public/favicon.ico文件;2)public中的文件无法使用javascript来导入资源                          。

4                          、src

项目相关的资源代码存放位置             。

1)assets

用来存放项目中所有的静态资源文件(css                        、fonts等)          。

2)components

用来存放项目中所有的自定义组件                           。

3)App.vue

是项目的根组件                 。

4)main.ts

是整个项目的入口     。

5)style.css

整个项目全局的基本样式文件表                            。

6)vite-env.d.ts

在使用ts开发的项目中                             ,.d.ts 结尾的文件主要用于 TypeScript 识别.vue 文件         ,.vue 文件不是一个常规的文件类型            ,ts 是不能理解 vue 文件是干嘛的                            ,这里就告诉 ts              ,vue 文件是这种类型的                     。没有这个文件中的declare声明文件        ,会发现 import 的所有 vue 类型的文件都会报错。并且js本身是没有类型的                           ,ts的语言服务需要.d.ts文件来识别类型                   ,这样才能做到相应的语法检查和智能提示                        。

5、.gitignore

在把代码提交到git仓库时    ,忽略的文件                         。标识了哪些文件不需要提交到git仓库                          ,里面的内容可以是具体的文件夹                     、或文件后缀名                        ,如下所示     。

6                             、index.html

SPA 单页面应用程序中唯一的 html 页面入口文件,vite在开发过程中                     ,以index.html为直接入口                             ,并且会自动重新设置URL基础                    。

在使用vue+ts+webpack打包的项目    ,其以main.ts为入口                ,而index.html则是放在public文件夹下                             ,作为模板使用         ,在构建资源中            ,资源链接都会被自动注入index.html文件                            ,可以使用<%=BASE_URL%>来插入内容                         。

7    、package-lock.json

包含了已安装的每个依赖项的确切版本的信息              ,以及代码的校验和以确保代码完全相同        ,此文件会锁定你安装的每个依赖项的版本                           ,这可以确保你不会安装不良依赖                   ,并且会避免由于开发人员意外更改或更新版本    ,而导致糟糕的情况                          ,一般不会轻易修改这个文件         。简单理解就是:锁定依赖包的版本                        ,保证其他人用npm安装项目的依赖包时,能得到一个相同的依赖环境               。如果后续开发中安装包时执行的命令是:npm install xxx@x.x.x                     ,那么package-lock.json这个文件就会同步被修改                          。

ps:如果之前在安装依赖包执行的命令不是npm而是yarn那么这个文件则不存在                             ,而是生成一个yarn.lock文件    ,其作用也是锁定安装时的包的版本号.

8                、package.json

项目描述文件, 里面记录了当前项目相关信息.                ,具体如下:

{ "name": "vite-project", // 项目名称 /* 主要是防止执行了npm publish发布了不想发布的包                             ,或发布到不想发布的npm私服, 只有移除掉该属性才能执行发布命令npm publish, 如果不想每次新建项目都手动设置         ,可以进行全局配置:npm config set init-private true */ "private": true, "version": "0.0.0", // 项目版本 /* 用于定义package.json文件和该文件所在目录根目录中.js文件和无拓展名文件的处理方式             。 值为moduel则当作es模块处理            ,值为commonjs则被当作commonJs模块处理                            ,不指定值则默认按照commonJs规范处理          。 但无论type字段为何值              ,.mjs的文件都按照es模块来处理        ,.cjs的文件都按照commonJs模块来处理 */ "type": "module", "scripts": { // scripts中配置以键值对(key:value)的形式来取“别名                    ” "dev": "vite", // 项目运行命令                           ,文中第一步运行npm run dev就是从这得到的                   ,如果名称dev换成了serve    ,那么在运行项目时的命令就是:npm run serve "build": "vue-tsc --noEmit && vite build", // 项目打包命令                          ,打包项目时执行:npm run build "preview": "vite preview" }, // 正式环境依赖所需要的第三方模块(包)                        ,安装命令一般是:npm install "依赖包名" "dependencies": { "vue": "^3.2.37" /* 包名: 版本号 版本号前面的符号一般有两种:~ ,^                     ,区别: ^的意思是最近的一个大版本                             ,比如 ^1.0.2 将会匹配所有 1.x.x, 但不包括2.x.x ~的意思是匹配最近的小版本    ,比如 ~1.0.2 将会匹配所有的1.0.x版本                ,但不匹配1.1.0 如果没有上面这2种符号                             ,则表示安装精确的版本 */ }, /* 开发时依赖所需要的第三方模块(包)         ,安装命令一般是:npm install -D "依赖包名"            ,或 npm install --save-dev "依赖包名"                             , 如:新增sass包可执行命令npm install -D sass 或 npm install --save-dev sass 特别注意要加-dev表示是开发时用的依赖包 */ "devDependencies": { "@vitejs/plugin-vue": "^3.0.0", // @vitejs/plugin-vue 插件会将 .vue 文件编译并拆分成三个部分              ,包括模版        ,脚本和样式 "typescript": "^4.6.4", "vite": "^3.0.0", "vue-tsc": "^0.38.4" } }

9                             、README.md

一般用于记录项目相关的说明使用                           。

10         、tsconfig.json

TypeScript 编译器的配置文件                           ,TypeScript 编译器可以根据它的规则来对代码进行编译                 。

{ "compilerOptions": { "target": "ESNext", // 目标语言的版本 "useDefineForClassFields": true, // 标志用作迁移到即将推出的类字段标准版本的一部分                   ,默认:false     。 "module": "ESNext", // 生成代码的模板标准 "moduleResolution": "Node", // // 模块解析策略    ,ts默认用node的解析策略                          ,即相对的方式导入 "strict": true, // 是否启动所有严格检查的总开关                        ,默认:false,启动后将开启所有的严格检查选项                            。 "jsx": "preserve", // 指定 jsx 格式 "sourceMap": true, // 生成目标文件的sourceMap文件 "resolveJsonModule": true, // 是否解析 JSON 模块                     ,默认:false                     。 "isolatedModules": true, // 是否将每个文件转换为单独的模块                             ,默认:false。 "esModuleInterop": true, // 是否通过为所有导入模块创建命名空间对象    ,允许CommonJS和ES模块之间的互操作性                ,开启改选项时                             ,也自动开启allowSyntheticDefaultImports选项         ,默认:false                        。 "lib": ["ESNext", "DOM"], // 指定项目运行时使用的库                         。 "skipLibCheck": true // 是否跳过声明文件的类型检查            ,这可以在编译期间以牺牲类型系统准确性为代价来节省时间                            ,默认:false     。 }, "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"], // 解析的文件 "references": [{ "path": "./tsconfig.node.json" }] // 项目引用              ,是TS3.0 中的一项新功能        ,它允许将 TS程序组织成更小的部分                    。 }

更多配置及说明                           ,可参看:tsconfig.json详细配置 和 ts文档

11            、tsconfig.node.json

vite里的插件类型配置文件                   ,tsconfig.json文件中references字段使用                         。

12                            、vite.config.ts

vite构建相关配置    ,默认内容如下:

实际开发中                          ,常用配置及说明可参考如下: import { defineConfig } from vite import vue from @vitejs/plugin-vue import path from path // 需要安装的插件@types/node import viteCompression from "vite-plugin-compression"; // gzip必备插件                        ,需要安装:npm i vite-plugin-compression -D export default defineConfig({ base: "./", // 生产环境路径,类似publicPath                     ,./避免打包访问后空白页面                             ,要加上    ,不然线上也访问不了 // 代理相关配置 server: { host: "localhost", // 服务器主机名 port: 3001, // 端口号 strictPort: false, // 若3000端口被占用,是否直接结束项目 https: false, // 是否开启 https open: true, // 是否自动在浏览器打开 proxy: { "/api": { target: "", // 后台接口 changeOrigin: true, secure: false, // 如果是https接口                ,需要配置这个参数 // ws: true, // websocket是否支持 rewrite: (path) => path.replace(/^\/api/, ""), }, }, }, // 打包相关 build: { target: "es2020", //指定es版本,浏览器的兼容性 outDir: "dist", assetsDir: "assets", // 指定静态资源存放路径 // cssCodeSplit: true, // css代码拆分,禁用则所有样式保存在一个css里面 sourcemap: false, // 是否构建source map 文件 // manifest: true, // 是否在outDir中生成 manifest.json rollupOptions: { // input: /path/to/main.ts // 覆盖默认的 .html 入口 } }, resolve: { // 配置项目路径别名                             ,在开发时不需要写完整的路径名称         ,需要安装 @types/node            ,执行命令npm i -D @types/node --save-dev即可 alias: { "@": path.resolve(__dirname, "src"), "@assets": path.resolve(__dirname, "src/assets"), "@components": path.resolve(__dirname, "src/components"), }, }, // 引入第三方的配置 optimizeDeps: { include: [], }, // 插件相关配置 plugins: [ vue(), viteCompression({ verbose: true, disable: false, threshold: 10240, algorithm: "gzip", ext: ".gz", }) ] })

因为项目用到了 ts                            ,配置了路径别名后              ,还需要在 tsconfig.json 的配置文件中增加以下配置:

更多详情配置可查看vite官网         。

13              、其他

1).gitignore

实际一般在开发中会涉及把代码提交到git仓库中        ,.gitignore文件记录的就是在把代码提交到git仓库时                           ,忽略的文件               。标识了哪些文件不需要提交到git仓库                   ,里面的内容可以是具体的文件夹        、或文件后缀名    ,如下所示                          。

2)dist

通过执行打包命令npm run build 后生成的目录             。

到这就把vite项目基本的目录分析完了                          ,在后续开发过程中可以自行操作添加目录等操作          。

四                           、静态资源处理

1                   、将资源引入为url

import imgUrl from ./img.png // 通过import导入图片时                        ,会自动生成一个url,可直接使用

这种方式类似于webpack的file-loader                     ,区别在于vite的import可以使用公共绝对路径                           。

2    、将资源引入为字符串

import testString from ./testString?raw                              ,只需要在引入文件时加上?raw后缀

3                          、将资源引入为worker

import Worker from ./testWorker.js?worker // 只需要在文件后面加上 ?work const worker = new Worker() // 将worker作为base64字符串引入    ,则需要加上inline import WorkerBase64 from ./testWorkerBase64.js?worker&inline

五                        、环境变量与模式

模式是指当期项目运行的环境                ,使用npm或yarn执行命令时                             ,每个命令都可以对应一种模式         ,默认npm run dev执行的环境是development模式            ,npm run buid执行的环境是production模式                            ,其他还可以自定义设置和执行命令                 。

Vite内部会暴露出一个 import.meta.env 出来              ,就可以使用 import.meta.env.xxx 来获取配置的环境变量     。

在所有情况下都可以使用的内建变量:

import.meta.env.MODE: {string} 应用运行的模式                            。

import.meta.env.BASE_URL: {string} 部署应用时的基本 URL        ,由base 配置项决定                     。

import.meta.env.PROD: {boolean} 应用是否运行在生产环境。

import.meta.env.DEV: {boolean} 应用是否运行在开发环境 (永远与 import.meta.env.PROD相反)                        。

如果需要Vite配置环境变量和 Vue2 的配置差不多                           ,依靠 .env 文件夹来实现                   ,在src同级下创建 .env.production 和 .env.development    ,分别表示生产环境和开发环境                         。

除了development和production这两个模式                          ,还可以自定义其他模式                        ,通过传递--mode选项来覆盖原有的模式,例如要定义一个staging模式                     ,需要创建对应的.env.staging文件                             ,并执行vite build --mode staging

另一种方式修改执行的环境可以在package.json里面设置    ,然后执行对应的命令                ,之后在项目通过import.meta.env获取到环境变量值就是--mode后对应的值                             ,如下所示执行:npm run serve

最后

参考:vite官网

文中如有理解不正确的地方         ,还请不吝指教            ,一起学习                            ,一起成长~

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
python merge inner(python merge()的连接) seo排名优化工具推荐品牌(seo排名优化工具推荐哪个)