介绍

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. [POJ1050]To the Max (矩阵,最大连续子序列和)

    数据弱,暴力过 题意 N^N的矩阵,求最大子矩阵和 思路 悬线?不需要.暴力+前缀和过 代码 //poj1050 //n^4暴力 #include<algorithm> #include& ...

  2. python学习:常量和变量

    变量的作用:存储信息,日后被调用和修改操作. 常量:固定不变得量,字母要大些. 变量的命名规则: 1.由字母数字下划线组成: 2.不能以数字开头,不能含有特殊字符和空格: 3.不能以保留字命名: 4. ...

  3. IOS开发中获取当前WIFI的名字

            ifs = [self fetchSSIDInfo]; ssid = [ifs objectForKey:@"SSID"]; self.sSIDTxt.textFi ...

  4. (95)Wangdao.com_第二十八天_进度事件

    进度事件 进度事件 用来描述资源加载的进度, 主要由 AJAX 请求.<img>.<audio>.<video>.<style>.<link> ...

  5. BOM 浏览器对象模型_当前窗口的浏览历史 history 对象

    当前窗口的浏览历史 window.history 对象 保存了当前窗口访问过的所有页面网址 由于安全原因,浏览器不允许脚本读取这些地址,但是允许在地址之间导航 history.back() 相当于 h ...

  6. [LeetCode] Minimum Swaps To Make Sequences Increasing 使得序列递增的最小交换

    We have two integer sequences A and B of the same non-zero length. We are allowed to swap elements A ...

  7. 隐藏状态栏,toolbar前面空格问题,editText圆角

    EditText圆角: 一.在drawable下面添加xml文件rounded_editview.xml 复制代码 代码如下: <?xml version="1.0" enc ...

  8. 几个bat文件(关于robot freamwork安装)

    如果安装后 没有这几文件,或者在运行后 提示 文件缺少这个文件 , 就需要手动创建.   一般文件在 :C:\Python27\Scripts 这个目录下 1.pybot.bat文件: @echo o ...

  9. centos7 openfiles问题

    集群环境有几台新增的机器,尝试修改open files的时候,按照平常的操作就是修改/etc/security/limits.conf和/etc/security/limits.d/90-nproc. ...

  10. laradock

    配置xdebug:http://m.php.cn/article/407434.html