這或許是你應用 layuiAdmin 時的主要焦點,在開發過程中,你的大部分精力都可能會聚焦在這里。它取代了服務端 MVC 架構中的 view 層,使得應用開發變得更具擴展性。因此如果你采用 layuiAdmin 的 SPA(單頁應用)模式,請務必要拋棄服務端渲染視圖的思想,讓頁面的控制權限重新回歸到前端吧!
views 目錄存放的正是視圖文件,你可以在該目錄添加任意的新目錄和新文件,通過對應的路由即可訪問。
注意:如果是單頁面模式,視圖文件通常是一段 HTML 碎片,而不能是一個完整的 html 代碼結構。
### 視圖與路由的關系
每一個視圖文件,都對應一個路由。其中 index.html 是默認文件(你也可以通過 config.js 去重新定義)。視圖文件的所在目錄決定了路由的訪問地址,如:
|視圖路徑 | 對應的路由地址
|---|---
|./views/user/index.html | /user/
|./views/user.html |/user
|./views/user/set/index.html |/user/set/
|./views/user/set.html |/user/set
|./views/user/set/base.html |/user/set/base
通過上述的表格列舉的對應關系,可以總結出:
- 當視圖文件是 index.html,那么路由地址就是它的上級目錄(相對 views),以 / 結尾
- 當視圖文件不是 index.html,那么路由地址就是它的上級目錄+視圖文件名,不以 / 結尾
值得注意的是:路由路徑并非最多只能三級,它可以無限極。但對應的視圖也必須存放在相應的層級目錄下
### 視圖中加載 JS 模塊
在視圖文件中,除了寫 HTML,也可以寫 JavaScript 代碼。如:
<div id=“LAY-demo-hello”>Hello layuiAdmin</div>
<script>
layui.use('admin', function(){
var $ = layui.jquery;
admin.popup({
content: $('#LAY-demo-hello').html()
});
});
</script>
如果該視圖對應的 JS 代碼量太大,我們更推薦你在 controller 目錄下新增一個業務模塊,并在視圖中直接 layui.use 去加載該模塊。下面以控制臺主頁 index.html 為例:
<div>html區域<div>
<script>
//加載 controller 目錄下的對應模塊
/*
小貼士:
這里 console 模塊對應 的 console.js 并不會重復加載,
然而該頁面的視圖可能會重新插入到容器,那如何保證腳本能重新控制視圖呢?有兩種方式:
1): 借助 layui.factory 方法獲取 console 模塊的工廠(回調函數)給 layui.use
2): 直接在 layui.use 方法的回調中書寫業務代碼,即:
layui.use('console', function(){
//同 console.js 中的 layui.define 回調中的代碼
});
這里我們采用的是方式1。其它很多視圖中采用的其實都是方式2,因為更簡單些,也減少了一個請求數。
*/
layui.use('console', layui.factory('console'));
</script>
當視圖被渲染后,layui.factory 返回的函數也會被執行,從而保證在不重復加載 JS 模塊文件的前提下,保證腳本能重復執行。