搭建 Vite + Vue 3 + Typescript + tsx + less 项目

news/2024/7/10 0:09:54 标签: vue

搭建 Vite + Vue 3 + Typescript + tsx + less 项目

项目地址: https://github.com/DuXiaoHeng/vue3-tsx

1. 使用vite脚手架 初始化一个 Vue 3 + Typescript 项目

文档: 搭建第一个vue项目

npm init @vitejs/app [项目名] --template vue-ts

2. 配置tsx支持

文档: vue3 jsx 支持

  • 安装 Vue 3 JSX 支持:@vitejs/plugin-vue-jsx
npm i -D @vitejs/plugin-vue-jsx
  • 使用 tsx支持插件
//vite.config.ts
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'

export default defineConfig({
  plugins: [vue(), vueJsx()]
})

3. 配置less

文档: css 预处理器
Vite 提供了对 .scss, .sass, .less, .styl 和 .stylus 文件的内置支持。没有必要为他们安装特定的 vite 插件,只需安装预处理器依赖本身。

npm i -D less

4. CSS Modules

文档:CSS Modules

vue开发中,组件很多,为防止各个组件间样式污染通常需要给组件设置局部生效的样式。

  • vue单文件组件:给当前组件文件中的style标签加上 scoped。
<style scoped>
</style>
  • tsx 组件:在样式文件后缀名前加上.module(index.module.less)。在tsx中导入该样式使用。
//index.module.less
.helloWorld {
    h1 {
        text-shadow: 2px 4px #ccc;
    }
    button {
        border: none;
        outline: none;
        padding: 5px 20px;
        background: #8bc34a;
        border-radius: 5px;
        border: 2px solid #a5a4a4;
        cursor: pointer;
    }
}
//index.tsx
import { ref, defineComponent } from 'vue'
import classes from "./index.module.less"
export default defineComponent({
  name: 'HelloWorld',
  setup: (props) => {
    const count = ref(0)
    return () => (
      <div class={classes.helloWorld}>
        <h1>{props.msg}</h1>
        <button onClick={() => { count.value++ }}>
          count is: {count.value}
        </button>
      </div>
    )
  }
})

<!--运行后的结果: 生成了一个唯一的类名-->
<div class="_helloWorld_kddoo_1">
  <h1>Hello Vue 3 + TypeScript + Vite</h1>
  <button>count is: 0</button>
</div>

http://www.niftyadmin.cn/n/565108.html

相关文章

使用qrcodejs和jimpjs两个库实现给图片加二维码水印

引入需要的库 QRCode.js 是一个用于生成二维码的 JavaScript 库。主要是通过获取 DOM 的标签,再通过 HTML5 Canvas 绘制而成,不依赖任何库。jimp.js 一个完全用 JavaScript 编写的 Node 图像处理库&#xff0c;零原生依赖。也可用于浏览器端 <script type"text/javas…

springboot集成openoffice实现word转pdf在线预览功能踩坑

方法一&#xff1a;通过本地安装openoffice实现 步骤如下&#xff1a; 1.引入对应jar包 <!--jodconverter 核心包 --> <dependency> <groupId>org.jodconverter</groupId> <artifactId>jodconverter-core</artifactId><version>…

springboot+mybatis实现多数据源动态切换(AOP方式)

1、配置多数据源 # 数据源配置 spring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedriverClassName: com.mysql.cj.jdbc.Driverdruid:# 主库数据源main:url: jdbc:mysql://ip:port/firstusername: rootpassword: 123456# 从库数据源slave:# 从数据源开关/默认关…

linux环境实现开机自动执行某个服务启动脚本

1、背景 有时候突然断电&#xff0c;服务器重启之后还需要手动一个个启动服务比较麻烦&#xff0c;所以考虑在开机的时候能不能设置自动执行脚本启动 2、步骤 1&#xff09;编写脚本 以下面这三行开头 #!/bin/sh #chkconfig: 2345 80 90 #description:auto_run 2&#x…

ElasticSearch 基础

1、ElasticSearch 是什么&#xff1f; Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。 Elasticsearch 的实现原理主要分为以下几个步骤&#xff0c;首先用户将数据提交到Elasticsearch 数据库中&#xff0c;再通过分词控制器去将对应的语句分词&#xff…

springboot中使用poi-tl导出word(包含表格合并单元格)实例

一、背景 在业务开发过程中&#xff0c;遇到有需要生成包含表格的word文档&#xff0c;且一部分表格需要动态生成&#xff0c;且需要根据数据来合并单元格&#xff0c;最后呈现的方式如下图&#xff1a; 一开始想到的解决方案是通过freemarker来生成&#xff0c;但是需要转xml生…

docker部署服务流程

一、安装docker 1、在线安装 移除以前的安装包 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine 配置yum源 sudo yum install -y yum-utils sudo yum-config-man…

实现补零操作的方法

实现补零操作的方法 1。用三目表达式的方法。2.第二&#xff0c;用字符串里面的padstart方法&#xff0c;他的第1个参数是要达到的长度。第2个参数是不够达到的长度&#xff0c;以什么字符补充。相对应的字符串里面还有一个padend方法。是从尾部添加补充参数。