带锈和QuickJS的Fast Vue SSR

2020-07-19 14:42:55

使用渲染器::RendererPool;#[Tokio::Main]pub Async FN main()->;io::result<;()>;{let pool=Arc::New(Mutex::New(RendererPool::New(64);让渲染器=Warp::Path::Full()。Map(Move|Path:FullPath|{let renender=Arc::clone(&;pool);let s=path。As_str()。To_string();//当前只能向渲染器传递路径//完整的请求对象是一个WIP let Result=渲染器。锁定()。展开()。Render(S);Result});让routes=Warp::Path::Full()。和(渲染器)。Map(|_,result|Reply::HTML(Result));

到目前为止,使用线程池和通道与Warp路由处理程序通信。目标是获得一个完整的类似节点的IncomingMessage对象,作为$ssrContext.req可用。它已经包括一个/static处理程序,并通过Rollup在客户机上提供代码拆分构建。

Node的性能远远超过QuickJS。尤其是在有足够的内核和内存的情况下。但是,QuickJS非常小,内存消耗非常低,因此在Rust shell中线程运行它可以使用非常少的资源获得非常高的吞吐量。