当前位置: 首页 > wzjs >正文

房地产做网站不移动开发是什么

房地产做网站不,移动开发是什么,龙之向导外贸专区,东莞app定制开发公司通信方式适用层级数据流向复杂度Props/Emits父子组件单向/双向★☆☆v-model父子组件双向★☆☆Provide/Inject跨层级组件自上而下★★☆事件总线任意组件任意方向★★★Pinia/Vuex全局状态任意方向★★☆Refs模板引用父子组件父→子★☆☆作用域插槽父子组件子→父★★☆Web W…

通信方式

适用层级

数据流向

复杂度

Props/Emits

父子组件

单向/双向

★☆☆

v-model

父子组件

双向

★☆☆

Provide/Inject

跨层级组件

自上而下

★★☆

事件总线

任意组件

任意方向

★★★

Pinia/Vuex

全局状态

任意方向

★★☆

Refs模板引用

父子组件

父→子

★☆☆

作用域插槽

父子组件

子→父

★★☆

Web Workers

跨线程通信

任意方向

★★★★

1. Props/Emits:基础父子通信

适用场景:直接父子组件通信
注意:避免直接修改props,使用emit通知父组件修改

<!-- 父组件 -->
<script setup>
import Child from './Child.vue';
const message = ref('父组件数据');
const handleEmit = (data) => {console.log('子组件传递:', data);
};
</script><template><Child :msg="message" @child-event="handleEmit" />
</template><!-- 子组件 Child.vue -->
<script setup>
const props = defineProps(['msg']);
const emit = defineEmits(['child-event']);const sendToParent = () => {emit('child-event', { time: new Date() });
};
</script><template><div>收到: {{ msg }}</div><button @click="sendToParent">发送事件</button>
</template>
2. v-model 双向绑定升级

优势:替代Vue2的.sync修饰符,语法更简洁
原理:相当于 :modelValue + @update:modelValue

<!-- 父组件 -->
<script setup>
import CustomInput from './CustomInput.vue';
const username = ref('');
</script><template><CustomInput v-model="username" />
</template><!-- 子组件 CustomInput.vue -->
<script setup>
const model = defineModel();
</script><template><input type="text":value="model"@input="model = $event.target.value"/>
</template>
3. Provide/Inject 跨层级通信

适用场景:多级嵌套组件共享数据
注意:避免滥用,复杂场景建议用状态管理

// 祖先组件
<script setup>
import { provide, ref } from 'vue';
const theme = ref('dark');
provide('app-theme', {theme,toggle: () => {theme.value = theme.value === 'dark' ? 'light' : 'dark';}
});
</script>// 任意后代组件
<script setup>
import { inject } from 'vue';
const { theme, toggle } = inject('app-theme');
</script><template><button @click="toggle">当前主题: {{ theme }}</button>
</template>
4. 事件总线替代方案(mitt)

适用场景:非父子组件通信
优势:轻量级(仅200B),替代Vue2的$emit/$on

// eventBus.js
import mitt from 'mitt';
export default mitt();// 组件A(发布事件)
import bus from './eventBus';
bus.emit('user-login', { user: 'admin' });// 组件B(订阅事件)
import bus from './eventBus';
bus.on('user-login', (userData) => {console.log('用户登录:', userData);
});// 组件卸载时取消订阅
onUnmounted(() => {bus.off('user-login');
});
5. pinia状态管理(推荐)

优势:类型安全、Devtools支持、模块化设计
对比Vuex:更简洁API,去除mutations概念

// stores/user.js
import { defineStore } from 'pinia';
export const useUserStore = defineStore('user', {state: () => ({ name: '', isLogin: false }),actions: {login(name) {this.name = name;this.isLogin = true;}}
});// 组件中使用
<script setup>
import { useUserStore } from '@/stores/user';
const userStore = useUserStore();const login = () => {userStore.login('张三');
};
</script><template><div>用户名: {{ userStore.name }}</div>
</template>
6. 模板引用通信

适用场景:父组件需要直接访问子组件方法或数据
限制:只能在父子组件间使用

<!-- 父组件 -->
<script setup>
import Child from './Child.vue';
import { ref, onMounted } from 'vue';const childRef = ref(null);onMounted(() => {// 调用子组件方法childRef.value?.childMethod();// 访问子组件数据console.log(childRef.value?.childData);
});
</script><template><Child ref="childRef" />
</template><!-- 子组件 Child.vue -->
<script setup>
import { defineExpose } from 'vue';const childData = ref('子组件数据');
const childMethod = () => {console.log('子组件方法被调用');
};// 暴露给父组件
defineExpose({childData,childMethod
});
</script>
7. 作用域插槽(子→父通信)

适用场景:子组件需要向父组件传递渲染内容
优势:保持子组件封装性的同时提供定制能力

<!-- 子组件 ScopedList.vue -->
<script setup>
const items = ref(['Vue', 'React', 'Angular']);
</script><template><ul><li v-for="(item, index) in items" :key="index"><slot :item="item" :index="index" /></li></ul>
</template><!-- 父组件 -->
<script setup>
import ScopedList from './ScopedList.vue';
</script><template><ScopedList v-slot="{ item, index }"><span :class="{ active: index === 0 }">{{ item }}</span></ScopedList>
</template>
8. Web Workers 跨线程通信

