调试了一下午,终于把tailwindcss搞进Blazor了

在Vue和Uniapp项目中使用tailwindcss后,实在是太香了,非常符合我这从XAML走过来的老程序员的手感,所以老想着在Blazor项目中引入。看了几个老外大佬的视频,调试了一下午,终于是捣鼓成功了。由于咱们Blazor项目不在node.js环境中,使用tailwindcss还是比较麻烦的,所以写篇文章分享一下。

一、引用tailwind的方法思路

  1. 在Blazor项目中,实际上是可以使用npm的,顺着这个思路,是可以引入tailwind的,但不推荐。一个项目有两个运行环境总是比较乱的,而且还不得不引入node_modules。
  2. 为了让更多不方便使用node.js的开发框架(比如Blazor),使用上tailwind,官方在V3版本的时候,提供了能够独立运行的命令行工具cli。这个cli能够监控指定文件的更改,并实时生成我们需要的css文件。下载tailwind提供的对应操作系统的cli,然后在项目目录下,使用命令行工具执行tailwind的相关命令即可,V3.4.4下载地址。
  3. tailwind只是在编译时动态生成样式类,而npx具有“临时使用”的特性,即npx下载的包只会在执行命令时使用,执行完毕后会自动删除,不会在本地留下多余的文件。看起来,这个好像是比较完美的方式,当然使用前需要先安装node环境。我们先来用一下它。

二、Blazor项目中引入tailwind的操作步骤(npx方式)

2.1 创建BlazorWebApp项目

本案例使用单页自动交互模式,生成一个服务端项目和客户端项目,这样测试更完整些。有关Blazor及其渲染模式的内容,以后慢慢分享。
1.png3.png

2.2 打开主项目所在文件夹执行命令行命令

本案例使用最简单的CMD命令行工具
4.png5.png

2.3 在CMD命令行中,执行初始化tailwind命令

执行tailwind初始化命令后,在项目当前目录下,自动生成tailwind的配置文件tailwind.config.js。这个命令行窗口不要关闭,稍后还要使用。
6.png
7.png

2.4 配置tailwind监视的文件范围

tailwind.config.js是tailwind的配置文件,可以配置很多项目,本文就简单配置一下监视文件范围,其它配置可以看官网文档,稍后我也会写一些关于tailwind的使用分享。
image.png

2.5 创建tailwind映射样式文件

这个样式文件具体应该叫啥,我还搞不清楚,主要作用就是tailwind监视到样式改动后,会收集样式工具类,然后通过这个文件桥接,映射到项目实际使用的CSS文件。我们创建一个Styles文件夹,在此文件夹下创建app.css,创建位置和名称可以根据个人习惯来,并输入下图代码。
image.png

2.6 清理项目的css

默认Blazor项目使用bootstrap,可以删除。同时,清空wwwroot目录下的app.css里面的内空,之后由tailwind生成的样式类将写进这个文件。当然,不用这个文件也行,App.razor根组件的样式引用、以及tailwind的生成命令,相应文件能对得上就行。
image.png
image.png

2.7 在命令行工具中,启动tailwind并进行监视

第一个命令就可以生成样式文件了,第二个命令添加了–watch,实时监控。在tailwind.config.js中我们设置了监控文件范围,只要范围内文件的样式类有修改,就会自动生成样式文件,所以这个命令行窗口不要关闭。测试一下,“初步”成功!!!
image.png
image.png

三、两个坑

3.1 Blazor的client项目无法监视

按第二节的操作步骤,tailwind.config.js的配置有问题,无法监视Client项目,修改如下:

/** @type {import('tailwindcss').Config} */
module.exports = {content: ["./../**/*.{razor,html}"],theme: {extend: {},},plugins: [],
}

3.2 client项目的文件修改无法实现样式的热更新

