All Projects → dianbaer → Juggle

dianbaer / Juggle

Licence: mit
juggle是一个极简的、组件式的js框架。无依赖,完美闭包,灵活且适合渐进学习,可与任何框架整合。包含(支持冒泡的事件 || Tween || MV框架 || http || websocket || 资源 || 模块)等组件,按需选择组件,不绑架开发者。

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Juggle

Javascriptstudy
JavaScript的学习代码总结,高级特性、数据结构、设计模式、typescript、vue、angular、react、node、webpack、weex、小程序、tensorflow…,JavaScript是世界上最好的语言!
Stars: ✭ 529 (+154.33%)
Mutual labels:  module, websocket
PoShLog
🔩 PoShLog is PowerShell cross-platform logging module. It allows you to log structured event data into console, file and much more places easily. It's built upon great C# logging library Serilog - https://serilog.net/
Stars: ✭ 108 (-48.08%)
Mutual labels:  module, event
Sgf
This is a Smart Game Foundation (Not Framework)
Stars: ✭ 122 (-41.35%)
Mutual labels:  event, module
Swoole Src
🚀 Coroutine-based concurrency library for PHP
Stars: ✭ 17,175 (+8157.21%)
Mutual labels:  event, websocket
Jstarcraft Core
目标是提供一个通用的Java核心编程框架,作为搭建其它框架或者项目的基础. 让相关领域的研发人员能够专注高层设计而不用关注底层实现. 涵盖了缓存,存储,编解码,资源,脚本,监控,通讯,事件,事务9个方面.
Stars: ✭ 150 (-27.88%)
Mutual labels:  event, resource
Evmongoose
DEPRECATED. Evmongoose is an asynchronous, event(libev) based multi-protocol embedded networking library with functions including TCP, HTTP, WebSocket, MQTT and much more. It's based on mongoose and libev implementation and it's support Lua API.
Stars: ✭ 199 (-4.33%)
Mutual labels:  event
Centrifuge Js
JavaScript client to communicate with Centrifugo server and Centrifuge library over WebSocket or SockJS
Stars: ✭ 200 (-3.85%)
Mutual labels:  websocket
Vmoex Framework
一个开源的二次元向的社区程序。
Stars: ✭ 198 (-4.81%)
Mutual labels:  websocket
Brouter
Stars: ✭ 198 (-4.81%)
Mutual labels:  module
Basic
Basic Interpreter for the ESP8266
Stars: ✭ 206 (-0.96%)
Mutual labels:  websocket
Qmq
QMQ是去哪儿网内部广泛使用的消息中间件,自2012年诞生以来在去哪儿网所有业务场景中广泛的应用,包括跟交易息息相关的订单场景; 也包括报价搜索等高吞吐量场景。
Stars: ✭ 2,420 (+1063.46%)
Mutual labels:  event
Netty Websocket
a fully-functioning websocket server built on netty.
Stars: ✭ 201 (-3.37%)
Mutual labels:  websocket
Euclid
User Profile Interface Animation
Stars: ✭ 2,246 (+979.81%)
Mutual labels:  module
October30
macOS Screen Saver showing 371 Apple logos from their 2018 iPad event
Stars: ✭ 200 (-3.85%)
Mutual labels:  event
Demo Project
存放学习过程中的demo项目,别光fork,顺便点下⭐哦
Stars: ✭ 198 (-4.81%)
Mutual labels:  websocket
Symphony
🎶 一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)平台。
Stars: ✭ 13,080 (+6188.46%)
Mutual labels:  websocket
Cookim
Distributed web chat application base websocket built on akka.
Stars: ✭ 198 (-4.81%)
Mutual labels:  websocket
Awesome Elementor
A collection of third party add-ons for the Elementor page builder plugin.
Stars: ✭ 201 (-3.37%)
Mutual labels:  resource
Thunderpush
Push messages to browsers in real-time ⚡️
Stars: ✭ 202 (-2.88%)
Mutual labels:  websocket
Nanoutils
🌊 Tiniest FP-friendly JavaScript utils library
Stars: ✭ 200 (-3.85%)
Mutual labels:  module

