分离ui和functions