适用场景:CPU密集型任务,避免阻塞UI线程
注意:worker中无法访问DOM

// worker.js
self.onmessage = (e) => {const result = heavyCalculation(e.data);self.postMessage(result);
};function heavyCalculation(data) {// 复杂计算逻辑return data * 2;
}// 组件中使用
<script setup>
import { ref } from 'vue';const worker = new Worker('./worker.js');
const result = ref(0);worker.onmessage = (e) => {result.value = e.data;
};const startCalc = () => {worker.postMessage(1000000); // 发送大数据
};
</script><template><button @click="startCalc">开始计算</button><div>结果: {{ result }}</div>
</template>

通信方式对比指南

通信方式

适用场景

优点

缺点

Props/Emits

父子组件简单通信

简单直接

多层传递繁琐

v-model

表单组件双向绑定

语法简洁

仅适用特定场景

Provide/Inject

跨层级组件共享

避免逐层传递

数据来源不透明

事件总线

任意组件间事件通知

灵活解耦

难以跟踪调试

Pinia/Vuex

全局状态管理

集中管理,调试友好

学习成本较高

模板引用

父组件访问子组件内部

精确访问

破坏组件封装性

作用域插槽

子组件向父组件暴露渲染数据

灵活定制UI

仅适用于模板内容

Web Workers

后台计算任务

避免UI阻塞

通信成本高

实战选型建议

  1. 父子组件:优先使用 props/emits + v-model

  2. 兄弟组件:采用共享父组件状态 或 事件总线

  3. 祖孙组件:使用 provide/inject

  4. 复杂应用Pinia 管理全局状态

  5. 性能敏感Web Workers 处理计算密集型任务

  6. UI定制作用域插槽 实现内容分发


文章转载自:

http://Eowyhvyd.fwywr.cn
http://RCizHnZh.fwywr.cn
http://Mz5lc0aL.fwywr.cn
http://MgDDP0ta.fwywr.cn
http://A8eSF2Yb.fwywr.cn
http://VUsfzC9V.fwywr.cn
http://Y3U1qzSU.fwywr.cn
http://h2trJ6G7.fwywr.cn
http://Mm24tzMf.fwywr.cn
http://2MqMmcAb.fwywr.cn
http://PLqajsas.fwywr.cn
http://0hrSeKmu.fwywr.cn
http://iZ7Za1EK.fwywr.cn
http://9ArF9hdF.fwywr.cn
http://VTNJ67c8.fwywr.cn
http://iPX56wVA.fwywr.cn
http://KdDeAs6C.fwywr.cn
http://8ZjVp0Fj.fwywr.cn
http://6wWLKcX0.fwywr.cn
http://afgnWPEU.fwywr.cn
http://xFfPjPLf.fwywr.cn
http://NNnlbRKr.fwywr.cn
http://ayaEWtaL.fwywr.cn
http://FbkRNTIf.fwywr.cn
http://Xl3naUse.fwywr.cn
http://JRke9DNH.fwywr.cn
http://aKPl0OFu.fwywr.cn
http://UjYK4EcU.fwywr.cn
http://uc9fR2G4.fwywr.cn
http://GvOldh5W.fwywr.cn
http://www.dtcms.com/wzjs/703632.html

相关文章:

  • 为什么做的网站别的浏览器打不开怎么办网站建设学习浩森宇特
  • 建设银行手机银行官方网站下载安装国际转运网站建设
  • 网站推广费用大概需要多少钱wordpress更改域名
  • 企业开源建站系统百度官方app免费下载
  • 宝山北京网站建设佛山网络公司 乐云seo
  • 销售网站内容设计方案建网站的宽带多少钱
  • 桥东区网站建设网页制作个人简介页面模板
  • 大连网络宣传网站中国十大权威新闻媒体
  • 设计公司的网站详情专业的网站建设费用
  • 襄阳做网站价格郑州商城网站制作
  • 用vps刷网站流量要怎么做苏州优化平台
  • 网站开发淄博明朝传奇网页游戏
  • 免费的行情网站推荐大全枣庄定制网站建设制作
  • 平面设计官方网站西安市建设工程信息网诚信信息平台诚信承诺书在哪儿下载
  • wordpress 作品集网站北京优化生育
  • 企业网站管理系统 asp推广网址
  • 生物医药基地网站建设网站建设难吗
  • 做网站一定要域名嘛网站后台打打开空白
  • 毕设做网站 方面的论文百度识图搜索
  • 4s店网站建设c .net网站开发实例
  • 北京网站开发哪家专业平阳住房和城乡规划建设局网站
  • 网站开发建设费用wordpress 插件站
  • 简洁大方网站建设网站建设高级 上海
  • 建设中网站医院网站建设 利法拉网络
  • 网站建设 设计方案 百度文库win7 iis 默认网站
  • 电子商务网站建设初学视频教程seo推广薪资
  • 江苏建站速度忿设计网站大全免费
  • 北京网站制作一般多少钱单产品网站建设
  • 东莞证券官方网站陕西网站建设方案优化
  • 直播视频软件免费优化