juggle

Build Status Codacy Badge License

juggle是一个极简的、组件式的js框架。无依赖,完美闭包,灵活且适合渐进学习,可与任何框架整合。包含(支持冒泡的事件、Tween、MV框架、http、websocket、资源、模块)等组件,按需选择组件,不绑架开发者。

juggle架构图及其依赖关系(深颜色的是核心组件强烈推荐)

架构图

allinone下载

npm install juggle-all

核心组件介绍


1、juggle-event(支持冒泡的事件)

介绍:支持冒泡的事件,可用于解除包含结构,树形结构的耦合性。支持监听事件、移除事件、派发事件、阻止冒泡、立即阻止。使用对象池减少垃圾回收。

优秀且需要注意的特性

1、支持冒泡,前提是冒泡对象有parent属性并且不为空,有isDisplayObject属性并且为true。
2、在派发事件的回调函数内将parent设置为null,不能阻止这一次parent接到这次事件
3、在派发事件某层级的回调函数内,移除这层级的监听或添加这层级的监听,是不会影响这次派发事件目标的改变。
4、但是如果在某层级的回调函数内,移除上层的监听或添加上层的监听,上层本轮会受到影响。

下载

npm install juggle-event

使用场景:开发UI组件库,封装任意组件时都可以使用。例如:juggle-http,juggle-websocket都是基于此事件,可以派发专有的自定义事件。

示例代码

1、继承事件类

function DisplayObj() {
	juggle.EventDispatcher.apply(this);
}

2、监听事件

obj.addEventListener("aaa", function(event){}, this);

3、派发事件,派发类型为aaa,冒泡,携带数据bbb

obj.dispatchEventWith("aaa", true, "bbb");

4、事件Demo(双击test.html即可)

>>>>>>事件Demo


2、juggle-juggler(时间轴总控)

介绍:时间轴总控,支持添加动画,移除动画,每帧进行动画回调并携带与上一次调用的间隔毫秒数

优秀且需要注意的特性

1、回调中新加入的动画不能在这一次被调度,因为没有经历时间过程这是合理的
2、回调中移除的分两种可能,已经在本次调度的无影响,没有在本次调度的取消本次调度

下载

npm install juggle-juggler

使用场景:动画,每帧进行调用的业务逻辑,都可以使用。

示例代码

1、必须实现规定的advanceTime方法

function View() {
	this.advanceTime = function (time) {
	}
}

2、加入时间轴总控,每帧会调用advanceTime,并携带与上一次调用的间隔毫秒数

juggle.jugglerManager.juggler.add(new View());

3、时间轴总控Demo

>>>>>>时间轴总控Demo


3、juggle-tween(缓动类)

介绍:缓动类,支持17种过渡模式,每帧无误差精准定位,完美的平滑过渡。支持对象池减少垃圾回收。

优秀且需要注意的特性

1、每次调用都是开始值+(终点-起点)*(经过时间/总时间),这是最稳定的,没有任何误差
2、连续调度,每次完成时过剩的时间再次利用不浪费。

下载

npm install juggle-tween

使用场景:需要动画过渡的都可以使用。

示例代码

1、创建一个显示对象

function DisplayObject(obj) {
	this.obj = obj;
	this.xValue = 0;
	this.yValue = 0;
	this.getX = function () {
		return this.xValue;
	};
	this.setX = function (value) {
		this.xValue = value;
		this.draw();
	};
	this.getY = function () {
		return this.yValue;
	};
	this.setY = function (value) {
		this.yValue = value;
		this.draw();
	};
	this.draw = function () {
		this.obj.style.position = "absolute";
		this.obj.style.top = this.yValue + "px";
		this.obj.style.left = this.xValue + "px";
	}
}

2、使用juggle-tween进行动画过渡

