npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

draba-injector

v0.1.0

Published

Dependency injector for application or unit test.

Downloads

3

Readme

draba-injector

dependent injection module, used to help isolating components which will become more easily test 依赖注入模块,用来分离应用程序中的组件,或用来测试。

"require" is the default module in Node.js, but more dependencies, and hard to test require是nodejs默认的模块加载组件,耦合性非常强,非常不利于单元测试。

follow is a example, more code in the "tests" directory 下面介绍一个简单的例子来展示此模块的用法(具体代码见tests目录)

directory 目录结构

/example
    /recursive
        entityA.js
        entityB.js
        entityC.js
        entityD.js

dependency: 依赖关系:

"entityA" dependents to "entityB"
"entityB" dependents to "entityC" and "entityD"

entityA.js的内容

module.exports = ['example.recursive.entityB', function (entityB) {
}];

entityB.js的内容

module.exports = ['example.recursive.entityC', 'example.recursive.entityD', function (entityC, entityD) {
}];

entityC.js的内容

module.exports = [function () {
    return 4;
}];

entityD.js的内容

module.exports = [function () {
    return 8;
}];

how to use 如何加载使用

var Inject = require('draba-injector');
var injector = new Injector(__dirname+'/tests');
var app = injector.inject(['example.recursive.entityA', function (entityA) {
    return {entityA:entityA};
}]);

rule规则

target目标:

格式如下:

[entityName1, entityName2,..., function (entity1, entity2,...) {
}]

entity实体:

same to component 等同于组件

格式如下:

format is RegExp('^[0-9a-z_$\-]+([.][0-9a-z_$\-]+)*(:[0-9a-z_$\-]+)*$', 'i')
实体名称格式为 RegExp('^[0-9a-z_$\-]+([.][0-9a-z_$\-]+)*(:[0-9a-z_$\-]+)*$', 'i')
entity name will be parsed to a path by replace "." to "/"
实体名称会被解析成路径,每一个"."被替解析成“/”,加上basePath前缀做路径得到实体的文件路径

Api

Constructor Injector

params:

@basePath <string|array> the basePath of the Injector, Injector will search entities in the basePath by order

Injector.prototype.inject

params:

@target <array|other> the main component which will be injected;if not an array, directly return
@injectionData <undefined|object> the predefined data that will be injected to the target