👉导读
👉目录
<script> let count = 0; const handleClick = () => { count += 1; }</script><div> count: {count} <button on:click={handleClick}>inc</button></div><div class="block">a block</div><button class="toggle-button">toggle block</button><script>const block = document.querySelector('.block');const toggleButton = document.querySelector('.toggle-button');let blockVisible = true;toggleButton.addEventListener('click', () => { blockVisible = !blockVisible; block.style.display = blockVisible ? 'block' : 'none'; });</script><template><div v-if="blockVisible">a block</div><button @click="handleClick">toggle block</button></template><script setup>const blockVisible = ref(true);const handleClick = () => {blockVisible.value = !blockVisible.value;}</script>
<div class="todo-list"><div>new item 1<button>X</button></div><div>new item 2<button>X</button></div></div><button>add item</button><script>const todoList = document.querySelector('.todo-list');const addButton = document.querySelector('button');addButton.addEventListener('click', () => {const todoItem = document.createElement('div');const deleteButton = document.createElement('button');todoItem.appendChild(deleteButton);todoItem.innerText = 'new item';todoList.appendChild(todoItem);});</script>
<div class="todo-list"></div><button>add item</button><script>class TodoItem {constructor(content) {const todoItem = document.createElement('div');const deleteButton = document.createElement('button');todoItem.appendChild(deleteButton);todoItem.innerText = content;this.dom = todoItem;}appendTo(parent) {return parent.appendChild(this.dom);}}const todoList = document.querySelector('.todo-list');const addButton = document.querySelector('button');new TodoItem('new item 1').appendTo(todoList);new TodoItem('new item 2').appendTo(todoList);addButton.addEventListener('click', () => {new TodoItem().appendTo(todoList);});</script>
<template><div>new item<button>delete</button></div></template>
<div class="todo-list"><todo-item v-for="item in todoItems" /></div><button @click="handleClick">add item</button><script setup>import TodoItem from './todo-item.Vue';const todoItems = [];const handleClick = () => {todoItems.push({});};</script>
interface IUIOperations {createElement(type: ElementType): Element;removeElement(ele: Element);updateElement(ele: Element);setProperty(ele: Element, propName: string; propValue: string);removeProperty(...}
class DOMUIOperations implements IUIOperations {createElement(type: ElementType): Element {return new DOMElement(document.createElement(type.getName()));}removeElement(ele: Element) {...}updateElement(ele: Element)...}
class NativeUIOperations implements IUIOperations {createElement(type: ElementType): Element {const nativeHandle = xxos.createComponent(type.getName());return new NativeElement(nativeHandle);}removeElement(ele: Element) {...}updateElement(ele: Element)...}
<div></div><button>reverse</button><script>const div = document.querySelector('div');const button = document.querySelector('button');let msg = 'hello, world';div.innerText = msg;button.addEventListener('click', () => {msg = msg.split('').reverse().join('');div.innerText = msg;});</script>
<div>{msg}</div><button on:click="handleClick">reverse</button><script>let msg = 'hello, world';const handleClick = () => {msg = msg.split('').reverse().join('');};</script>