Skip to content

Instantly share code, notes, and snippets.

@koras
Last active February 12, 2022 21:15
Show Gist options
  • Save koras/b945f521d4e631e74d0d6a6f304d43a5 to your computer and use it in GitHub Desktop.
Save koras/b945f521d4e631e74d0d6a6f304d43a5 to your computer and use it in GitHub Desktop.
class Component {
constructor() {
if (new.target === Component) {
throw new Error(`Can't instantiate Component, only concrete one.`);
}
}
get template() {
throw new Error(`You have to define template.`);
}
static createElement(template) {
const createNewTag = document.createElement(`div`);
createNewTag.innerHTML = template;
return createNewTag.firstChild;
}
render() {
this._element = Component.createElement(this.template);
this.setEventListener();
return this._element;
}
removeItem() {
this.removeEventListener();
this._element.remove();
this._element = null;
}
setEventListener() {}
removeEventListener() {}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment