介绍

Sitecore的开放式架构和众多API意味着在Sitecore中实施网站可能会在很多方向上发生偏差。架构的一个特别重要的方面涉及页面构建 - 如何构建Sitecore中的网页?

Sitecore中的页面是通过内容表示的组合构建的。如何将这两者结合在一起是一个重要的架构决策,有两个选项和一个明显的答案。

由于Sitecore内容以基于树的结构组织,类似于其他CMS平台,因此新开发人员倾向于选择基于他们可能已经熟悉的架构:基于模板的页面。然而,Sitecore的优势在于其基于组件的页面架构。让我们来看看两者,看看为什么基于组件的架构几乎总是优越的选择。

基于模板的页面

使用基于模板的页面方法,网站的每个页面都基于静态模板。模板包含页面显示内容所需的所有字段,无论是标题,子标题,图像等:

  • 此模板包含页面所需的所有字段...

  • ...并且内容按预期显示在页面上。

该架构的设计和实现非常简单。每个模板都有一个相应的表示组件(Sitecore术语中的子布局或渲染),只需在页面上的适当位置呈现每个模板字段。由于这种简单的实现,可以非常快速地构建基于模板的网站。

然而,这种方法有许多缺点。内容无法跨页面重复使用或共享。因为每个页面仅包含它所需的内容,所以其他页面无法访问该内容(不是没有编写一些可能令人困惑的代码来跨页面加载数据)。也许是对这种架构的最大打击:内容无法个性化,忽略了Sitecore最大的优势之一。

基于组件的页面

使用基于组件的页面体系结构,页面上的每个内容都与单个表示组件相关联。每个表示组件通常通过数据源引用内容项。

内容与表示的分离是使Sitecore作为CMS脱颖而出的核心概念之一。通过在两者之间创建多对多关系,内容不仅仅与一个表示布局相关联。

一个内容可以多种方式显示。

在上面的例子中,“Person”是内容。该内容可以以四种不同的方式显示。这可以实现内容重用

表示组件可以通过交换数据源来显示不同的内容。

上面,单个表示组件能够交换它使用的内容项,从而实现Sitecore中的个性化A / B测试等核心概念。

基于组件的页面的最大缺点在于开发时间:与简单的基于模板的页面相比,创建数十个表示组件需要相当长的时间。

摘要

尽管这是对页面体系结构的简化概述,但显然Sitecore的优势在于其基于组件的体系结构。内容重用,演示灵活性和个性化功能可以轻松证明在Sitecore中开发组件所花费的时间。

Sitecore 8.2 页面架构设计:模板与组件的更多相关文章

  1. Unity应用架构设计(13)——日志组件的实施

    对于应用程序而言,日志是非常重要的功能,通过日志,我们可以跟踪应用程序的数据状态,记录Crash的日志可以帮助我们分析应用程序崩溃的原因,我们甚至可以通过日志来进行性能的监控.总之,日志的好处很多,特 ...

  2. 宜信开源|分布式任务调度平台SIA-TASK的架构设计与运行流程

    一.分布式任务调度的背景 无论是互联网应用或者企业级应用,都充斥着大量的批处理任务.我们常常需要一些任务调度系统来帮助解决问题.随着微服务化架构的逐步演进,单体架构逐渐演变为分布式.微服务架构.在此背 ...

  3. python-django电商项目-需求分析架构设计数据库设计_20191115

    python-django电商项目需求分析 1.用户模块 1)注册页 注册时校验用户名是否已被注册. 完成用户信息的注册. 给用户的注册邮箱发送邮件,用户点击邮件中的激活链接完成用户账户的激活. 2) ...

  4. MVC实用架构设计(三)——EF-Code First(3):使用T4模板生成相似代码

    前言 经过前面EF的<第一篇>与<第二篇>,我们的数据层功能已经较为完善了,但有不少代码相似度较高,比如负责实体映射的 EntityConfiguration,负责仓储操作的I ...

  5. [转]MVC实用架构设计(三)——EF-Code First(3):使用T4模板生成相似代码

    本文转自:http://www.cnblogs.com/guomingfeng/p/mvc-ef-t4.html 〇.目录 一.前言 二.工具准备 三.T4代码生成预热 (一) 单文件生成:Hello ...

  6. 实战使用Axure设计App,使用WebStorm开发(3) – 构建页面架构

    系列文章 实战使用Axure设计App,使用WebStorm开发(1) – 用Axure描述需求  实战使用Axure设计App,使用WebStorm开发(2) – 创建 Ionic 项目   实战使 ...

  7. 架构设计:负载均衡层设计方案(2)——Nginx安装

    来源:http://blog.csdn.net/yinwenjie(未经允许严禁用于商业用途!) 目录(?)[-] Nginx重要算法介绍 1一致性Hash算法 2轮询与加权轮询 Nginx的安装 1 ...

  8. MVC实用架构设计(三)——EF-Code First(5):二级缓存

    前言 今天我们来谈谈EF的缓存问题. 缓存对于一个系统来说至关重要,但是是EF到版本6了仍然没有见到有支持查询结果缓存机制的迹象.EF4开始会把查询语句编译成存储过程缓存在Sql Server中,据说 ...

  9. MVC实用架构设计(三)——EF-Code First(4):数据查询

    前言 首先对大家表示抱歉,这个系列已经将近一个月没有更新了,相信大家等本篇更新都等得快失望了.实在没办法,由于本人水平有限,写篇博客基本上要大半天的时间,最近实在是抽不出这么长段的空闲时间来写.另外也 ...

