1.1.1 • Published 3 years ago
vue3-html-px-loader v1.1.1
vue3-html-px-loader
描述
在使用vue3
框架开发移动端的项目场景下,通常单位px
需要经过响应式处理转变成rem
单位.
庆幸的是post-css
提供的插件能将<style></style>
下的单位进行转换.
但是template
中使用:style="{height:'30px'}"
却无法变换,vue3-html-px-loader
提供了一种快捷的方式对template
中的单位变换给与支持.
安装
vue3
项目下运行yarn add vue3-html-px-loader -D
安装loader
配置
在项目根目录vue.config.js
添加如下配置.
module.exports = {
chainWebpack:config =>{
config.module
.rule('vue')
.test(/\.vue$/)
.use('vue3-html-px-loader')
.loader('vue3-html-px-loader')
.tap(options => {
options = {
...options,
dir:'@/util.js',
funName:'pxHanlder'
}
return options
})
.end()
}
}
配置中需要添加两个核心参数:
- dir: 单位转换函数的路径
- funName: 单位转换函数的名称
例如案例如下,在项目目录/src/util.js
中定义如下方法,用于单位换算.
export const pxHanlder = (value:string | number)=>{
value = Number(value);
// 将750px的设计稿的测量的长度转换成不同手机屏幕下的数值
return value/750 * document.documentElement.clientWidth;
}
页面组件@/views/Home.vue
代码如下.
<template>
<button :style="{fontSize:`${fontSize}px`}" class="color">
hello world
</button>
</template>
<script>
import { defineComponent } from 'vue'
export default defineComponent({
setup() {
return {
fontSize:100
}
}
})
</script>
<style>...</style>
经过vue3-html-px-loader
配置后:
- 将
dir
设置为@/util.js
- 将
funName
设置为pxHanlder
vue3-html-px-loader
会将@/views/Home.vue
代码自动转换成如下形式.
<template>
<button :style="{fontSize:`${pxHanlder(fontSize)}px`}" class="color">
hello world
</button>
</template>
<script>
import { pxHanlder } from "@/views/Home.vue";
import { defineComponent } from 'vue'
export default defineComponent({
setup() {
return {
fontSize:100,
pxHanlder
}
}
})
</script>
<style>...</style>
值得注意.template
中的px单位必须要被${}
包裹才能被vue3-html-px-loader
处理.
vue3-html-px-loader
省去了人工导入和填充工具方法的环节,使开发者能更加投入到业务工作中.