Files
k3GPT/doc/AlpineJs.md
2025-11-19 19:43:18 +08:00

113 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

本项目使用了AlpineJs作为前端主要库目的是简单快捷语法类似于VUE2.
中文官网https://www.alpinejs.cn/
国际官网https://alpinejs.dev/
和UI相关的资源本项目使用了如下的资源
https://www.penguinui.com/
https://devdojo.com/pines
https://pinemix.com/
更多信息可以在bing中搜索alpine js ui library
作者编写了alp_unit.js实现单一模块的封装和加载如下所示
<div alp-unit="kg.html"></div>
<div alp-unit="kg2.aps"></div>
其中动态加载,需要手工指定触发时机,如下方式:
<!-- 智能体对话窗口-->
<template x-if="ppt_modalIsOpen">
<div id="ppt_ai_dialog" alp-unit="chat_agent.html"></div>
</template>
1. init函数中监控触发
init(){
//动态加载,AI对话框
this.$watch('ppt_modalIsOpen',value => {
if (value){
this.$nextTick(() => {
var dom = document.getElementById("ppt_ai_dialog")
scan_alp_units(dom);
});
}
});
},//初始化函数
2. 事件触发函数:
enter_chat_agent(index){
//先设置值
this.ppt_modalIsOpen = true;
//更新后动态加载
this.$nextTick(() => {
var dom = document.getElementById("ppt_ai_dialog")
scan_alp_units(dom);
});
}
==============================事件分发价值,在多个组件之间进行消息数据的传递=======================
<h3>注意:事件名称一定要全部小写这是AlpineJs,但可以使用-,如my-event等<h3>
跨组件不能使用x-model,最多就是使用下级还没有定义的上级的一些属性和方法,复杂的情况都需要使用事件来传递
1. 组件内和上下级组件传递和接收
<div @myevent="console.log($event.detail.foo)">
<button @click="$dispatch('myevent', { foo: 'bar' })">
<!-- 点击时,将触发 console.log -->
</div>
2. 函数内定义和接收参数
<div @myevent-2="handel($event)">
<button @click="click2">
</div>
<script>
{
//定义的函数
click2(){
this.$dispatch('myevent-2', { foo: 'two' })
},
handel(event){
alert(event.detail.foo)
}
}
</script>
3. 平行组件的接收
<div x-data @custom-event.window="console.log($event.detail)"></div>
<button x-data @click="$dispatch('custom-event', 'Hello World!')">
加上.windows即可
===========================初始化隐藏和闪屏问题=======================
1. 在元素上同时使用 x-show 和 x-cloak
Html
深色版本
<div x-data="{ open: false }">
<button @click="open = !open">Toggle</button>
<!-- 这个面板默认是隐藏的,但初始化前可能闪现 -->
<div x-show="open" x-cloak>
我是弹出内容!
</div>
</div>
2. 全局 CSS 中定义 x-cloak 隐藏规则(必须!)
Html
深色版本
<style>
[x-cloak] {
display: none !important;
}
</style>
💡 即使 x-show 最终会设为 false但在 Alpine 初始化完成前浏览器仍会渲染该元素。x-cloak 确保它在初始化前始终隐藏。