介绍

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. 英语口语练习系列-C35-马戏-谈论语言-己亥杂诗

    词汇-马戏 circus audience spectator spotlight bandstand magic magician clown spacious attractive product ...

  2. 09-Http & Servlet

    Http协议&Servlet Http协议 什么是协议 > 双方在交互.通讯的时候, 遵守的一种规范.规则. http协议 > 针对网络上的客户端 与 服务器端在执行http请求的 ...

  3. goroutine 和线程的区别

    好久没写点儿啥了,强行更新一下. 1,从使用上讲 1,goroutine 比线程更轻量级,可以创建十万.百万不用担心资源问题. 2,goroutine 和 chan 搭配使用,实现多线程.高并发 实现 ...

  4. centos7.4安装npm

    下载网址 https://nodejs.org/dist/latest-v8.x/ 安装过程参考 https://blog.csdn.net/micarlxm/article/details/8109 ...

  5. ElasticSearch + Canal 开发千万级的实时搜索系统

    公司是做社交相关产品的,社交类产品对搜索功能需求要求就比较高,需要根据用户城市.用户ID昵称等进行搜索. 项目原先的搜索接口采用SQL查询的方式实现,数据库表采用了按城市分表的方式.但随着业务的发展, ...

  6. 02_ if_else if 练习

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  7. Jquery常用的方法总结

    1.关于页面元素的引用通过jquery的$()引用元素包括通过id.class.元素名以及元素的层级关系及dom或者xpath条件等方法,且返回的对象为jquery对象(集合对象),不能直接调用dom ...

  8. raycast 一小段距离碰撞到的poly

    dtNavMeshQuery::raycast(dtPolyRef startRef, const float* startPos, const float* endPos, const dtQuer ...

  9. 单调栈+前缀和 || Nowcoder || 牛客小白月赛13 || 小A的柱状图

    题面:小A的柱状图 题解:无 代码: #include<cstdio> #include<cstring> #include<iostream> #define l ...

  10. Visual Studio Code for mac 设置中文

    1,mac系统VScode设置中文 macOS 快捷键:command + shift + p 输入搜索 configure language       1.Ctrl+Shift+P 打开命令 2. ...