# js-boot
**Repository Path**: mi-yi/js-boot
## Basic Information
- **Project Name**: js-boot
- **Description**: JS boot让你的JS代码更容易维护。
- **Primary Language**: JavaScript
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-09-04
- **Last Updated**: 2022-05-30
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# js-boot
#### 介绍
JS boot 一款前端依赖注入JS库,它非常的小,但是功能依旧强大。支持微信小程序、百度小程序、快应用,华为鸿蒙应用
#### 使用方法
##### 例1:
你可以这样使用它
```
//定义一个demo 逻辑业务
JSBoot.define("demoManager", function() {
this.hello = function() {
return "world";
}
});
//定义一个demo 依赖demoManager 的业务
JSBoot.define("demoService", ["demoManager"], function() {
this.hello = function() {
return "hello-" + this.refs.demoManager.hello();
}
});
```
使用:打印HelloWorld
```
```
当你使用它你会发现你的代码非常容易维护,其根本在于它的依赖注入特性。
##### 例2:
```
//定义常量
JSBoot.define("rpgConstants", function() {
//血量
this.HP = 0x1000;
//蓝条
this.MP = 0x1001;
//坐标X
this.LOCATION_X = 0x1;
//坐标Y
this.LOCATION_Y = 0x2;
//攻击力
this.ATTACK = 0x2000;
//防御力
this.DEFENSE = 0x2001;
//人物
this.OBJECT_TYPE_CHARACTER = 0x1;
//怪物
this.OBJECT_TYPE_MONSTER = 0x2;
//道具
this.OBJECT_TYPE_PROP_ITEM = 0x3;
//装备
this.OBJECT_TYPE_EQUIPMENT_ITEM = 0x4;
//地形
this.OBJECT_TYPE_LAND_ITEM = 0x5;
});
/**
* 定义主角
*/
JSBoot.define("main", ["rpgConstants"], function() {
this.id = 0x1;
this.name = "攻击";
this.gameContext = null;
this.properties = {};
this.init = function() {
var constants = this.refs.rpgConstants;
this.properties[constants.HP] = 1000;
this.properties[constants.ATTACK] = 100;
this.properties[constants.DEFENSE] = 30;
}
});
/**
* 定义怪物
*/
JSBoot.define("monster", ["rpgConstants"], function() {
this.id = 0x2;
this.name = "攻击";
this.gameContext = null;
this.properties = {};
this.init = function() {
var constants = this.refs.rpgConstants;
this.properties[constants.HP] = 600;
this.properties[constants.ATTACK] = 20;
this.properties[constants.DEFENSE] = 80;
}
});
/**
* 定义攻击技能
*/
JSBoot.define("attack", ["rpgConstants"], function() {
this.id = 0x1;
this.name = "攻击";
this.gameContext = null;
//技能算法
this.algorithm = function(role, pool) {
var constants = this.refs.rpgConstants;
var properties = role.properties;
for(var obj in pool) {
//这里可以规定射程,触发条件,此处可以实现群攻还是单体攻击
var triggerConditions = true;
if(!triggerConditions) {
continue;
}
//攻击 - 防御 = 减少的血量
var reduceBlood = role.properties[constants.ATTACK] - pool[obj].properties[constants.DEFENSE];
pool[obj].properties[constants.HP] -= reduceBlood;
}
}
});
```
然后你的游戏就可以这样往下开展了
```
var bootContext = JSBoot.run();
var pool = JSBoot.pool;
var monsters = {};
monsters.monster = pool["monster"];
var main = pool["main"];
//进攻前的怪物属性
console.log(JSON.stringify(pool["monster"]));
//主角调用攻击算法进攻怪物
pool["attack"].algorithm(main, monsters);
//进攻后的怪物属性
console.log(JSON.stringify(pool["monster"]));
```