Вам необходимо иметь
app-route : для реализации маршрутизации
Железные страницы : в основном переключатель страниц для загрузки требуемого компонента на спрос
в app-route.,
/* observer: Its a simple observer (basically a watch which holds current value & old value) that triggers whenever data changed in page property. We read the observer and calls a function to grab its earlier */
static get properties() {
return {
page:{
type: String,
reflectToAttribute: true,
observer: '_pageChanged'
}
};
}
_pageChanged(currentPage, oldPage){
console.log('CURRENT - ', currentPage);
console.log('OLD - ', oldPage);
switch(currentPage){
case 'home':
import('./home-comp.js').then()
break;
case 'about':
import('./about-comp.js').then()
break;
case 'contact':
import('./contact-comp.js').then()
break;
default:
this.page = 'home';
}
}
Но для первой загрузки., свойство страницы не содержит никакого значения и выдает undefined
.
Следовательно, мы можем использовать complex observer
для наблюдения за такими изменениями
static get observers(){
return ['_routerChanged(routeData.page)'];
}
_routerChanged(page){
console.log('CHANGED PAGE - ', page);
this.page = page || 'home';
}
Измененные данные маршрута не загружают компоненты, если только у нас есть iron-pages
. В основном это компонентный переключатель / загрузчик по требованию. Оберните все компоненты в main-app
в
Вот полное руководство по реализации маршрутизации в полимере 3 с использованием приложение-маршрут. Надеюсь, это поможет нажмите здесь
Вы можете получить строку из элемента и затем записать ее из учебника по lxml
str = etree.tostring(root, pretty_print=True)
или преобразовать в дерево элементов
et = etree.ElementTree(root)
et.write(sys.stdout, pretty_print=True)
Это работает на меня:
et = etree.ElementTree(document)
with open('sample.xml', 'wb') as f:
et.write(f, encoding="utf-8", xml_declaration=True, pretty_print=True)