Skip to content

layout 插件

我们实现一个简单的需求,给这个专栏的 demo 都添加页眉,页脚的广告链接。

初始化插件

初始化插件文件 plugin/index.ts,这是上一篇文章的内容,这里不多介绍,内容如下:

ts
import { IApi } from "umi";

export default (api: IApi) => {
  api.onStart(() => {
    console.log("Juejin Plugin");
  });
};

挂载

  • config/config.ts
ts
import { defineConfig } from "umi";

export default defineConfig({
  plugins: [require.resolve("../plugin/index")],
});

编写 layout

  • layouts/common.tsx
ts
import { Outlet } from "umi";

function CommonPage() {
  return (
    <>
      <div>页眉</div>
      <Outlet></Outlet>
      <div>页脚</div>
    </>
  );
}

export default CommonPage;

编写插件

ts
import { IApi } from "umi";
import { join } from "path";

export default (api: IApi) => {
  api.onStart(() => {
    console.log("Juejin Plugin");
  });

  api.addLayouts(() => {
    return [
      {
        id: "plugin1-layout",
        file: join(__dirname, "../src/layouts/common.tsx"),
      },
    ];
  });
};

这样就出现了页眉和页脚