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"),
	//   },
	// }
})
相关推荐
未来龙皇小蓝2 小时前
RBAC前端架构-02:集成Vue Router、Vuex和Axios实现基本认证实现
前端·vue.js·架构
空白诗3 小时前
高级进阶 React Native 鸿蒙跨平台开发:slider 滑块组件 - 进度条与评分系统
javascript·react native·react.js
晓得迷路了3 小时前
栗子前端技术周刊第 116 期 - 2025 JS 状态调查结果、Babel 7.29.0、Vue Router 5...
前端·javascript·vue.js
How_doyou_do3 小时前
执行上下文、作用域、闭包 patch
javascript
叫我一声阿雷吧3 小时前
深入理解JavaScript作用域和闭包,解决变量访问问题
开发语言·javascript·ecmascript
淡忘_cx3 小时前
使用Jenkins自动化部署vue项目(2.528.2版本)
vue.js·自动化·jenkins
iDao技术魔方3 小时前
深入Vue 3响应式系统:为什么嵌套对象修改后界面不更新?
javascript·vue.js·ecmascript
历程里程碑3 小时前
普通数组-----除了自身以外数组的乘积
大数据·javascript·python·算法·elasticsearch·搜索引擎·flask
摸鱼的春哥3 小时前
春哥的Agent通关秘籍07:5分钟实现文件归类助手【实战】
前端·javascript·后端
念念不忘 必有回响3 小时前
viepress:vue组件展示和源码功能
前端·javascript·vue.js