Snapshot of Tencent/omi: 13.3k★, TypeScript, Frontend. Web Components Framework - Web组件框架
Snapshot summary built from the project's own GitHub metadata — there's no written TopGit review yet. The page will update automatically when a full review is published.
WHY NO REVIEW YET
TopGit writes full reviews for the most-starred, most-requested repositories. This page is a snapshot until then — see the READ ME tab for the original README in full.
import { h } from 'omi'
import './counter-demo'
render(<counter-demo />, document.body)
// or
import { CounterDemo, Other } from './counter-demo'
// Prevent tree Shaking when importing other things
render(<CounterDemo />, document.body)
// or
document.body.appendChild(document.createElement('counter-demo'))
Install
npm i omi
To quickly create an Omi + Vite + TS/JS project:
$ npx omi-cli init my-app # or create js project by: npx omi-cli init-js my-app
$ cd my-app
$ npm start # develop
$ npm run build # release
To quickly create an Omi + Router + Signal + Suspense + Tailwindcss + Vite + TS project:
$ npx omi-cli init-spa my-app
$ cd my-app
$ npm start # develop
$ npm run build # release
Packages
Core packages
omi - Implementation of omi framework.
omi-form - Powerful, simple and cross frameworks form solution.
lucide-omi - Lucide icon collection for omi.
omiu - Hope to create the best web components. For example, the powerful vchart and vtable
omi-router - Create SPA of omi framework.
omi-cli - To quickly create an Omi + Vite + TS/JS project.
Starter kits (not published to npm)
omi-elements - Tailwind Element Omi UI KIT.
omi-starter-spa - A starter repo for building single page app using Omi + OmiRouter + Tailwindcss + TypeScript + Vite + Prettier.
omi-starter-ts - A starter repo for building web app or reusable components using Omi in TypeScript base on Vite.
omi-starter-tailwind - A starter repo for building web app or reusable components using Omi + Tailwindcss + TypeScript + Vite.
omi-starter-js - A starter repo for building web app or reusable components using Omi in JavaScript base on Vite.
omi-vue - Vue SFC + Vite + OMI + OMI-WeUI.
Components
omi-weui - WeUI Components of omi.
omi-auto-animate - Omi version of @formkit/auto-animate.
omi-transition - Applying animations when an component is entering and leaving the DOM.
omi-ripple - A lightweight component for adding ripple effects to user interface elements.
Examples (not published to npm)
snake-game-2tier - SNake Game with Signal class
snake-game-3tier - SNake Game with reactivity functions
omi-tutorial - Source code of omi tutorial.
If you want to help the project grow, start by simply sharing it with your peers!
Share via Dev.to
Share via Twitter
Share via Facebook
Share via LinkedIn
Share via Pinterest
Share via Reddit
Share via StumbleUpon
Share via Vkontakte
Share via Weibo
Share via Hackernews
Thank you!
Usage
TodoApp with reactivity functions
Data oriented programming
In data-oriented programming, the focus is on the data itself and the operations on the data, rather than the objects or data structures that hold the data. This programming paradigm emphasizes the change and flow of data, and how to respond to these changes. The TodoApp with reactivity functions is a good example of this, using the concepts of reactive programming, where the UI automatically updates to reflect changes in the data (i.e., the to-do list).
import { render, signal, computed, tag, Component, h } from 'omi'
const todos = signal([
{ text: 'Learn OMI', completed: true },
{ text: 'Learn Web Components', completed: false },
{ text: 'Learn JSX', completed: false },
{ text: 'Learn Signal', completed: false }
])
const completedCount = computed(() => {
return todos.value.filter(todo => todo.completed).length
})
const newItem = signal('')
function addTodo() {
// api a
todos.value.push({ text: newItem.value, completed: false })
todos.update() // Trigger UI auto update
// api b, same as api a
// todos.value = [...todos.value, { text: newItem.value, completed: false }]
newItem.value = '' // Changing the value type can automatically update the UI
}
function removeTodo(index: number) {
todos.value.splice(index, 1)
todos.update() // Trigger UI auto update
}
@tag('todo-list')
class TodoList extends Component {
onInput = (event: Event) => {
const target = event.target as HTMLInputElement
newItem.value = target.value
}
render() {
return (
<>
<input type="text" value={newItem.value} onInput={this.onInput} />
<button onClick={addTodo}>Add</button>
<ul>
{todos.value.map((todo, index) => {
return (
<li>
<label>
<input
type="checkbox"
checked={todo.completed}
onInput={() => {
todo.completed = !todo.completed
todos.update() // Trigger UI auto update
}}
/>
{todo.completed ? <s>{todo.text}</s> : todo.text}
</label>
{' '}
<button onClick={() => removeTodo(index)}>❌</button>
</li>
)
})}
</ul>
<p>Completed count: {completedCount.value}</p>
</>
)
}
}
render(<todo-list />, document.body)
Auto Import h
vite.config.js:
import { defineConfig } from 'vite'
export default defineConfig({
esbuild: {
jsxInject: "import { h } from 'omi'",
jsxFactory: "h",
jsxFragment: "h.f"
}
})
You can inject code during construction, so you don't have to manually export h.
Define Cross Framework Component
The case of using Omi component in Vue is as follows:
The most recent commit recorded on Tencent/omi was 4 months ago, based on the GitHub push timestamp. The repository has 1.3k forks — one of the better signals of community interest.
How many stars does Tencent/omi have?
Tencent/omi has 13.3k GitHub stars — refresh the page for the live number, or check github.com/Tencent/omi. TopGit mirrors GitHub's count but does not claim minute-by-minute accuracy.
What language is Tencent/omi written in?
Tencent/omi is written primarily in TypeScript. GitHub's language field is based on the largest share of bytes in the default branch.
The project maintains a homepage at https://omi.cdn-go.cn/. The README tab on this page also usually contains screenshots and a quickstart.
Where do I read more about Tencent/omi?
This TopGit page is a snapshot — the READ ME tab shows the project's own README content (links stripped, images preserved). The GitHub repository at github.com/Tencent/omi is the definitive source.
Read full README in the tab above.
Curious whether omi is right for you?
Let ChatGPT, Claude, or Perplexity look into it — click below and see what AI actually says about omi.