2016-01-23 6 views
3

Как можно отметить версии приложения Angular 2?Versioning Angular 2 App

Есть некоторые проблемы, такие как виды (через 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(); и использовать его в компонентах, как:

@Component({ 
    selector: 'my-component', 
    templateUrl: '/app/templates/my-component.html' + fileVersion, 
}) 

Так что я просто обновить браузер, чтобы увидеть изменения. В производстве используйте либо fileVersion = '';, либо как export var fileVersion = '?tmplv=v3';.

+0

Не ответ, но я использую 'отключить функцию cache' в' вкладке Network' хрома, который загружает каждый шаблон свежий каждый раз. Примечание: ** ** ** работает только при открытии инструментов разработчика. – SnareChops

+0

Thanks; проблема в том, как версия приложения в производстве? Например, когда пользователь посещает веб-сайт (приложение), нам нужно развернуть новую версию, которая что-то исправляет. –

+0

CDN и я не верю, что тайники продолжаются вечно. Существует ограниченный TTL, и он будет загружаться заново. – SnareChops

ответ

1

Я имею дело с той же проблемой. Я ищу что-то вроде filerev Node package. На данный момент мое решение состоит в использовании углового 2 для очистки кеша:

Сначала импортируйте RuntimeCompiler.

import { RuntimeCompiler} from '@angular/compiler/src/runtime_compiler';

Следующая впрыскивать RuntimeCompiler в конструкторе.

constructor(private _runtimeCompiler: RuntimeCompiler) Наконец, используйте это, чтобы очистить кеш. Обратите внимание, что это очищает все шаблоны.

this._runtimeCompiler.clearCache();