bearcat 0.3 版本在圣诞正式推出
bearcat 不再仅仅支持node.js环境,浏览器环境也完美支持
意味着 前端也可以编写基于自描述js对象的依赖注入
依赖关系基于js对象属性的自描述,无需使用require, define来进行模块管理
同时bearcat还内建了script脚本异步加载机制,无需打包,前端模块化开发所见即所得
10秒例子,car 依赖 engine,解析到car依赖后,engine就自动加载并注入到car中
var Car = function() {
this.$id = "car";
this.$engine = null;
}
Car.prototype.run = function() {
this.$engine.run();
console.log('run car...');
}
bearcat.module(Car, typeof module !== 'undefined' ? module : {});
var Engine = function() {
this.$id = "engine";
}
Engine.prototype.run = function() {
console.log('run engine...');
}
bearcat.module(Engine, typeof module !== 'undefined' ? module : {});
详情还请到官网 http://bearcatjs.org/
sweet例子 http://bearcatjs.org/examples/
@i5ting 恩,原理都是解析依赖关系,然后注入
bearcat 比 angular.js 的依赖注入,还多了异步加载script
这样子,开发者就不用自己管理script的加载
或者蛋疼的再用AMD这种模块加载器来描述依赖关系,再进行加载
@fantasyni 支持这种注入不? var Car = function() { this.$id = "car"; this[“$engine”] = null;//这里不使用点域声明属性,使用[]括号 var engineName = "$engine"; this[engineName] = null;//这里不使字符串,使用变量 };
Car.prototype[“$engine”] = null;//这里不使用点域声明属性,使用[]括号
@hainee
哈哈,暂时不支持,因为还要考虑 放在参数列表里面的注入形式,所以目前的做法是 function.toString() 然后做正则匹配
你这种支持如果不考虑参数列表里面的话,可以直接先 new 一个对象出来,然后遍历一下属性就肯定没问题了
不过这个确实是有这么个问题哈