这个试了很久都无法实现样式的热更新,最后实在没办法,返回去试了一下cli,成功了!!!所以,最终还是推荐使用cli。使用cli,和npx差不多,基本操作都没有变,只是npx命令换成官方提供的exe。下载exe后,存放到sln所在目录,还是到项目主目录下打开CMD窗口,注意调用exe的路径。
image.png
image.png

四、继续优化

4.1 代码提示

tailwind提供的样式类非常多,就算能全部记得,也容易输错,咱们开发肯定是需要依赖代码提示的,好在VisualStudio已经有了tailwind的代码提示扩展。
image.png
image.png

4.2 CSS样式文件压缩

尽管tailwind生成样式文件时会进行裁剪,基本样式文件大小10k左右,但生成项目时,还可以继承压缩一下。执行的cli命令如下,可以再压缩60%-70%左右。

.\..\..\Tailwind\tailwind.exe -i .\Styles\app.css -o .\wwwroot\app.css --minify

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/27755.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32硬件接口I2C应用(基于MP6050)

目录 概述 1 STM32Cube控制配置I2C 1.1 I2C参数配置 1.2 使用STM32Cube产生工程 2 HAL库函数介绍 2.1 初始化函数 2.2 写数据函数 2.3 读数据函数 3 认识MP6050 3.1 MP6050功能介绍 3.2 加速计测量寄存器 ​编辑3.3 温度计量寄存器 3.4 陀螺仪测量寄存器 4 MP60…

C++ Windows下Glog日志库安装使用教程

🙋 介绍:glog是google推出的一款轻量级c++开源日志框架。  环境配置:windows+VS2015+gflags 2.2.2+glog-0.3.5。为避免新版本(glog V0.7.1)踏坑,建议装低版本,这里我选用的是V0.3.5。 1. 下载 在gflags官方中下载gflags代码,官方地址 在Glog官方中下载,githut地址:…

简单易用的多功能图床Picsur

