{"id":22530165,"url":"https://github.com/ultimaweapon/dovm-core","last_synced_at":"2025-10-30T02:07:29.282Z","repository":{"id":46282648,"uuid":"416299508","full_name":"ultimaweapon/dovm-core","owner":"ultimaweapon","description":"Next generation front-end framework. It's powerful!","archived":false,"fork":false,"pushed_at":"2022-04-12T09:48:24.000Z","size":19,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2024-10-23T00:12:01.688Z","etag":null,"topics":["dovm","framework","single-page-application","spa","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ultimaweapon.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-10-12T10:59:04.000Z","updated_at":"2024-09-08T13:23:04.000Z","dependencies_parsed_at":"2022-09-26T16:20:21.219Z","dependency_job_id":null,"html_url":"https://github.com/ultimaweapon/dovm-core","commit_stats":null,"previous_names":["ultimicro/dovm-core"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ultimaweapon%2Fdovm-core","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ultimaweapon%2Fdovm-core/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ultimaweapon%2Fdovm-core/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ultimaweapon%2Fdovm-core/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ultimaweapon","download_url":"https://codeload.github.com/ultimaweapon/dovm-core/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245972672,"owners_count":20702721,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dovm","framework","single-page-application","spa","typescript"],"created_at":"2024-12-07T07:18:34.475Z","updated_at":"2025-10-30T02:07:29.275Z","avatar_url":"https://github.com/ultimaweapon.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Document Object View Model\n[![npm (scoped)](https://img.shields.io/npm/v/@dovm/core)](https://www.npmjs.com/package/@dovm/core)\n\nDocument Object View Model (DOVM) is a next generation framework for building a website by utilizing a full power of TypeScript.\n\n## Problems of current frameworks\n\n### React\n\n- Virtual DOM.\n- JSX is a mess.\n\n### Angular\n\n- Too big.\n- Too complicated.\n- No freedom for project structure.\n- Slow.\n\n### Vue\n\n- Virtual DOM.\n- No type safety in template.\n- Limited type safety between component.\n\n### Svelte\n\n- TypeScript support is horrible.\n- Reactivity rely on compiler.\n\n### What is the problem with Virtual DOM?\n\nWell, this blog from Svelte should explain the problems of Virtual DOM: https://svelte.dev/blog/virtual-dom-is-pure-overhead\n\nIf you are an experienced React or Vue developers I believed you already faced the problem by yourself.\n\n## DOVM\n\nAfter we developed Cloudsumé, we decided to create our own framework due to all of available frameworks solve one problem but introduce another problem. Right now we currently experiment DOVM with our own company website: https://ultima.inc\n\n### Design goal\n\n- No Virtual DOM.\n- Freedom on project structure.\n- Simple and lightweight.\n- HTML template instead of JSX, which is compile down into a render function.\n- 100% type safety with TypeScript even in the template.\n- Fully asynchronous everywhere.\n- Direct access on DOM when you need it without any barrier.\n- Automatic update only affected DOM when binding data updated using observer pattern.\n- Direct access on child component.\n- Easy on unit testing due to Dependency Injection.\n\n### Runtime requirements\n\n- ES2017\n\n## Usage\n\n### Install\n\n```sh\nnpm i --save-dev @dovm/core\n```\n\n### webpack configurations\n\nRefer to [dovm-loader](https://github.com/ultimicro/dovm-webpack) for how to configuring webpack.\n\n### Type information for DOVM file\n\nBefore you can import DOVM file into TypeScript file you need to create `.d.ts` file with the following content in the root of repository:\n\n```ts\n// dovm.d.ts\ndeclare module '*.dovm' {\n  export function render(): Promise\u003cvoid\u003e;\n}\n```\n\n### Settings for Visual Studio Code\n\nCurrently there are no extensions for VS Code to support DOVM. A simple workaround for syntax highlighting is to treat DOVM file as HTML file like this:\n\n```json\n{\n  \"files.associations\": {\n    \"*.dovm\": \"html\"\n  }\n}\n```\n\n### Application root\n\nThe following code will replace your `body`:\n\n```ts\nimport { AppContainer, ComponentActivator, ServiceCollection } from '@dovm/core';\nimport App from './app';\n\nbootstrap();\n\nasync function bootstrap() {\n  const services = new ServiceCollection();\n\n  services.add(ComponentActivator, () =\u003e new ComponentActivator());\n\n  const app = new App({ services, container: new AppContainer() });\n  await app.render();\n}\n```\n\n```ts\n// app.ts\nimport { Component } from '@dovm/core';\nimport { render } from './app.dovm';\n\nexport default class App extends Component {\n}\n\nApp.prototype.render = render;\n```\n\n```html\n\u003c!-- app.dovm --\u003e\n\u003ctemplate\u003e\n  \u003cbody\u003eHello, world!\u003c/body\u003e\n\u003c/template\u003e\n```\n\n### Router\n\nRefer to [@dovm/router](https://github.com/ultimicro/dovm-router) for how to use.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fultimaweapon%2Fdovm-core","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fultimaweapon%2Fdovm-core","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fultimaweapon%2Fdovm-core/lists"}