Git Product home page Git Product logo

componafide's Introduction

IOC Container for NodeJS but with Prospects

NodeJS got prospects. He's componafide.

Usage

const container = module();

container.register(name, [dependencies], generator);

container.register('myComponent', ['dep1', 'dep2'], (dep1, dep2) => { /* return myComponent */ });
container.register('dep1', [], () => { /* return dep1 */ });

container.constant(name, value);

Convienience method for container.register(name, [], () => value);.

const component = container.resolve(name);

Usage Pattern

A Component Per File

Export a component in each file. Put all dependencies in closure, and return an API or value. Require nothing outside of a file or two. No regrets. Go state!

module.exports = (dep1, dep2) => {

  function myPrivateMethod () {}

  return class MySingleton {
    static myPublicMethod () {}
  }

}

Define the component in index.js or some application bootstrapping step:

container.register('myComponent', require('src/myComponent'), ['dep1', 'dep2']);
const component = container.resolve('myComponent');

Singletons

module.exports = dep1 => {

  function privateMethod () {}

  return class SingletonAPI {
    static publicMethod (arg1, arg2) {}
  }

}

Classes

module.exports = Pomade => {

  function applyTheDap () {}

  return class DapperDan extends Pomade {
    apply () {}
  }

}

Constants, Native, and Global Gimmes

Still use dependency injection. If it feels stupid your are probably still doing it right.

container.constant('scope.process', process);
container.constant('pi', 3.14);

componafide's People

Contributors

jrd261 avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.