什么是 Picsur ? Picsur 是一款易于使用、可自行托管的图片分享服务,类似于 Imgur,并内置转换功能。支持多种格式的图片,包括 QOI、JPG、PNG、WEBP(支持动画)、TIFF、BMP、GIF(支持动画&#xf…

下载依赖有问题(只有自己有问题)

有缓存! 删除node_modules 命令:npm run clean 前提是该项目支持这个命令:package.json > scripts 内有 clean 例如下面这个就没有clean,则直接手动删除 清除缓存 npm cache clean --force pnpm store prune删除lock文件 …

Superset 二次开发之Git篇 git cherry-pick

Cherry-Pick 命令是 Git 中的一种功能,用于将特定的提交(commit)从一个分支应用到另一个分支。它允许你选择性地应用某些提交,而不是合并整个分支。Cherry-Pick 非常适合在需要将特定更改移植到其他分支时使用,例如从开…

可视化图表:如此高颜值柱状图,其实简单配置就能实现。

这不又有某个boss给我图截图一些柱状性图表,说他们的前端觉得很难,说了一堆技术术语,他也不懂,截图我看到后,就给了他一个网址,马上就解决了。 在这里给大家摘录出几个比较有特色的柱状图出来,让…

PyTorch计算机视觉入门:使用自己的数据集训练神经网络

前言 计算机视觉,作为人工智能领域的一个重要分支,近年来在图像识别、物体检测、图像生成等应用上取得了显著的进步。PyTorch,作为一款灵活且强大的深度学习框架,为开发者提供了便捷的工具来构建和训练计算机视觉模型。本文将指导…

RFID技术在农产品管理中的应用

使用RFID技术对农产品生产、加工、存储和销售的全过程进行跟踪,追溯食品的生产和加工过程,能够有效加强农产品的管理,如图7—10所示。 将RFID技术应用于农业食品安全,首先是建立完整、准确的食品供应链信息记录。借助RFID 对物体…

Python 全栈系列253 再梳理flask-celery的搭建

说明 最近做了几个实验,将结论梳理一下,方便以后翻看。 1 flask-celery 主要用于数据流的同步任务,其执行由flask-aps发起,基于IO并发的方法,达到资源的高效利用,满足业务上的需求。2 目前部署环境有算网…

腾讯大模型最新路线图,主打一个“实用”

让大模型更接地气,腾讯交出一份阶段性答卷。 大模型狂奔一年多后,正迈向产业落地的深水区。如何用好这一革命性的新技术,已成为整个社会的一道必答题。 去年,国内大模型百花齐放,外界关注的焦点也集中在模型能力上。…

AI Agent智能应用从0到1定制开发(完结)

在数字化时代的浪潮中,人工智能(AI)代理智能应用如同星辰般璀璨,引领着技术革新的潮流。从零开始定制开发一款AI Agent智能应用,就像是在无垠的宇宙中绘制一颗新星的轨迹,每一步都充满了挑战与创新的火花。…

echarts写某个市地图

const geoJSON {"type":"FeatureCollection","features":[{"type":"Feature","properties":{"adcode":440303,"name":"罗湖区","center":[114.123885,22.555341],"…

【2024最新精简版】MyBatis面试篇

文章目录 mybatis内部实现过程mybatis延迟加载请说说MyBatis的工作原理mybatis接口里的方法,参数不同时能重载吗mybatis分页插件的原理是什么?mybatis的一级、二级缓存👍mybatis如何实现多表查询mybatis如何实现批量插入👍mybatis动态SQL标签…

关于使用pycharm中控制台运行代码错误之FileNotFoundError: [Errno 2] No such file or directory:

在使用pycharm环境下复现《python编程:从入门到实践》这本书第16.1.1内容中分析csv文件头一节的代码时出现如下问题: 1、文章中使用的数据来源问题 直接参考本站Kenny C同学的文章提供内容即可。 https://github.com/kenidi8215/Hello-World 打开网页&a…

Java面试题--JVM大厂篇之掌握JVM性能优化:选择合适的垃圾回收器

掌握JVM性能优化:选择合适的垃圾回收器 引言: ​  在Java开发中,性能优化往往是提高应用稳定性和用户体验的关键所在。而垃圾回收器的选择和优化,是JVM性能调优的核心环节。如何在众多垃圾回收器中选出适合自己应用需求的那一个&#xff1…

Docker笔记-Debian容器内搭建ssh服务

登陆容器之后修改密码: passwd 密码设置完成后安装openssh-server apt-get install openssh-server 修改端口号为50022并添加配置 vim /etc/ssh/sshd_config 修改成 Port 50022 PasswordAuthentication yes PermitRootLogin yes 启动 rootlinux:~# /etc/in…

cve_2017_12635-CouchDB垂直权限绕过

1.采用参考 https://www.cnblogs.com/mlxwl/p/16577781.html vulfocus:Vulfocus 漏洞威胁分析平台 2.产生原因 在2017年11月15日,CVE-2017-12635和CVE-2017-12636披露,CVE-2017-12635是由于Erlang和JavaScript对JSON解析方式的不同&#…

照明灯具哪个品牌好,一文详细带你了解照明灯具种类有哪些

在孩子学习过程中,有一样物品的重要性不容忽视,那就是一盏提供舒适光源的照明灯具。那么照明灯具哪个品牌好?面对不断增加的学业负担,孩子们经常需要在夜晚借助台灯的光亮进行学习,这已经成为了家庭生活中普遍的情景。…

Vue34-销毁流程

一、销毁流程预览 二、vm.$destroy()函数的调用,开始销毁流程 一个应用只有一个vm,但是一个vm会管理一堆组件实例对象(和vm很像:微型的vm)。 销毁流程中解绑的事件监听器,是自定义事件,不是原…

uni app 自定义 带popup弹窗的input组件

工作需要。自定义了个带popup弹窗的input组件。此组件满足个人需求&#xff0c;不喜勿喷。应该可以看明白怎么回事&#xff0c;也能自己改改&#xff0c;所以就不要联系了&#xff0c;点赞收藏就好 <template><view class"dialog_main"><input v-mod…