{"id":20434009,"url":"https://github.com/zewa666/vlib","last_synced_at":"2026-06-09T16:31:16.401Z","repository":{"id":151586153,"uuid":"77918324","full_name":"zewa666/vlib","owner":"zewa666","description":"VLib - A simple VanillaJS View Library","archived":false,"fork":false,"pushed_at":"2017-01-17T16:28:06.000Z","size":36,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-11-06T21:24:02.799Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","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/zewa666.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-01-03T13:13:12.000Z","updated_at":"2020-06-26T20:45:30.000Z","dependencies_parsed_at":"2023-07-04T20:47:21.048Z","dependency_job_id":null,"html_url":"https://github.com/zewa666/vlib","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/zewa666/vlib","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zewa666%2Fvlib","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zewa666%2Fvlib/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zewa666%2Fvlib/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zewa666%2Fvlib/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zewa666","download_url":"https://codeload.github.com/zewa666/vlib/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zewa666%2Fvlib/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34116456,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-09T02:00:06.510Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2024-11-15T08:23:20.227Z","updated_at":"2026-06-09T16:31:16.381Z","avatar_url":"https://github.com/zewa666.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# VLib - A simple VanillaJS View Library\n\nA simple view library, meant to show how to build the markup purely with JavaScript\nand native DOM Operations.\n\nFeatures:\n\n* It leverages babel-transform-jsx to make use of the JSX syntax if preferred.\n* It uses [diffhtml](https://www.npmjs.com/package/diffhtml) for performant HTML updates.\n* Redux is used to have a single-state propagation and dev-controllable rerenders\n* Redux DevTools for nice state monitoring\n* Server rendering with initial state propagation\n* Karma/Jasmine for Unit Testing\n* Webpack for build/bundle automation\n\n## How to run the example\n\nIn your terminal run:\n\n```bash\n// install dependencies\nnpm install\n\n// run babel/webpack + http-server\nnpm start\n```\n\nIf you want to see the example using server side initial rendering use:\n\n```bash\nnpm run server\n```\n\nThis will serve the app from the node application server.\n\n## Notes on server side prerendering\n\nWhen the server renders the markup it will send it as part of the initial request. As such the user\ncan immediatelly see the rendered UI. One problem though is that all event listeners aren't attached\nas they'd need client side processing.\nAs such the frontend needs to rebuild the page immediatelly to attach all those handlers. In order to distinguish\nthe intial prerender the sent initial state will contain a prop `isPrerendered` set to `true`.\nAfter setting up the store and performing the first render, the app should dispatch a new action `prerenderingDone`\nexported by the VLib library and toggle `isPrerendered` to `false`.\n\nThis way, inspecting the state history, one now can clearly differentiate the `@@INIT` and `prerendering done` state updates.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzewa666%2Fvlib","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzewa666%2Fvlib","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzewa666%2Fvlib/lists"}