入口文件分析
入口文件获取
可以到看到页面的所有内容都渲染在id=roo
t的元素下面,通过这个html
的关键元素,我们找到document.ejs
文件地址:/packages/app/client/src/pages/document.ejs
<div id="root"></div>
<script>
var match = location.pathname.match(/^\/apps\/([^/]*)\//);
window.routerBase = match ? match[0] : "/";
</script>
但是在这个文件并没有看到任何引入script标签的代码,我还是无从得知是如何将内容插入到root
下面的
继续寻找可以发现,pages同级有一个.umi文件夹,由此可知可能是.umi做了一些操作造成的。
通过查看umi官网配合他的 /packages/app/client/.umirc.ts
文件,我们可以知晓
- document.ejs 是 umi的默认模版,
root
是umi
规定的默认根节点 - 路由为
/
会访问pages/index
routes: [{ path: '/', exact: false, component: '@/pages/index' }],
由此,我们重点需要查看page/index文件
import '@/theme';
import { Application } from '@nocobase/client';
export const app = new Application({
apiClient: {
baseURL: process.env.API_BASE_URL,
},
dynamicImport: (name: string) => {
return import(`../plugins/${name}`);
},
});
export default app.render();
可以看到,它调用了@nocobase/client
下的Application
方法