Vue3拓展:整合JSX与CSS-in-JS

发表时间: 2024-03-30 10:53

在项目中,我们有时需要封装一些组件,为了高内聚,我们有时可以把文件都写法一个js文件中。vite官方给我们提供了jsx写法插件 @vitejs/plugin-vue-jsx,并且可以随便找个css in js 库,这里我用@styils/vue

使用插件步骤:

npm i @vitejs/plugin-vue-jsx npm i @styils/vue
//vite.config.js// 引入jsx官方插件import vueJsx from '@vitejs/plugin-vue-jsx'export default defineConfig({  plugins: [    //更多配置看github  	vueJsx({      include:/\.[jt]s$/     })  ]})

示例:

// App.vue<template>  <div>    <el-button @click="Alerst" type="primary">弹框</el-button>  </div></template><script setup>import { alert } from './utils/Alert'const messageProp = '弹出框数据'const Alerst = () => {  alert(messageProp)}</script>
// src/utils/Alert/index.jsimport { render } from 'vue'import { styled } from '@styils/vue';export const alert = (propsData) => {  //创建一个有样式div  const Mydiv = styled('div', {    position: "fixed",    top: '50%',    left: '50%',    transform: 'translate(-50%,-50%)',  })    const container = document.createElement('div')    document.body.appendChild(container)    const VNode = (      <Mydiv>   //替换原来没有样式的<div>        <h1>登录成功</h1>          <p>{propsData}</p>          <button onClick={() => {              container.remove();            }}>关闭</button>      </Mydiv>     )  render(VNode, container)}

效果