1.1.1 • Published 6 years ago

old-puppets v1.1.1

Weekly downloads
2
License
MIT
Repository
github
Last release
6 years ago

Introduction

'old-puppets' is a Spring-like container that implements the inversion-of-control pattern. It binds all annotated components in some certain contexts WITHOUT import.

WARN

This module is not generalized yet. It is just for SK ECOTrol project so far.

read annotations and build a application context

const { buildApplicationContext } = require("old-puppets");
buildApplicationContext();

escape annotations

      {
        test: /\.js$/,
        use: [
          {
            loader: require.resolve("old-puppets/loaders/annotationLoader")
          }
        ]
      }

annotationLoader should be handled before the babel loader. I am considering a plug-in instead of this loader.

@ComponentScan

import React, { Component } from "react";

import ComponentScan from "old-puppets/annotations/ComponentScan";

@ComponentScan
export default class Root extends Component {
  render() {

applicationContext.js will be generated in the same directory where the component with @ComponentScan is.

the form of applicationContext.js

import Sample1 from './Sample1.js';
import Sample2 from './Sample2.js';

const mapper = [
	{ menuNo: 1, component: Sample1 },
	{ menuNo: 2, component: Sample2 },
]

export default mapper;

This js file might be stale because it is refreshed at build time.

Component names are determined by thier file names, not (a function).name. So each of them should be UNIQUE.

use applicationContext.js

// eslint-disable-next-line
import applicationContext from "./applicationContext";

eslint-disable-next-line should be commented because applicationContext.js does not exist before its building. This interface WILL BE UPDATED to annotation use.

just put an annotation on the class in a component to add the component to applicationContext.js

import React, { Component } from "react";

import MenuNo from "old-puppets/annotations/MenuNo";

@MenuNo(1)
export default class Sample1 extends Component {
  render() {
    return (

decorators out of class

// @MenuNo(3)
export default hoc(AnyOne);

This line-comment is regarded as annotated.

or

// @MenuNo(4)
let Aaa = props => <Hi mom={props.sorry} />

License

MIT © wooheemusic

1.1.1

6 years ago

1.1.0

6 years ago

1.0.4

6 years ago

1.0.3

6 years ago

1.0.2

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago