我想定义一个这样的包:
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
我想使用 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)