對於partia來講,能夠理解爲組件化的運用,即將對應的html/js/css進行封裝,而後經過模板引擎直接進行調用javascript
1 //能夠直接寫在app.js,也能夠寫在以前所說的helper裏面,由於是作註冊,因此須要作的是配置化的處理 2 const hbs = require('hbs');//導入hbs庫,擴展handlebars 3 const path = require('path'); // 處理路徑相關 4 5 // 註冊partial目錄,即之後直接在對應的partials文件夾內去建partial文件進行調用便可 6 hbs.registerPartials(path.join(__dirname, '../views/partials'))
css
1 <div class="nav"> 2 <div class="left-logo"> 3 <a href="/"><img src="../images/logo-new.png" alt="" style="opacity: 0;"></a> 4 </div> 5 <div class="right-view"> 6 <ul class="right-text"> 7 <li class="vip hover-li" style="position: relative;"> 8 <a href="/vip-course"><span>VIP課 9 <i class="anticon anticon-plus plus"></i> 10 <i class="anticon anticon-minus minus"></i> 11 </span> 12 </a> 13 <div class="menu-second"> 14 <i class="anticon anticon-caret-up caret-up"></i> 15 <i class="anticon anticon-caret-up caret-up-cover"></i> 16 <div class="menu-content"> 17 <div style="overflow: hidden; padding: 0px 43px;"> 18 <p class="vip-title">VIP課程</p> 19 {{#each vipcourses}} 20 {{#if (checkEven @index)}} 21 <a href="{{url}}"> 22 <div class="row-course left-course"> 23 <img class="course-img" src="{{ico}}" alt=""> 24 <div class="course-text"> 25 <p class="course-name">{{name}}</p> 26 <p class="course-describe">{{desc}}</p> 27 </div> 28 </div> 29 </a> 30 {{else}} 31 <a href="{{url}}"> 32 <div class="row-course "> 33 <img class="course-img" src="{{ico}}" alt=""> 34 <div class="course-text"> 35 <p class="course-name">{{name}}</p> 36 <p class="course-describe">{{desc}}</p> 37 </div> 38 </div> 39 </a> 40 {{/if}} 41 {{/each}} 42 </div> 43 </div> 44 </div> 45 </li> 46 <li><a href="/open-course">公開課</a></li> 47 <li><a href="/study-center"> 48 <img src="../images/grey1.png" class="study-icon-grey"> 49 <img src="../images/blue1.png" class="study-icon-blue"> 50 <div class="text-left">學習中心</div> 51 </a> 52 </li> 53 </ul> 54 </div> 55 <div class="toggle-bar"> 56 <img class="bar" src="https://img.kaikeba.com/nav.png" alt="" style="width: 24px; height: 20px; position: absolute; top: 16px; display: block;"> 57 <img src="https://img.kaikeba.com/delete.png" alt="" style="width: 20px; height: 20px; position: absolute; top: 16px; display: none;"> 58 </div> 59 </div>
html
1 //往partial中傳遞數據 data (字符串、數組、集合均可以,僅支持單一數據,不支持表達式) 2 {{> nav name=data}} 3 4 //若須要傳遞多個參數,直接在後面追加便可 5 {{>nav name=data title=jdata}} 6 7 //在partial中接收該字符串 8 {{name}}
動態partial是指在某些特定的狀況下,咱們不知道該用哪一個partial去作佈局,或者說須要對於頁面引用的partial去作動態化配置與使用;java
須要經過撰寫一個相應的helper來進行處理,主要的也就是經過這個helper方法,在partial應用的時候進行動態partial名稱的替換數組
1 //動態Partial 2 hbs.registerHelper('whichPartial',function (name) { 3 return name; 4 }) 5 6 //頁面中應用 根據不一樣條件去給navname賦值,以此識別對應的partial 7 {{> (whichPartial navname)}}
app
組件化
//對於partial視圖找不到的狀況,能夠適用,能夠結合動態的partial進行使用 {{#> ooxx}} 出現錯誤時,您會看到這句話! {{#> ooxx}}
使用塊級partial傳遞內容佈局
1 <!--定義名爲win的partial頁面--> 2 <div class="win"> 3 <div class="win-title">{{title}}</div> 4 {{> @partial-block}} 5 </div> 6 7 //調用塊級partial的方法,其中參數的傳遞也是跟partial差很少,能夠傳遞多種類型的參數,也能夠傳遞多個參數,但參數不能是表達式 8 {{#> win title="22222"}} 9 //此段的代碼表示的是傳遞到以上的 {{> @partial-block}} 的位置 10 <div>這是窗口裏面的內容。。。。。。。。。。。。。</div> 11 {{/win}}
聲明佈局partial學習
1 <!-定義命名爲layout的partial 對於下面的top foo bar 均可以進行動態的傳遞內容--> 2 <!--上面容器--> 3 <div class="top"> 4 {{> top}} 5 </div> 6 <!--下面容器--> 7 <div class="content"> 8 <div class="left"> 9 {{> foo}} 10 </div> 11 <div class="right"> 12 {{> bar}} 13 </div> 14 </div> 15 16 <!--對於佈局類型partial的調用-> 17 <!--佈局組件--> 18 {{#> layout}} 19 {{#*inline 'top'}} //表明在上面top傳遞的內容 20 這是top 21 {{/inline}} 22 {{#*inline 'foo'}} 23 這是foo 24 {{/inline}} 25 {{#*inline 'bar'}} 26 這是bar 27 {{/inline}} 28 {{/layout}}