vue3 uniapp vite 配置之定义指令

动态引入指令

复制代码
// src/directives/index.js
import trim from './trim';

const directives = {
  trim,
};

export default {
  install(app) {
    console.log('[✔] 自定义指令插件 install 触发了!');
    Object.entries(directives).forEach(([key, directive]) => {
      app.directive(key, directive);
    });
  },
};

自定义指令函数

复制代码
// src/directives/trim.js
export default {
  beforeMount(el) {
    if (el.tagName === 'TEXTAREA' || el.tagName === 'INPUT') {
      el.addEventListener('blur', () => {
        el.value = el.value.trim();
      });
    }
  },
};

注册指令

复制代码
import {
	createSSRApp
} from "vue";
import pinia from '@/stores'
import * as Pinia from 'pinia';
import App from "./App.vue";
import directives from '@/directives'

export function createApp() {
	const app = createSSRApp(App);
	debugger
	app.use(pinia);
	app.use(directives);
	return {
		app,
		Pinia, // 此处必须将 Pinia 返回
	};
}

错误信息:plugin:vite:vue unknown directive {"type":7,"name":"trim","rawName":"v-trim","modifiers":\[\],"loc":{"start":{"column":51,"line":28,"offset":722},"end":{"column":57,"line":28,"offset":728},"source":"v-trim"}}

需要vite中配置>

好像Uniapp 官方不支持之定义指令

@vitejs/plugin-vue和@dcloudio/vite-plugin-uni只能存在一个 也就是uniapp不支持?

复制代码
import {
	defineConfig
} from 'vite'
import uni from '@dcloudio/vite-plugin-uni'
import path from 'path'
import vue from '@vitejs/plugin-vue'
import AutoImport from 'unplugin-auto-import/vite'
// https://vitejs.dev/config/
export default defineConfig({
	transpileDependencies:['@dcloudio/uni-ui'],
	plugins: [
	vue({
	      template: {
	        compilerOptions: {
	          directiveTransforms: {
	            trim: () => ({
	              props: [],
	              needRuntime: true // 重点:告诉编译器这是运行时处理
	            })
	          }
	        }
	      }
	    }),
	//	uni(),
		AutoImport({
			// 预设
			imports:['vue','uni-app']
		}),
		
	],

	css: {
	        preprocessorOptions: {
	            scss: {
					 additionalData: `@use "@/static/css/compont.scss" as *;@use '@/static/iconfont/iconfont.css' as *;`,
					silenceDeprecations: ['legacy-js-api'],
					api: 'modern-compiler',
				
	        },
	    },
},
	resolve: {
		
		alias: {
		  '@': path.resolve(__dirname, 'src')
		}
	  }
	// 配置路径别名
	// resolve: {
	//   alias: {
	//     "@": resolve(__dirname, "src"),
	//   },
	// }
})
相关推荐
threerocks5 小时前
AI 原生软件开发生命周期手册 - 如何借助 AI,逐阶段改造软件开发生命周期
前端·javascript·后端
ly76896 小时前
JavaScript 从入门到进阶:核心语法、异步编程与工程化实践
开发语言·javascript·ecmascript
剑胆琴心静水深流7 小时前
全栈之路6---web集成与呈现
前端·vue.js·spring boot·分布式·spring·前端框架·npm
沙盘客8 小时前
AFSIM 示例解读(03)· 六自由度飞行仿真 six_dof(下):机场运作与弹道导弹投送
java·javascript·经验分享
默_笙10 小时前
👍 我的代码被 ESLint 抓包了:单引号、var、没分号——全被当场点名
前端·javascript
oh,huoyuyan10 小时前
JS 动态网页抓不到?试试火车采集器网页抓取工具
开发语言·javascript·ecmascript
汉堡大王952711 小时前
用 Trae Work 自动化任务,6 分钟生成一份前端生态周报
前端·javascript·人工智能
章鱼小丸子逃跑中12 小时前
【2025最新版】如何将fnm与node.js安装在D盘?【保姆级安装及人性话理解教程】
前端·javascript·npm·node.js
CAD老兵13 小时前
在浏览器里对比 DWG/DXF 图纸 —— @mlightcad/cad-diff-viewer
前端·javascript·github
WL_arm14 小时前
Vibe Coding(氛围编程)入门
javascript·css·人工智能·html5