Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 国产成人精品日本,亚洲免费在线视频观看,一区二区免费视频

          整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          Go Web 框架 Gin 學習3 - 模板渲染多級目錄與模板傳參

          、LoadHTMLGlob多級目錄

          	engine.LoadHTMLGlob("template1/**/*")
          	func (engine *Engine) LoadHTMLGlob(pattern string)

          LoadHTMLGlob有1個參數,可以使用通配符,"template1/*"表示template1目錄下的所有文件

          當模板目錄template1結構如下:

          	└─template1
              ├─admin
              │      index.html
              │
              ├─index
              │      index.html
              │
              └─users
                      index.html

          那么需要注意的是,每個index.html都要有{{define "..."}}......{{end}},將html包裹起來,

          可以理解為給index.html起個別名,用于區分不同文件夾下相同名字文件的別名。

          因為c.HTML(http.StatusOK, "index2", nil)中的index2就是所定義的別名

          define "...":中的...就是別名

          ......:是html內容

          2、模板傳參

          	func admin(c *gin.Context) {
          		c.HTML(http.StatusOK, "admin_index", gin.H{
          			"user": "admin",
          			"pass": "123456",
          		})
          	}

          其中gin.H是map[string]interface{}的別名,

          c.HTML有3個參數,

          	func (c *Context) HTML(code int, name string, obj interface{})

          HTML renders the HTTP template specified by its file name. It also updates the HTTP code and sets the Content-Type as "text/html".

          作用是渲染模板文件,將響應頭的Content-Type設置為 "text/html"

          code int:響應碼,可以寫成http.StatusOK這樣的常量,也可以直接寫成200,因為http.StatusOK的常量值就是200,當然有可以寫成相匹配的響應碼,這里只是以正常響應的200舉例

          name string:這里就是模板名,默認是文件名,如果使用{{define "..."}}......{{end}}進行了定義,那么就可以寫成別名。

          obj interface{}:這里就是傳入模板的對象,類型是空接口類型,也就是說,可以傳入任意類型的值,模板都是可以接受的,在func admin(c *gin.Context)示例中,傳入了gin.H這樣的map類型,那么就可以在模板文件中進行使用。

          示例代碼:

          package main
          
          import (
             "github.com/gin-gonic/gin"
             "net/http"
          )
          
          func main() {
             engine := gin.Default()
             engine.LoadHTMLGlob("template1/**/*")
             engine.GET("/admin", admin)
             engine.GET("/index", index)
             engine.GET("/users", users)
             _ = engine.Run("127.0.0.1:80")
          }
          
          func admin(c *gin.Context) {
             c.HTML(http.StatusOK, "admin_index", gin.H{
                "user": "admin",
                "pass": "123456",
             })
          }
          func index(c *gin.Context) {
             c.HTML(http.StatusOK, "index_index", nil)
          }
          
          func users(c *gin.Context) {
             c.HTML(http.StatusOK, "users_index", nil)
          }
          

          模板文件:

          執行結果:

          shenlan-ui (UI根目錄)
          |--src (核心樣式代碼)
          | |--shenlan-ui.css (UI的主樣式文件)
          | |--common.css (公共樣式文件)
          | |--reset.css (CSS-Reset文件)
          | |--layout.css (組件文件:圖標樣式)
          | |--... (其他組件文件)
          |
          |--demo (演示文件目錄)
          |--layout.html (布局樣式文件)
          |--... (其他組件的樣式文件)

          rc/reset.css

          /*
          * @Author: xutao
          * @Date: 2019-04-12 10:06:29
          * @Last Modified by: xutao
          * @Last Modified time: 2019-04-29 16:37:40
          */
          /* 去掉所有元素的內外邊距 */
          html, body, div, span,
          h1, h2, h3, h4, h5, h6, p, pre,
          a, img, ul, li, form, label, input,
          table, tbody, tfoot, thead, tr, th, td,
          audio, video {
          margin: 0;
          padding: 0;
          }
          /* 統一全局字體 */
          body {
          font-family: -apple-system-font,BlinkMacSystemFont,"Helvetica Neue","PingFang SC","Hiragino Sans GB","Microsoft YaHei UI","Microsoft YaHei",Arial,sans-serif
          }
          /* 列表元素去掉默認的列表樣式 */
          ol, ul {
          list-style: none;
          }
          /* Table元素的邊框折疊 */
          table {
          border-collapse: collapse;
          border-spacing: 0;
          }
          /* 去掉默認的下劃線 */
          a{
          text-decoration: none;
          }
          /* 去掉input自帶的邊緣效果和背景顏色 */
          input{
          outline: none;
          background: none;
          }

          /src/common.css

          1 區分屏幕寬度的方式

          /* 屏幕寬度小于340px時的樣式 */
          @media (max-width: 340px){ /* 樣式1 */ }
          /* 屏幕寬度在340px至410px時的樣式 */
          @media (min-width: 340px) and (max-width: 410px){ /* 樣式2 */ }
          /* 屏幕寬度大于410px時的樣式 */
          @media (min-width: 410px){ /* 樣式3 */ }


          精簡樣式:

          /* 屏幕寬度在340px至410px時的樣式 */
          /* 樣式2 */
          /* 屏幕寬度小于340px時的樣式 */
          @media (max-width: 340px){ /* 樣式1 */ }
          /* 屏幕寬度大于410px時的樣式 */
          @media (min-width: 410px){ /* 樣式3 */ }

          這樣屏幕適配的框架就完成了

          2 元素尺寸的指定

          /* 屏幕寬度在340px至410px時,基準尺寸使用20px */
          html{
          font-size: 20px;
          }
          /* 屏幕寬度小于340px時,基準尺寸使用18px */
          @media (max-width: 340px){
          html{
          font-size: 18px;
          }
          }
          /* 屏幕寬度大于410px時,基準尺寸使用22px */
          @media (min-width: 410px){
          html{
          font-size: 22px;
          }
          }

          3 按比例劃分屏幕

          最終common.css樣式

          /*
          * @Author: xutao
          * @Date: 2019-06-20 22:16:01
          * @Last Modified by: xutao
          * @Last Modified time: 2019-06-20 23:03:17
          */
          
          /* 屏幕寬度在340px至410px時,基準尺寸使用20px */
          html{
          font-size: 20px;
          }
          /* 屏幕寬度小于340px時,基準尺寸使用18px */
          @media (max-width: 340px){
          html{
          font-size: 18px;
          }
          }
          /* 屏幕寬度大于410px時,基準尺寸使用22px */
          @media (min-width: 410px){
          html{
          font-size: 22px;
          }
          }

          src/shenlan-ui.css

          目前, 我們只有/src/reset.css和/src/common.css這兩個文件, 所以集成的時候只需要把這兩個文件引入即可。

          過去幾年中,CSS已經取得了長足的進步。在過去,您可能會使用CSS來創建依賴于HTML表格和CSS浮動作為其布局系統的簡單外觀的Web應用程序。而現在,您可以設計復雜的交互式用戶界面,具有優雅的設計。

          盡管CSS變得越來越先進,但為大型Web應用程序從頭編寫CSS樣式可能會耗費時間。這也可能導致樣式重復、CSS文件變長、跨瀏覽器兼容性錯誤,以及通常更復雜的代碼庫。

          為了解決這一挑戰,CSS框架應運而生。CSS框架引入了一種方法,使開發人員可以采用一組預定義和標準化的CSS樣式和組件,以創建一致、吸引人且響應靈活的用戶界面。

          但是由于有這么多的CSS框架可供選擇,決定適合您的應用程序的正確框架可能會很困難。您需要進行適當的比較,考慮每個CSS框架的整體特性,以便選擇最適合您需求的選項。

          在本文中,我們將探討CSS框架是什么,它們的優點和局限性,以及如何開始使用它們。我們還將介紹2024年及以后您應該了解的最顯著和最常用的CSS框架。

          最后,您將對CSS框架的工作原理有很好的了解,并知道如何選擇符合項目需求的框架。讓我們開始吧。

          (本文內容參考:java567.com)


          主站蜘蛛池模板: 日韩精品无码一区二区三区免费| 日韩国产精品无码一区二区三区| 日本亚洲国产一区二区三区| 精品国产乱码一区二区三区| 一区二区三区无码高清| 国产乱码一区二区三区爽爽爽| 国产成人一区二区精品非洲| 日本伊人精品一区二区三区| 中文字幕一区二区三区免费视频 | 午夜一区二区在线观看| 国产人妖视频一区二区| 一区二区免费在线观看| 国产成人高清亚洲一区91| 亚洲高清日韩精品第一区| 伊人色综合一区二区三区| 国产高清一区二区三区四区| 国产精品视频无圣光一区| 亚洲日韩AV一区二区三区四区| 亚洲高清日韩精品第一区| 在线观看亚洲一区二区| 3d动漫精品啪啪一区二区中 | 国产精品一区二区三区久久 | 国产精品无码一区二区三区不卡| 亚洲色大成网站www永久一区| 亚洲乱码国产一区网址| 一区二区三区四区无限乱码| 国产一区二区三区在线免费 | 国产福利一区二区| 日韩美一区二区三区| 日本免费一区二区三区最新 | 国产主播在线一区| 亚洲第一区二区快射影院| 精品国产一区二区三区香蕉| 一区二区三区无码被窝影院| 国产成人精品一区二区A片带套| 波多野结衣中文一区| 亚洲欧洲一区二区三区| 久久一区二区三区99| 久久一区二区三区精品| 亚洲一区二区无码偷拍| 国产成人av一区二区三区不卡 |