如何标记Angular2应用程序的版本?
有一些问题,如视图(通过templateUrl
)无法在路由视图(子组件)中更新。我试过像
<script>
System.config({
// baseURL: '/',
packages: {
app: {
format: 'register',
defaultExtension: 'js'
}
}
});
System.import('v1/app/boot')
.then(null, console.error.bind(console));
</script>
或者
app/v1/boot
玩base
但没用。注意:仅作为记录,在开发时,缓存模板(通过
templateUrl
引入)的速度慢得令人恼火。应该使用匿名会话或清除浏览器等。我通过在export var fileVersion = '?tmplv=' + Date.now();
这样的模块中引入一个全局var并在如下组件中使用它来解决这个问题:@Component({
selector: 'my-component',
templateUrl: '/app/templates/my-component.html' + fileVersion,
})
所以我只需要刷新浏览器来查看更改。在生产中使用
fileVersion = '';
或类似的export var fileVersion = '?tmplv=v3';
。 最佳答案
我在处理同样的问题。
我正在寻找类似filerev node包的东西。
现在,我的解决方案是使用Angular2清除缓存:
首先导入运行时编译器。import { RuntimeCompiler} from '@angular/compiler/src/runtime_compiler';
接下来在构造函数中注入运行时编译器。constructor(private _runtimeCompiler: RuntimeCompiler)
最后用它来清除缓存。注意:这将清除所有模板。this._runtimeCompiler.clearCache();