对于partia来说,可以理解为组件化的运用,即将对应的html/js/css进行封装,然后通过模板引擎直接进行调用

1、partial的注册

 //可以直接写在app.js,也可以写在之前所说的helper里面,因为是做注册,所以需要做的是配置化的处理
const hbs = require('hbs');//导入hbs库,扩展handlebars
const path = require('path'); // 处理路径相关 // 注册partial目录,即以后直接在对应的partials文件夹内去建partial文件进行调用即可
hbs.registerPartials(path.join(__dirname, '../views/partials'))

当注册完毕之后,可以开始写partial视图了,以layout模板为例,直接在partials文件夹中建立一个 名为 nav.hbs文件,然后把一段nav导航栏模块的html写进nav文件中,(可以将html中的css样式直接提取到<style>标签中来)

 <div class="nav">
<div class="left-logo">
<a href="/"><img src="../images/logo-new.png" alt="" style="opacity: 0;"></a>
</div>
<div class="right-view">
<ul class="right-text">
<li class="vip hover-li" style="position: relative;">
<a href="/vip-course"><span>VIP课
<i class="anticon anticon-plus plus"></i>
<i class="anticon anticon-minus minus"></i>
</span>
</a>
<div class="menu-second">
<i class="anticon anticon-caret-up caret-up"></i>
<i class="anticon anticon-caret-up caret-up-cover"></i>
<div class="menu-content">
<div style="overflow: hidden; padding: 0px 43px;">
<p class="vip-title">VIP课程</p>
{{#each vipcourses}}
{{#if (checkEven @index)}}
<a href="{{url}}">
<div class="row-course left-course">
<img class="course-img" src="{{ico}}" alt="">
<div class="course-text">
<p class="course-name">{{name}}</p>
<p class="course-describe">{{desc}}</p>
</div>
</div>
</a>
{{else}}
<a href="{{url}}">
<div class="row-course ">
<img class="course-img" src="{{ico}}" alt="">
<div class="course-text">
<p class="course-name">{{name}}</p>
<p class="course-describe">{{desc}}</p>
</div>
</div>
</a>
{{/if}}
{{/each}}
</div>
</div>
</div>
</li>
<li><a href="/open-course">公开课</a></li>
<li><a href="/study-center">
<img src="../images/grey1.png" class="study-icon-grey">
<img src="../images/blue1.png" class="study-icon-blue">
<div class="text-left">学习中心</div>
</a>
</li>
</ul>
</div>
<div class="toggle-bar">
<img class="bar" src="https://img.kaikeba.com/nav.png" alt="" style="width: 24px; height: 20px; position: absolute; top: 16px; display: block;">
<img src="https://img.kaikeba.com/delete.png" alt="" style="width: 20px; height: 20px; position: absolute; top: 16px; display: none;">
</div>
</div>

提取完毕之后就可以直接在模板引擎中进行引用{{> nav}} 也支持参数的传递

 //往partial中传递数据 data (字符串、数组、集合都可以,仅支持单一数据,不支持表达式)
{{> nav name=data}} //若需要传递多个参数,直接在后面追加即可
{{>nav name=data title=jdata}} //在partial中接收该字符串
{{name}}

2、动态partial

动态partial是指在某些特定的情况下,我们不知道该用哪个partial去做布局,或者说需要对于页面引用的partial去做动态化配置与使用;

需要通过撰写一个相应的helper来进行处理,主要的也就是通过这个helper方法,在partial应用的时候进行动态partial名称的替换

 //动态Partial
hbs.registerHelper('whichPartial',function (name) {
return name;
}) //页面中应用 根据不同条件去给navname赋值,以此识别对应的partial
{{> (whichPartial navname)}}

3、 块级部分视图 partial-block

块级部分视图与partial大致类似,但是在应用层面会相对比较灵活,主要有以下几种用法,对应的语法与partial有点不同,在调用的语法主要是{{#> @partial-block}}{{/@partial-block}},与一些常用的html标签有点类似。

错误处理:

//对于partial视图找不到的情况,可以适用,可以结合动态的partial进行使用
{{#> ooxx}}
出现错误时,您会看到这句话!
{{#> ooxx}}

使用块级partial传递内容

 <!--定义名为win的partial页面-->
<div class="win">
<div class="win-title">{{title}}</div>
{{> @partial-block}}
</div> //调用块级partial的方法,其中参数的传递也是跟partial差不多,可以传递多种类型的参数,也可以传递多个参数,但参数不能是表达式
{{#> win title="22222"}}
//此段的代码表示的是传递到以上的 {{> @partial-block}} 的位置
<div>这是窗口里面的内容。。。。。。。。。。。。。</div>
{{/win}}

声明布局partial

 <!-定义命名为layout的partial 对于下面的top foo bar 都可以进行动态的传递内容-->
<!--上面容器-->
<div class="top">
{{> top}}
</div>
<!--下面容器-->
<div class="content">
<div class="left">
{{> foo}}
</div>
<div class="right">
{{> bar}}
</div>
</div> <!--对于布局类型partial的调用->
<!--布局组件-->
{{#> layout}}
{{#*inline 'top'}} //代表在上面top传递的内容
这是top
{{/inline}}
{{#*inline 'foo'}}
这是foo
{{/inline}}
{{#*inline 'bar'}}
这是bar
{{/inline}}
{{/layout}}

部分视图 - partial的更多相关文章

  1. 视图(View)与部分视图(Partial View)之间数据传递

    写ASP.NET MVC程序,我们经常需要把数据从视图(View)传递至部分视图(Partial View) 或者相反. 今天Insus.NET使用 ControllerBase.TempData 进 ...

  2. 截取视图某一段另存为部分视图(Partial View)

    在做ASP.NET MVC后台管理程序时,根据程序需要,Isus.NET需要实现一个功能,就是动态截取视图某一段另存为部分视图Partial View. 思路为在视图中,使用jQury的程序截图以及P ...

  3. jQuery加载部分视图(Partial Views)

    本篇是演示使用jQuery加载部分视图(Partial View).如果你不想使用Razor的语法呈现部分视图,那此篇的方法是最理想的了.它可以Render至指定的tag上. 创建两个部分视图,一个为 ...

  4. MVC 部分视图:Partial() 、RenderPartial() 、 Action() 、RenderAction() 、 RenderPage() 区别

    在视图里有多种方法可以 加载部分视图,包括: Partial()  Action()  RenderPartial()  RenderAction()  RenderPage() 方法. 以下是这些方 ...

  5. MVC的部分视图(Partial View)

    MVC的部分视图确实与asp.net的用户控件有几分相似,实际应用起来的方式,它又是那样不尽相同. 上次练习了<MVC母版页_Layout.cshtml>http://www.cnblog ...

  6. MVC加载部分视图Partial

    加载部分视图的方法:Partial() .RenderPartial() . Action() .RenderAction() . RenderPage() partial 与 RenderParti ...

  7. mvc 分部视图(Partial)显示登陆前后变化以及Shared文件夹在解决方案资源管理器中没有显示的问题

    刚开始我的解决方案资源管理器中没有显示Shared文件夹,但Shared文件夹在项目中是实际存在的,我搜了下好像没有类似的解答(可能是我搜索的关键词不够准确).后来自己看了下vs2012. 其实解决方 ...

  8. MVC-04 视图(2)

    三.View如何从Aciton取得数据 从Action取得数据,在ASP.NET MVC可区分成两种方式,一种是“使用弱类型取得数据”,另一种则是“使用强类型取得数据”,两者的差别在于View页面最上 ...

  9. 使用HTML辅助方法载入分部视图

    在webform中我们用过user control可以减少重复代码也利于将页面模组化, 在mvc中 叫分部视图 Partial View.   也就是一个片段的view.可以利用Partial vie ...

随机推荐

  1. 页面商城总结(一)——HTML部分

    学习编程,与君共勉. 在做过一些页面并且参考了许多商城页面后,对代码的书写和风格也有所体会,再次将我的经验分享给大家,希望大家也能够写出整洁有效的代码.本文主要是针对排版的问题进行总结,代码量较少,希 ...

  2. OO第三次博客总结

    一. 规格发展历史 从20世纪60年代开始,就存在着许多不同的形式规格说明语言和软件开发方法.在形式规格说明领域一些最主要的发展过程列举如下: 1969-1972 C.A.R Hoare撰写了&quo ...

  3. 信号报告-java

    无线电台的RS制信号报告是由三两个部分组成的: R(Readability) 信号可辨度即清晰度. S(Strength) 信号强度即大小. 其中R位于报告第一位,共分5级,用1-5数字表示. 1-- ...

  4. libnids校验和引起回放包不能正常捕捉

    如题 取消校验和校验即可: struct nids_chksum_ctl temp;temp.netaddr = 0;temp.mask = 0;temp.action = 1;nids_regist ...

  5. chm提取

    Python读写CHM文件 7z 可以将chm解包为HTML

  6. 图片合并成PDF,两个PDF的合并

    需求: 将多张手机照片合并成一个PDF,并于另一个成型PDF合并 过程: 使用全能扫描王处理一遍,拆剪掉多余部分,并提高亮度增加文字对比度 合并: 使用Faststone Capture合并图片即可. ...

  7. 前端工程化基础-vue

    由浅入深支持更多功能 1.安装最新版本的node.js和NPM,并了解NPM基本用法. 2.创建一个目录demo.使用npm 初始化配置: npm init  ,执行后会有一系列选项,可按回车快速确认 ...

  8. python学习1---列表、矩阵、数组

    1.列表与数组区别 numpy数组的所有元素类型是相同的,而列表的元素类型是任意的. 2.numpy数组与矩阵区别 矩阵必须是二维的,数组可以是多维的,matrix是array的一个分支. matri ...

  9. 20175120彭宇辰 《Java程序设计》第六周学习总结

    教材学习内容总结 第七章 一.内部类与外部类的关系 1.内部类可以使用外嵌类的成员变量和方法.2.类体中不可以声明类变量和类方法,外部类可以用内部类声明对象.3.内部类仅供外嵌类使用.4.类声明可以使 ...

  10. rem,em,与px的比较用法

    在Web中使用什么单位来定义页面的字体大小,至今天为止都还在激烈的争论着,有人说PX做为单位好,有人说EM优点多,还有人在说百分比方便,以至于出现了CSS Font-Size: em vs. px v ...