vite + vue3 + jsx + ts 配置一个小项目

原文链接: vite + vue3 + jsx + ts 配置一个小项目

上一篇: js 继承中 同名方法的调用问题

下一篇: threejs 入门 绕定点旋转和自旋

配置参考, 我用的不多, 只需要jsx相关即可

https://github.com/lduoduo/vue3-project-dodo

https://segmentfault.com/a/1190000023267394

https://github.com/vitejs/vite/tree/main/packages/plugin-vue-jsx

https://zhuanlan.zhihu.com/p/153387704

主要目的是在vue3中使用jsx语法

vite配置jsx后好像不能和vue模板共存, 但是cli是可以两个一起使用的, 也可能是我配置有些问题...不想搞了, 配起来确实麻烦

vue/cli

vue-cli 是可以直接用的

up-4c221b057e48e76e1e730367239c0905305.png

up-b581f8fd9c27fedeeb7544c6b81d4d75d9c.png

vite

安装

npm init @vitejs/app vite-vue3-ts-jsx --template vue-ts
yarn add @vue/babel-plugin-jsx
yarn add @vitejs/plugin-vue-jsx

babel.config.js

module.exports = {
  presets: ["@vue/cli-plugin-babel/preset"]
};

vite.config.ts

// vite.config.js
import vueJsx from "@vitejs/plugin-vue-jsx";
console.log("vueJsx", vueJsx);
export default {
  plugins: [
    vueJsx({
      // options are passed on to @vue/babel-plugin-jsx
    }),
  ],
};

=========================================================================================

vite 目前没配成功, 参考上面todo可以跑起来, 但是感觉不靠谱... 还是用cli吧, vite的生态短时间内还是短板啊

创建ts项目

npm init @vitejs/app vite-vue3-ts-jsx --template vue-ts

添加配置文件babel.config.js, 直接复制上面todo项目中的相关配置文件, 注意vite是1.0版本的

module.exports = {
  presets: ["@vue/cli-plugin-babel/preset"],
  plugins: [
    "@vue/babel-plugin-jsx",
    "@babel/plugin-proposal-optional-chaining",
  ],
};

=========================================================================================

Counter.jsx

import { defineComponent, reactive } from "vue";
export default defineComponent({
  props: {
    initValue: Number,
  },
  setup(prop) {
    console.log("prop", prop);
    const state = reactive({
      count: prop.initValue,
    });
    const inc = () => state.count++;
    const dec = () => state.count--;
    return () => (
      <div>
        <p>{state.count}</p>
        <button onClick={inc}>inc</button>
        <button onClick={dec}>dec</button>
      </div>
    );
  },
});

使用和以前一样

<template>
  <Counter :initValue="10" />
</template>
<script>
import Counter from "./components/Counter";
export default {
  name: "App",
  components: {
    Counter,
  },
};
</script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值