抽出了公共组件