SPA框架