环境支持和 polyfills
InversifyJS 需要一个现代的 JavaScript 引擎,需要支持 Promise、 Map、 Metadata Reflection API 和 Proxy 对象。 如果你的环境不支持这些的化,就需要引入 shim 或者 polyfill。
元数据反射接口
:警告:
reflect-metadata
polyfill 仅在进入应用时需要引入一次,因为反射对象是一个全局单例。更多详情参见这里。
始终需要。使用reflect-metadata作为 polyfill。
$ npm install reflect-metadata
reflect-metadata 的类型定义已在 npm 包中被包含。你需要添加如下引用到 tsconfig.json
中的类型字段:
"types": ["reflect-metadata"]
最后,引入 reflect-metadata。如果你使用 Node.js 那么可以用:
import "reflect-metadata";
如果你在使用网页浏览器那么可以使用 script 标签:
<script src="./node_modules/reflect-metadata/Reflect.js"></script>
这将创建全局反射对象。
Map
Map 在使用 InversifyJS 3 或者更高版本时需要。
大多数现代 JavaScript 引擎支持 map,但如果你需要支持旧浏览器,那么需要使用 map polyfill (比如 es6-map)。
Promise
多数现代 JavaScript 引擎支持 promise,但如果你需要支持就浏览器,那么需要使用 promise polyfill (比如 es6-promise 或者 bluebird)。
Proxy
如今(2016年9月)代理还没有被很好地支持,所以你很可能需要使用 proxy polyfill。比如,我们使用 harmony-proxy 作为 polyfill 来运行我们的单元测试。