vue3+vite+tsx 配置及使用

15 篇文章 1 订阅

以下在 vue3+vite+ts 基础上配置

配置

第一步 先安装 jsx 依赖 yarn add @vitejs/plugin-vue-jsx -d or npm i @vitejs/plugin-vue-jsx -d
安装完成后如果报vite.createFilter is not a function查看vite版本和安装的依赖版本是否一致。

第二步 在vite.config.ts文件中引入并使用jsx依赖。以下配置仅为了展示jsx配置展示,详细配置可查看 vite详细配置vite官网tsconfig.json include 配置添加.tsx。

  • jsx直接引入css文件少了sfc的scope会变成全局全局引入,vite使用了postcss-modules 可以开启模块化样式来避免样式冲突。样式命名需要加.modele,如果不想添加可参考 大佬博客
  • jsx的dom中变量需要以单层大括号包裹。
  • 多层dom可以使用空标签包裹<></>
import vue from '@vitejs/plugin-vue';
import vueJsx from '@vitejs/plugin-vue-jsx';
import type { UserConfig, ConfigEnv  } from "vite";

export default ({command, mode}: ConfigEnv): UserConfig => {
	return {
	    css: {
	      modules: {
	        scopeBehaviour: 'local', // 'global' | 'local'
	      }
	    },
		plugins: [
	      vue(),
	      vueJsx()
	    ]
	}
}

tsconfig.json

{
	"include": [
    "src/**/*.tsx"
  ]
}

css配置完成后引入文件编辑器会爆红,可以在d.ts里面添加declare module '*.scss';使用方式:
.tsx文件引入

import styles from 'test.module.scss'

export default defineComponent({
  name: 'test',
  setup () {
    return () => (
      <div class={styles['test-wrap']}></div>
    )
  }
})

test.module.scss

.test-wrap{
  width: 80px;
  height: 20px;
  border: 1px solid #f0f0f0;
}

效果及dome
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

使用

jsx一些事件的写法及指令需要改写。

@click

@click 需要改成 onClick,当使用点击事件的时候需要写成onClick={(event) => toggleCate(event, data)}样式,当需要获取event事件时可以传值event不使用可为空。

v-if

if else语句在使用时需要以大括号包裹;

export default defineComponent({
  name: 'test',
  setup () {
    const status = ref(true)
    return () => (
      <>
        { 
          status.value ? <div>1</div> : <div>2</div>
        }
      </>
    )
  }
})

在这里插入图片描述

v-for
export default defineComponent({
  name: 'test',
  setup () {
    const list = [1, 2, 3, 4]
    return () => (
      <>
        <div class={styles['test-wrap']}></div>

        {
          list.map(item => (
            <div>{item}</div>
          ))
        }
      </>
    )
  }
})

在这里插入图片描述

v-slot

在jsx里面的插槽需要使用v-slots插入。如果有传值可以在箭头函数中接收。slot传值写入当发现未渲染时记得查看这个值是不是可输出的,如果是对象会直接显示为空。

const footerSlot = {
  footer: () => (<div>
    <el-button>取消</el-button>
    <el-button type="primary">确定</el-button>
  </div>)
}
return () => (
	<el-dialog v-model={visible.value} title="测试" v-slots={footerSlot} before-close={closeDialog}></el-dialog>
)
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于Vue 3 + TypeScript + Vite项目的打包配置,你可以按照以下步骤进行设置: 1. 安装依赖:在项目根目录下运行以下命令安装所需的依赖项: ``` npm install --save-dev vite @vitejs/plugin-vue@next typescript vue-tsc ``` 2. 创建`tsconfig.json`文件:在项目根目录下创建`tsconfig.json`文件,并添加以下内容: ```json { "compilerOptions": { "target": "esnext", "module": "esnext", "moduleResolution": "node", "strict": true, "jsx": "preserve", "importHelpers": true, "allowSyntheticDefaultImports": true, "esModuleInterop": true, "experimentalDecorators": true, "skipLibCheck": true, "sourceMap": true, "baseUrl": ".", "paths": { "@/*": ["src/*"] } }, "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"], "exclude": ["node_modules"] } ``` 3. 配置`vite.config.ts`文件:在项目根目录下创建`vite.config.ts`文件,并添加以下内容: ```typescript import { defineConfig } from 'vite'; import vue from '@vitejs/plugin-vue'; export default defineConfig({ plugins: [vue()], }); ``` 4. 修改`package.json`文件:将`scripts`字段中的`"dev"`和`"build"`命令修改为以下内容: ```json { "scripts": { "dev": "vite", "build": "vue-tsc --noEmit && vite build" } } ``` 这里我们使用`vue-tsc --noEmit`命令来进行类型检查,然后再执行`vite build`命令进行打包。 现在,你可以运行`npm run dev`启动开发服务器,或者运行`npm run build`进行项目打包。希望这些步骤能够帮助到你!如果你还有其他问题,请继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值