All Projects → ecomfe → Uioc

ecomfe / Uioc

Licence: mit
IoC Framework for us

Programming Languages

javascript
184084 projects - #8 most used programming language

Labels

Projects that are alternatives of or similar to Uioc

tsioc
AOP, Ioc container, Boot framework, unit testing framework , activities workflow framework.
Stars: ✭ 15 (-86.61%)
Mutual labels:  ioc, aop
Martian
🎨 Martian 是一个基于NIO的JavaWeb编程框架,可以帮助你快速的开发后端服务
Stars: ✭ 320 (+185.71%)
Mutual labels:  ioc, aop
java-bible
🍌 我的技术摘要
Stars: ✭ 2,950 (+2533.93%)
Mutual labels:  ioc, aop
Farseer.Net
Provides consistent standard use of common components of the .Net Core language
Stars: ✭ 42 (-62.5%)
Mutual labels:  ioc, aop
Hasor
Hasor是一套基于 Java 语言的开发框架,区别于其它框架的是 Hasor 有着自己一套完整的体系,同时还可以和先有技术体系做到完美融合。它包含:IoC/Aop容器框架、Web框架、Jdbc框架、RSF分布式RPC框架、DataQL引擎,等几块。
Stars: ✭ 713 (+536.61%)
Mutual labels:  ioc, aop
thinking-in-spring
Spring source code reading
Stars: ✭ 105 (-6.25%)
Mutual labels:  ioc, aop
Blog.core
💖 ASP.NET Core 6.0 全家桶教程,前后端分离后端接口,vue教程姊妹篇,官方文档:
Stars: ✭ 3,542 (+3062.5%)
Mutual labels:  ioc, aop
Nutz
Nutz -- Web Framework(Mvc/Ioc/Aop/Dao/Json) for ALL Java developer
Stars: ✭ 2,422 (+2062.5%)
Mutual labels:  ioc, aop
Jodd
Jodd! Lightweight. Java. Zero dependencies. Use what you like.
Stars: ✭ 3,616 (+3128.57%)
Mutual labels:  ioc, aop
Spring Learning
Spring 学习笔记,通过例子展示和剖析实现机制
Stars: ✭ 346 (+208.93%)
Mutual labels:  ioc, aop
tiny4j
IOC, AOP, REST...
Stars: ✭ 15 (-86.61%)
Mutual labels:  ioc, aop
Thunder
Stars: ✭ 70 (-37.5%)
Mutual labels:  ioc, aop
LSFramework
手写山寨版spring学习aop、ioc思想的demo,没看过spring的源码,因为实在是太庞大了,参考部分网上博客及开源代码完成。
Stars: ✭ 53 (-52.68%)
Mutual labels:  ioc, aop
CNeptune
CNeptune improve productivity & efficiency by urbanize .net module with meta-code to lay foundation for frameworks
Stars: ✭ 30 (-73.21%)
Mutual labels:  ioc, aop
hasor
Hasor是一套基于 Java 语言的开发框架,区别于其它框架的是 Hasor 有着自己一套完整的体系,同时还可以和先有技术体系做到完美融合。它包含:IoC/Aop容器框架、Web框架、Jdbc框架、RSF分布式RPC框架、DataQL引擎,等几块。
Stars: ✭ 938 (+737.5%)
Mutual labels:  ioc, aop
Java Bible
🍌 我的技术摘要
Stars: ✭ 2,919 (+2506.25%)
Mutual labels:  ioc, aop
Puresharp
Puresharp is a Framework that provides the essential APIs (AOP, IOC, etc...) to productively build high quality (.NET 4.5.2+ & .NET Core 2.1+) applications through reliability, scalability and performance without no compromise
Stars: ✭ 120 (+7.14%)
Mutual labels:  ioc, aop
Summer
这是一个支持分布式和集群的java游戏服务器框架,可用于开发棋牌、回合制等游戏。基于netty实现高性能通讯,支持tcp、http、websocket等协议。支持消息加解密、攻击拦截、黑白名单机制。封装了redis缓存、mysql数据库的连接与使用。轻量级,便于上手。
Stars: ✭ 336 (+200%)
Mutual labels:  ioc, aop
Koatty
Koa2 + Typescript = Koatty. Use Typescript's decorator implement IOC and AOP.
Stars: ✭ 67 (-40.18%)
Mutual labels:  ioc, aop
Doodle
A Simple Java MVC Framework。提供Bean容器、Ioc、Aop、MVC功能
Stars: ✭ 90 (-19.64%)
Mutual labels:  ioc, aop

uioc building status

关于

uioc是用JavaScript写的一个轻量级IoC容器,为JavaScript应用提供了IoC功能。通过使用配置的方式管理模块依赖,最大程度的提高了模块的复用性。

在1.0版本中,增加了aop的支持,对应用从横向关注点上提供了复用支持。

安装

npm install uioc —save

基本使用

Step 1:定义模块

IoC最大的要求之一就是不要在模块中引入具体依赖的实现,对应在JavaScript中则是不要显示的引入依赖模块,仅在注入点面向依赖接口编程。

// List.js
export default class List {
    // 构造函数注入实现了ListModel接口的依赖
    constructor(listModel) {
        this.model = listModel;
    }

    // 属性/接口注入实现了ListView接口的依赖
    setView(listView) {
        this.view = listView;
    }

    enter() {
        let data = this.model.load();
        this.view.render(data);
    }
}

// MyListModel.js
export default class MyListModel {
    load() {
        return {data: 'data'};
    }
}

// MyListView.js
export default class MyListView {
    render(data) {
        console.log(data);
    }
}

上述代码中在List类有两个依赖view和model,分别实现了ListModel和ListView(隐式)接口, 而MyListModel和MyListView类则是ListModel与ListView接口的具体实现。

Step 2:定义IoC配置,实例化IoC容器

// ioc.js
import {IoC} from 'uioc';
import List from './List';
import MyListModel from './MyListModel';
import MyListView from './MyListView';

let config = {
    components: {
        list: {
            creator: List,
            args: [
                {$ref: 'listModel'}
            ],
            properties: {
                view: {
                    $ref: {'listView'}
                }
            },

            listModel: {
                creator: MyListModel
            },

            listView: {
                creator: MyListView
            }
        }
    }
};

let ioc = new IoC(config);

export default ioc;

上述代码中,声明了list, listModel, listView三个组件, 其中list通过$ref关键字声明了2个依赖:listModel是list的构造函数依赖, 会在实例化list的时候,将创建好的listModel依赖传入构造函数; listView是list的属性依赖,会在实例化list完成后,将创建好的listView赋值给list,赋值方式为有setter则调用setter,无setter则直接对象赋值。

Step 3: 定义入口文件,从ioc实例获取入口组件启动整个应用

// main.js
import ioc from 'ioc';

ioc.getComponent('list').then(list => list.enter());

上述代码中通过ioc容器实例获取了list组件,ioc容器将根据配置创建好list的相关依赖并注入给list,最终组装成完整的list实例传递给promise的resolve回调。

基础特性

高级特性

API

Changelog

0.3.x版本文档

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].