JavaScript 的自定义事件库.有吗?建议
Custom event library for JavaScript. Are there any? Recommendations?
我正在寻找一个JavaScript库,它允许我使用我可以订阅和触发的自定义事件。我还需要事件名称/范围的工作方式与消息队列中的主题类似,您可以在其中订阅命名空间并获取该命名空间的所有事件。
例如
var myCustomEventHandler = new CustomEventHandler();
myCustomEventHandler.bind('my.event', function(data) { console.log('Event 1'); });
myCustomEventHandler.bind('my.other.event', function(data) { console.log('Event 2'); });
myCustomEventHandler.bind('my.*', function(data) { console.log('Event 3'); });
myCustomEventHandler.trigger('my.event');
// Logs "Event 1" and "Event 3"
myCustomEventHandler.trigger('my.other.event');
// Logs "Event 2" and "Event 3"
myCustomEventHandler.trigger('my.something.else');
// Logs "Event 3"
我可以编写一些自定义的东西,但如果有开源库,我更喜欢使用开源库。
干杯。
YUI 2 也有类似的东西,我假设 YUI 3 也有,但我还没有足够详细地研究它来了解它。EventEmitter 似乎至少可以满足您的一些要求,而且要小得多。microjs 事件的其他一些库也可能很有前途。
看看豆子。真棒。
我还建议看看js-signals。
这是他们网站的基本示例:
//custom object that dispatch a `started` signal
var myObject = {
started : new signals.Signal()
};
function onStarted(param1, param2){
alert(param1 + param2);
}
myObject.started.add(onStarted); //add listener
myObject.started.dispatch('foo', 'bar'); //dispatch signal passing custom parameters
myObject.started.remove(onStarted); //remove a single listener
试试 RxJS。
这暴露了 Javascript 中 Reactive Extensions 和 Linq 的强大功能。例:
this.searcher = $(me._textboxSelector)
.toObservable("keyup")
.Select(function (_) {
return $(me._textboxSelector).val();
})
.Where(function (str) {
if (me._madeSomeHiding && str.length < me._minStringLength) {
$(me._itemsSelector).show();
}
这允许在列表上创建筛选器。因此,您可以说如果用户键入 2 个字符并停止 250 毫秒,然后执行某些操作。
我在一天中遇到了同样的问题,所以我创建了一个超级小的库来帮助我处理事件。看看它,也许你会发现它很有用。
https://github.com/anvk/Events.js
var events = new utils.Events();
var callback1 = function() {...};
var callback2 = function(arg1, arg2) {...};
events.on('event A', callback1);
events.on('event B', callback2);
events.emit('event A');
events.emit('event B', [var1, var2]);
一个JavaScript事件库,用于jQuery事件提供的所有内容,而无需jQuery。
https://github.com/AtheistP3ace/jAwn
老问题,但这是我为个人使用而放在一起的东西,但我基本上采用了 jQuery 并仅对他们的事件内容进行了自定义构建。去除了 Sizzle 和他们强加给你的其他一切,即使使用自定义事件构建也是如此。
这只剩下特定的事件代码和缓存(事件需要)。此代码已使用所有最新的 3.0 jQuery 更新和错误修复进行了更新。这只能保证与jQuery 3.0支持的任何浏览器一起使用(https://jquery.com/browser-support/)。总而言之,min文件是13kb,支持jQuery可以对事件执行的所有操作。命名空间、自定义事件、直接和委托事件、传递数据、触发事件,应有尽有。
阅读文档。这很简单。就像 jQuery 一样工作,而不是在 jQuery 对象上调用 on、off、trigger 等,而是将元素作为第一个参数传递。
正如我之前所说,我这样做是为了个人使用,所以这不是我不断支持和更新的项目,但我尽量让它保持最新以供我自己使用,并确保它具有最新的修复程序。我已经在多个项目中使用它多年了,效果很好。我最近才把它放在GitHub上,以防其他人发现它有用。
试试 KeyderJS:
Keyder(document.getElementById("my_element")).click(function(){
alert("Mouse button pressed");
}, function(){
alert("Mouse button released");
});
晚了,但你可能对 https://github.com/asyncly/EventEmitter2 感兴趣
从描述:
特征
Namespaces/Wildcards.
Times To Listen (TTL), extends the once concept with many.
Browser environment compatibility.
Demonstrates good performance in benchmarks
我也建议使用KeyderJS,因为它是一个"简单而强大的JavaScript库"。我发现并且仍然发现它非常有用。它使我的编码更容易。它还具有许多浏览器兼容性。
此外,您不必非常了解JavaScript即可使用它,并且可以成为JavaScript新手或专家来使用它。
- 关于为JavaScript添加适当的语言环境支持,我目前有什么建议可以遵循吗
- 您对在HTML、CSS和JavaScript中开发理想的Sublime Text 2配置有什么建议
- 我想在客户端单击中生成作业序列号.如果有任何建议,请提供帮助
- 是否有可能/建议解析我的用户输入字符串 w 正则表达式
- 有吗?类似于C#中的Javascript条件测试
- 对于Titanium Mobile的入门教程有什么建议吗?
- 横幅正在从网页上消失.关于如何解决这个问题有什么建议吗?
- 将d3.js SVG代码转换为独立程序—有什么建议吗?
- 我想将列表项存储在会话id licitys中,但无法做到这一点,可能有任何建议
- 鼠标点击坐标-一个真正的解决方案…有吗?
- 噩梦中的每一种方法都有吗?
- 视图,控制器,模型和Ajax,对于构建一个需要自动更新的工具有什么建议吗?(ASP.. NET MVC Razor)
- 我需要将元素的text-color转换为background-color,有什么建议吗?
- 有人对如何使用qUnit进行持续集成有什么建议吗,比如巡航控制
- 我删除重复的功能不起作用,有什么建议吗?
- Mongoose似乎不支持$max字段更新操作符,有什么建议吗?
- 有什么建议吗?让犀牛跑得更快的技巧
- 粘脚黑客已经接近了,有什么建议能让我更接近一点吗?
- 重构angular js上的代码重复(有什么建议吗?)
- JavaScript 的自定义事件库.有吗?建议