小编sbk*_*ing的帖子

有没有办法在捆绑名称中包含文件扩展名?

我想定义一个这样的包:

bundles.Add(
    new StyleBundle("~/style.css").Include(
        //...
));
Run Code Online (Sandbox Code Playgroud)

如果捆绑包名称只是"~/style"这样,但是文件扩展名它总是返回404.我怀疑服务器在驱动器上搜索CSS和JS文件并忽略捆绑系统,但是我找不到其他人正在尝试在包名称中包含文件扩展名.这可能没有像URL重写这样的东西吗?

asp.net-mvc asp.net-mvc-4 bundling-and-minification asp.net-optimization

15
推荐指数
1
解决办法
3055
查看次数

依赖注入:推荐的 NPM 模块注入模式

我想使用 Inversify 来删除对 NPM 模块的硬依赖,并将它们作为构造函数参数注入。在我试一试之前,这似乎要简单得多。

事实证明,大多数绝对类型的模块不会费心导出接口,当它们这样做时,它们很少包含代表整个模块的接口。此外,当一个类被导出时,我仍然需要为那个类手动定义一个构造函数接口。

这意味着我必须为几乎每个模块做这样的事情:

import * as ConcreteModule from 'module'
import { ContainerModule } from 'inversify'

export interface ModuleInstance {
  // copy a ton of stuff from DefinitelyTyped repo,
  // because they didn't export any interfaces
}

export interface ModuleConstructor {
  new (...args: any[]): ModuleInstance
}

export const ModuleConstructorSymbol = Symbol('ModuleConstructor')

export const ModuleContainer = new ContainerModule((bind) => {
  bind<ModuleConstructor>(ModuleConstructorSymbol).toConstantValue(ConcreteModule)
})
Run Code Online (Sandbox Code Playgroud)

有什么办法可以简化其中的一些吗?注入 NPM 模块的开销太大了,而且 Inversify 文档中没有任何指导。管理您需要的所有不同导入/导出(接口、符号和容器)的名称是一件痛苦的事情,需要提出某种一致的命名方案。似乎没有 TypeScript 支持从模块自动创建接口的某种方式,就没有办法以理智的方式注入 NPM 包。

我想我可以只对模块使用 jest 的 automock 功能,但我真的不喜欢以这样一种方式设计我的代码,即它只能使用特定的测试框架进行单元测试。

如果我可以这样做,这似乎至少可以更容易实现:

import …
Run Code Online (Sandbox Code Playgroud)

typescript inversifyjs

5
推荐指数
1
解决办法
2946
查看次数