🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
在用户登录页面后进入的是`index.html`页面,这个页面加载了整个后台管理系统的框架,我们可以看到`index.html`源代码中把整个页面分为了三部分,左侧菜单栏,右侧页面和右侧主题栏部分,其实就是利用beetl的`@include`把整个大的复杂的页面细化了,这样好维护 ![image_1c4toquv31u2arfe154i9r811sf13.png-19.6kB](https://img-blog.csdnimg.cn/2018122817464090) 左侧菜单和右侧主题栏部分在用户登录后会一直不变,除非刷新浏览器页面,动态变化的是页面右侧这部分,我们打开6个标签页,并打开浏览器F12调试 ![image_1c4tpunc91mhp1kho9k71cen11b81g.png-281.1kB](https://img-blog.csdnimg.cn/20181228174640135) 新建和切换标签,页面的地址不会变化,变化的是页面右侧的`iframe`这部分 下面我们分析一下右侧页面的组成,我们打开菜单管理页面,查看他的代码 ``` @layout("/common/_container.html"){ <div class="row"> XXXX等html代码... </div> <script src="${ctxPath}/static/modular/system/menu/menu.js"></script> @} ``` 整个页面被`@layout`所包围,`@layout`是beetl的引用布局(具体用法文档可以查看beetl的官方文档),Guns中内置了`/common/_container.html`这样一个布局,可以把`/common/_container.html`理解为一个html的抽象封装,我们每个页面都继承自这个模板,默认包含了一系列通用的js css引用等,这样写即简化了我们的开发和维护,又使我们的代码简洁有序,在`/common/_container.html`中的`${layoutContent}`就代表我们每个页面不同的html