var display = new DisplayObject(document.getElementById("tween_div"));
display.setX(100);
display.setY(100);
tween = juggle.tweenPool.fromPool(display, 2);
tween.animate(display.getX, display.setX, 800);
tween.animate(display.getY, display.setY, 400);
juggle.jugglerManager.juggler.add(tween);

3、Tween的Demo(双击test.html即可)

>>>>>>Tween的Demo

4、Tween的Demo线上演示地址:

>>>>>>Tween的Demo线上演示地址


4、juggle-delayedcall(延迟回调)

介绍:一个绝对精准的延迟回调工具,支持设置回调间隔,回调次数(支持无限次数)。解决setInterval多次调用不精准的问题。使用对象池减少垃圾回收。

优秀且需要注意的特性

1、连续调度,每次完成时过剩的时间再次利用不浪费。调度时间间隔例如:1001毫秒,999毫秒这种模式。

下载

npm install juggle-delayedcall

使用场景:所有需要延迟回调的业务,替代setInterval。

示例代码

1、延迟回调例子,参数1延迟回调函数,每1秒回调一次,携带1111参数,重复5次后停止回调。

var delayedCall = juggle.delayedCallPool.fromPool(function(arg){}, 1, "1111");
delayedCall.mRepeatCount = 5;
juggle.jugglerManager.juggler.add(delayedCall);

2、延迟回调Demo(双击test.html即可)

>>>>>>延迟回调Demo


5、juggle-mv(MV框架)

介绍:一个MV框架解除数据源与视图控制器的耦合性,视图控制器之间的耦合性,严密的闭包封装,用户只需继承Proxy与Mediator即可开发MV模式的项目。

下载

npm install juggle-mv

使用场景:需要与服务器进行交互的web项目。

示例代码

1、继承Proxy作为数据代理,可以请求数据结果后广播消息。

function UserProxy() {
	//继承
	juggle.Proxy.apply(this);
	//获取数据然后广播
	this.getData = function () {
		this.notifyObservers(this.getNotification("test", "getData success"));
	};
}

2、继承Mediator作为视图控制器,控制视图、调用数据源Proxy、关注数据源Proxy与视图控制器Mediator广播过来的消息并处理。

function IndexMediator() {
	//关注消息
	this.listNotificationInterests = ["test"];
	//关注消息的处理
	this.handleNotification = function (data) {
		switch (data.name) {
			case "test":
				alert("IndexMediator接到数据" + data.body);
				break;
		}
	};
	//继承
	juggle.Mediator.apply(this);
}

3、MV框架Demo(双击test.html即可)

>>>>>>MV框架Demo


其他组件介绍


1、juggle-websocket(简易封装,支持自定义事件派发的websocket客户端库)

下载

npm install juggle-websocket

使用场景:需要与服务器建立长连接,依赖服务器推送消息的web项目。

示例代码

1、websocket客户端与服务器示例

>>>>>>websocket客户端

>>>>>>websocket服务器


2、juggle-http(简易封装,通用性很好的http客户端库)

下载

npm install juggle-http

使用场景:需要向服务器发送http请求的web项目。

示例代码

1、http客户端与服务器示例

>>>>>>http客户端

>>>>>>http服务器


3、juggle-resource(支持加载多资源回调的资源库)

下载

npm install juggle-resource

使用场景:配合juggle-module使用。

示例代码

1、加载资源Demo

>>>>>>加载资源Demo


4、juggle-module(模块库,前端模块化架构)

下载

npm install juggle-module

示例代码

1、模块Demo

>>>>>>模块Demo


更多详细介绍

>>>>>>juggle-event详细介绍

>>>>>>juggle-juggler详细介绍

>>>>>>juggle-tween详细介绍

>>>>>>juggle-delayedcall详细介绍

>>>>>>juggle-mv详细介绍

>>>>>>juggle-websocket详细介绍

>>>>>>juggle-http详细介绍

>>>>>>juggle-resource详细介绍

>>>>>>juggle-module详细介绍

juggle地址:

>>>>>>github

>>>>>>码云

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].