All Projects → yisar → voe

yisar / voe

Licence: MIT license
🐙 Resumable SSR framework.

Programming Languages

javascript
184084 projects - #8 most used programming language
CSS
56736 projects
HTML
75241 projects

Projects that are alternatives of or similar to voe

universal
A counterpart to common package to be used with Angular Universal
Stars: ✭ 115 (-83.21%)
Mutual labels:  server-side-rendering
nars
Server rendered React Native
Stars: ✭ 85 (-87.59%)
Mutual labels:  server-side-rendering
ultron-ele
The world’s fastest LMS engine based on Gatsby -- Deliver knowledge with fun!
Stars: ✭ 27 (-96.06%)
Mutual labels:  server-side-rendering
universal-react-relay-starter-kit
A starter kit for React in combination with Relay including a GraphQL server, server side rendering, code splitting, i18n, SEO.
Stars: ✭ 14 (-97.96%)
Mutual labels:  server-side-rendering
rsp
A server-state reactive Java web framework for building real-time user interfaces and UI components.
Stars: ✭ 35 (-94.89%)
Mutual labels:  server-side-rendering
react-ssr-error-boundary
No description or website provided.
Stars: ✭ 33 (-95.18%)
Mutual labels:  server-side-rendering
ves
Vue SSR(Server Side Render) Web Framework for Egg
Stars: ✭ 23 (-96.64%)
Mutual labels:  server-side-rendering
react-parcel-ssr
React Server Side Rendering with Parceljs & Babel
Stars: ✭ 18 (-97.37%)
Mutual labels:  server-side-rendering
boldr
React based CMF / blogging engine using Redux, Postgres, Node, and more...
Stars: ✭ 78 (-88.61%)
Mutual labels:  server-side-rendering
plug-react
React components and hooks to plug your React applications into Croct.
Stars: ✭ 76 (-88.91%)
Mutual labels:  server-side-rendering
md-svg-vue
Material design icons by Google for Vue.js & Nuxt.js (server side support & inline svg with path)
Stars: ✭ 14 (-97.96%)
Mutual labels:  server-side-rendering
angular-httpclient
Angular 15 Example HttpClient
Stars: ✭ 21 (-96.93%)
Mutual labels:  server-side-rendering
sveltekit-starter
Sveltekit starter project created with sveltekit, typescript, tailwindcss, postcss, husky, and storybook. The project has the structure set up for the scaleable web application.
Stars: ✭ 482 (-29.64%)
Mutual labels:  server-side-rendering
prism
(No longer in development). Experimental compiler for building isomorphic web applications with web components.
Stars: ✭ 106 (-84.53%)
Mutual labels:  server-side-rendering
vue-ssr-example
Ready for use Example for Vue + Vuex + TS + SSR + Jest
Stars: ✭ 23 (-96.64%)
Mutual labels:  server-side-rendering
docsify-ssr-demo
NOTICE: This repo is outdated and SSR is work-in-progress.
Stars: ✭ 61 (-91.09%)
Mutual labels:  server-side-rendering
react-critical-css
Extracts your critical CSS.
Stars: ✭ 18 (-97.37%)
Mutual labels:  server-side-rendering
webpack-isomorphic
A lightweight solution for the server-side rendering of Webpack-built applications.
Stars: ✭ 21 (-96.93%)
Mutual labels:  server-side-rendering
moveIt
⏱️ Recupere o foco e seja mais produtivo com o Move.it!
Stars: ✭ 17 (-97.52%)
Mutual labels:  server-side-rendering
koa-react-redux-universal-boilerplate
[Unmaintained] A fullstack Koa + React + Redux Universal Boilerplate to speed up your development process.
Stars: ✭ 22 (-96.79%)
Mutual labels:  server-side-rendering

image

Asta NPM version NPM downloads

🎯 Asta is a highly specialized full stack framework for SSR. It has no vdom on the server side and 0 js on the client side. Finally, it gets best QPS and Google scores.

Note this is early Development! It is not recommended to use this for anything serious yet.

  • no VDOM on server, 0 javascript on client.
  • write JSX and react-like syntax.

Run demo

yarn start

Syntax

input:

const addCount = $import('./action.js#addCount')

// state: will run in server and inject to client
export const loader = async (req) => {
	return {
		count: req.query.count,
	}
}

// view: will run in both client and server, but s() in server h() in client
export default ({ count }) => {
	return (
		<main>
			<button onclick={addCount}>{count}</button>
		</main>
	)
}

output:

<main><button $onclick="./action/count.js?mod=addCount">0</button></main>

Compiler

Jointing on server, Resumable on client

// jsx input
const view = ({list}) => <div>{list.map(i=><i>{i}</i>)}</div>
// server output
const view = ({list}) => s.openTag('div')+s.expression(list.map(i=>s.openTag('i')+s.text(i)+s.closeTag('i')))+s.closeTag('div')
// client output
const view = ({list}) => h('div',{children:[list.map(i=>h('i',{children:[i]}))]})

How and why

How is This Different from Next.js, Remix.js, Fresh.js or Other SSR Solutions?

There are two biggest differences.

First, the server side. Asta does not run any VDOM-based framework runtime. It generates the s function through the compiler, which is only used for string splicing. At this point, it is a little like Marko.js.

Second, on the client side, Asta is 0 javascript, and it does not require any hydration. This is a new concept, called Resumable, a little like qwik.js.

So, Asta ≈ Marko + Qwik.

Because there is no Vdom overhead on the server side, Asta can get super high QPS and throughput.

Then because the client side is 0 js, it can continuously get a high Google score, and the score will not decrease with the increase of components.

How is This Different from Qwik.js or Marko.js?

In principle, asta is the sum of them, Asta is a double optimization, but the implementation details are quite different.

At the same time, Asta attempts to migrate Elm's mental model to SSR.

There is only a single state tree, and components are pure functions without states or any overhead.

These helps to completely solve performance problems.

Why not Fre SSR or and other Vdom-based frameworks?

Although JSX of fre can also be optimized at compile time, and the client side can also be selective hydrated, it is important that Fre or other Vdom-based framework components are not completely cost free.

说人话?

Asta 的核心是根治性能问题,已知的 SSR 框架有几个性能瓶颈:

  1. server 端的 vdom 开销,组件开销
  • server 端生成和遍历 vdom 成本是巨大的,Asta 在 server 端没有 vdom,它通过一个特殊的编译器将 jsx 编译成 s 函数,只用来拼接字符串

  • server 端组件的初始化,状态更新,生命周期的开销,也是巨大的,Asta 也有组件,但它的组件是纯函数,也只用来拼接字符串,没有任何私有状态和生命周期,这得益于 Elm 的心智模型,单 state tree,组件是纯函数

  1. client 0 js
  • 一个新兴的概念,叫做 Resumable,client 不再水合,而是将必要的信息序列化到 html 里,然后直接从 html 进行恢复,所有的 js 都根据交互懒加载,这样就可以做到 0 js,0 水合,而且这是 O(1) 的,不会因为业务增长而性能下降

Asta 双重优化,彻底根除 SSR 的性能瓶颈

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].