随机推荐

  1. 潭州课堂25班:Ph201805201 tornado 项目 第十二课 项目部署(课堂笔记)

    运行多个Tornado实例 网页响应不是特别的计算密集型处理 多个实例充分利用 CPU 多端口怎么处理 Linux 常见应用服务配置模式 nginx 和 supervisord:采用主配置文件 + 项 ...

  2. Windows中杀死占用某个端口的进程(转)

    最近写项目,总是出现端口被占用的问题,原来傻傻的把电脑重启一下,终于有一天受不了了,想要想办法解决.刚开始从网上找了好多教程,发现不行.开始自己尝试,终于,成功的将占用端口的进程杀掉.在此记录下过程( ...

  3. java列表数据基本操作

    列表数据组基本的增删改查 package cn.edu.fhj.day002; import java.util.ArrayList; public class ArrList { // 定义一个主函 ...

  4. angularjs ng-if 中的ng-model 值作用域问题

    现象:最近做了一个需求,页面上使用了ng-if 条件做判断,导致通过使用 $scope 获取不到 ng-model 的值. 问题原因: ng-if这个指令单独开了一个作用域,它只可以继承,不可以进行往 ...

  5. (94)Wangdao.com_第二十七天_键盘事件

    键盘事件 键盘事件由用户击打键盘触发 主要有 keydown.keyup .keypress三个事件,它们都继承了 KeyboardEvent 接口. keydown         按下键时 触发 ...

  6. kafka安装与测试

    基于linux-Centos7.0环境先进行测试学习 Producer即生产者,向Kafka集群发送消息,在发送消息之前,会对消息进行分类,即Topic, Topic即主题,通过对消息指定主题可以将消 ...

  7. hdfs 路径不支持‘:’

    hdfs 路径不支持‘:’,但Linux支持. -put: Pathname /public/platform/control_center/file_center/weiflow/core-user ...

  8. oc与c语言的相互调用

    一:OC调用C语言 C语言的.h文件 // // TestPrint.h // TestDemo // // Created by Techsun on 14-8-12. // Copyright ( ...

  9. 对于EMC DAE、DPE、SPE、SPS的解释

    对于EMC DAE.DPE.SPE.SPS的解释: DAE: Disk Array Enclosure 单一的磁盘扩展单元 CX200/CX300/CX400/CX500CX600/CX700 DPE ...

  10. onu-reg-unreg.vbs

    Sub Main crt.Sleep 10000 Dim cnt For cnt = 0 To 1000000 crt.screen.Send "admin-status down" ...