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

用花瓣网站上的图片做游戏行吗看网站搜什么关键词

用花瓣网站上的图片做游戏行吗,看网站搜什么关键词,免费字体设计 常见网站,比较好的网站建设在 Angular 等框架中,组件间通信通常通过输入属性(Input)、输出事件(Output)或服务(Service)实现。而在原生 JavaScript 开发中,没有这些内置机制,但可以通过以下方式模拟…

在 Angular 等框架中,组件间通信通常通过输入属性(@Input)、输出事件(@Output)或服务(Service)实现。而在原生 JavaScript 开发中,没有这些内置机制,但可以通过以下方式模拟类似功能:


一、组件间通信的常见场景

  1. 父组件向子组件传递数据
  2. 子组件向父组件发送事件
  3. 非父子组件间的通信

二、原生 JavaScript 实现方案

1. 父组件向子组件传递数据

通过动态渲染子组件时传入数据(类似 React 的 props 或 Angular 的 @Input)。

示例

// 子组件定义
class ChildComponent {constructor(data) {this.data = data;this.render();}render() {const childDiv = document.createElement('div');childDiv.innerHTML = `子组件收到数据: ${this.data}`;document.body.appendChild(childDiv);}
}// 父组件初始化子组件并传参
const parentData = 'Hello from Parent';
new ChildComponent(parentData);
2. 子组件向父组件发送事件

通过回调函数或自定义事件(CustomEvent)实现。

方案 1:回调函数

// 父组件定义回调
function handleChildEvent(data) {console.log('父组件收到子组件事件:', data);
}// 子组件触发回调
class ChildComponent {constructor(onEvent) {this.onEvent = onEvent;this.button = document.createElement('button');this.button.textContent = '触发事件';this.button.addEventListener('click', () => this.onEvent('Data from Child'));document.body.appendChild(this.button);}
}// 初始化子组件并传入回调
new ChildComponent(handleChildEvent);
方案 2:自定义事件
// 子组件派发事件
class ChildComponent {constructor() {this.button = document.createElement('button');this.button.textContent = '触发事件';this.button.addEventListener('click', () => {const event = new CustomEvent('childEvent', {detail: { data: 'Data from Child' }});document.dispatchEvent(event);});document.body.appendChild(this.button);}
}// 父组件监听事件
document.addEventListener('childEvent', (e) => {console.log('父组件收到事件:', e.detail.data);
});// 初始化子组件
new ChildComponent();
3. 非父子组件间的通信

通过全局事件总线或状态管理对象实现。

方案 1:全局事件总线

// 创建事件总线
const eventBus = new EventTarget();// 组件 A 发送事件
eventBus.dispatchEvent(new CustomEvent('update', {detail: { message: 'Hello from Component A' }
}));// 组件 B 监听事件
eventBus.addEventListener('update', (e) => {console.log('组件 B 收到消息:', e.detail.message);
});
方案 2:状态管理对象
// 共享状态对象
const state = {data: null,listeners: [],subscribe(callback) {this.listeners.push(callback);},setData(newData) {this.data = newData;this.listeners.forEach(callback => callback(newData));}
};// 组件 A 更新状态
state.setData('New Data');// 组件 B 订阅状态变化
state.subscribe((data) => {console.log('状态更新:', data);
});

三、进阶优化

  1. 模块化组件
    将组件封装为 ES6 类或模块,避免全局污染:

    // ChildComponent.js
    export class ChildComponent {constructor(onEvent) { /* ... */ }
    }
  2. 使用发布-订阅模式
    实现更灵活的事件管理(如 EventEmitter):

    class EventEmitter {constructor() {this.events = {};}on(event, callback) { /* ... */ }emit(event, data) { /* ... */ }
    }
  3. 虚拟 DOM 库(可选)
    复杂应用可引入轻量级库(如 Preact)简化 DOM 操作。


四、总结

原生 JavaScript 中组件通信的核心思路:

  • 数据流:通过函数参数或属性传递数据。
  • 事件流:通过回调函数或自定义事件实现通信。
  • 状态共享:通过全局对象或事件总线管理跨组件状态。

虽然原生实现需要更多手动管理,但能深入理解框架背后的设计原理。对于复杂项目,建议逐步引入框架以提高开发效率。

http://www.dtcms.com/wzjs/141711.html

相关文章:

  • 网站建设和优化要求如何创建一个属于自己的网站
  • 网站上做兼职的是真假seo内容优化是什么
  • 想接外包做网站广州抖音seo公司
  • 巩义做网站推广手机软文广告300字
  • 手机端企业网站怎么做品牌推广方案案例
  • 中山网站建设案例百度seo公司哪家最好
  • 芯港小镇建设管理中心网站谷歌关键词排名查询
  • 中国最好的域名注册网站草根seo视频大全网站
  • 国内如何做国外网站的兼职项目宁波seo推广优化公司
  • 创卫网站 建设 方案搜狗seo优化
  • 很好用的炫酷WordPress主题优化大师的优化项目有哪7个
  • 网站建设管理策划书app开发费用标准
  • 宁波网站建设设计图站长seo推广
  • 微信做引流网站seo优化的主要任务
  • 做网站为什么能挣钱百度推广seo是什么意思
  • 网站建设培训哪个好seo网站优化技术
  • 建设心理网站的背景百度地图广告投放
  • 网站建设教程今天上海最新新闻事件
  • 宁波网络公司排名seo搜索引擎优化包邮
  • 做外贸的有些什么网站成都新一轮疫情
  • 例举一个"目录索引类搜索引擎"网站并将这个网站的url写在下方.上海营销seo
  • 中国制造网官方网站入口网址郑州网络营销公司有哪些
  • 网站建设上线流程天津seo推广软件
  • 贵阳企业建站系统模板网页入口网站推广
  • wordpress在线更新seo优化关键词是什么意思
  • 怎么做查询网站吗seo外链怎么做
  • 卖鱼的亲戚要我帮忙做网站无线网络优化工程师
  • 企业培训 电子商务网站建设 图片济南做网站建设的公司
  • 淘宝详情页做的比较好的网站今天重大新闻头条新闻军事
  • 网站设计 职业今天宣布疫情最新消息