上次我发了一个帖子,讨论了几种前端的实现方式,在此文中想针对模板方式进行一些补充。

其实说白了,这么多方式可以分为两类,一种是HTML在客户端组装,一种是HTML在服务端组装。

那么模板引擎也可以分成两类:

1) 客户端模板引擎,比如jtemplate。

在这里也有很多种实现方式:

  • 模板在客户端,数据源通过ajax请求而来
  • 模板和数据源都通过ajax请求而来
  • 模板和数据源都在客户端(在生成页面的时候动态把数据嵌入进去)

这种方式的优点是数据和呈现(小部分不涉及安全的业务逻辑)很好得分离(ashx可以和html分不同的物理服务器放置),缺点是SEO支持不好。

如果模板和数据源都在客户端的话,性能会非常不错。

当然,一般大家都会把模板放在客户端(也是由服务器输出,或者可以说是模板是静态的),数据通过ajax请求获取。

2)服务端模板引擎。

对于这种方式,我想进一步扩展介绍各种实现方式:

  • 运行时动态构建HTML的模板方式

运行时动态构建HTML的模板方式,就是在每一次请求的时候读取模板(可以在内存中缓存),然后为模板引擎(比如NVelocity)填充数据上下文,模板引擎按照规则把数据填充到HTML中去。

然后输出填充后的HTML,比如context.Put(“time”, DateTime.Now.ToSting()) ,为context的哈希表填充了一个键值对,这个值是固定的,就是一个时间点。

由于填充后的HTML的读者就是浏览器,而不会通过其它动态引擎构建,所以无法实现context.Put(“time”, “DateTime.Now.ToSting()”),让time的值是一段服务端代码的执行结果。

这种方式的缺点是使用不是特别灵活,我们只能为上下文绑定固定的值。

  • 结合Webform的编译时构建方式

比如,在编译的时候读取模板文件,然后把模板文件转换为输出服务端代码的ASPX文件,这个ASPX里面就是StringBuilder拼接的语句,其中静态的是HTML,而由于生成的是代码,所以内容其实是动态的代码,原理不多说了,参见此文。这种方式可以很好得和Webform结合使用,并且由于这个ASPX在编译时生成,生成出的代码又只是StringBuilder拼接,所以效率非常高,而且可以一样写CodeBehind(当然,不能操作控件)。由于其实生成的文件是ASPX(上面这种方式是从模板生成HTML,这种方式是从模板生成ASPX再通过Webform引擎生成HTML),所以可以使用Webform具有的很多其它特性(比如母板、用户控件、缓存)等等。

  • 上述方式的改进-结合Webform的运行时构建方式

对上述方式的改动,利用ASP.NET 2.0 VirtualPathProvider特性在运行时通过模板生成ASPX文件。比上面一个方案好的是,很灵活,不需要编译(或手工调用重新生成方法),修改模板后自动生成ASPX,也可以做很多自动化的扩展。在这里可以下载示例代码。

对于基于模板的前端框架的补充相关推荐

  1. 基于VUE的前端框架搭建

    2019独角兽企业重金招聘Python工程师标准>>> 先上git地址:https://github.com/summercloud/vue-admin 配置思路 配置npm 这里不 ...

  2. 前端进击笔记第十二节 掌握前端框架模板引擎的实现原理

    如今说起前端开发,基本上都离不开前端框架.随着前端技术不断迭代,前端框架相关的文档和社区日益完善,前端入门也越来越简单了.我们可以快速上手一些工具和框架,但常常会忽略其中的设计和原理. 对框架和工具的 ...

  3. html5前端开发框架模板,HTML5中50个免费的Bootstrap前端框架模板

    原标题:HTML5中50个免费的Bootstrap前端框架模板 毫无疑问,Bootstrap模板的受欢迎程度依然如雨后春笋般迅速增长,这股力量就在不久前还被低估了呢,Bootstrap前端框架基于最新 ...

  4. Pear Admin Layui - 基于 Layui 打造的免费开源、快速、高效的中后台管理系统前端框架

    代码量少.学习简单.功能强大.轻量级.易扩展,轻松开发从现在开始. 关于 Pear Admin Layui Pear Admin Layui 是一个快速,简洁且高效的 admin 前端框架,使用 La ...

  5. 使用开源微前端框架 Luigi 创建一个基于微前端架构的工程

    官网地址 微前端通常被称为"前端微服务". 它们允许您将大型单体前端分解为独立的.可扩展的.可以协同工作的独立部分. 微前端架构对于复杂的产品或拥有众多团队的公司尤其有用,可以帮助 ...

  6. 源码推荐:基于uni-app前端框架,开源版本还开源免费商用

    今天要给大家介绍一款电商软件,目前有两个主流版本:免费开源版.商业开源版.首先需要和大家普及下什么是开源软件? 提到开源,一定绕不开Linux.Linux 是一款开源软件,我们可以随意浏览和修改它的源 ...

  7. python excel处理框架_django框架基于模板 生成 excel(xls) 文件操作示例

    本文实例讲述了django框架基于模板 生成 excel(xls) 文件操作.分享给大家供大家参考,具体如下: 生成Excel 文件,很多人会采用一些开源的库来实现,比如python 自带 csv 库 ...

  8. 开发基于vue前端框架下的系统的UI自动化,记录总结踩的坑

    在使用了pytest完成了一个系统的UI自动化后,因为系统的前端框架,是 基于VUE写的,这就让我编写脚本的时候踩了些坑. 无法用JS 修改标签属性,从而进行的操作 比如上传图片,我们的上传是这样子的 ...

  9. 基于 Layui 的后台框架模板 layuimini

    其他系列文章: 1.开箱即用的后台管理系统模版- ant-design-pro 2.https://blog.csdn.net/chensuifeng/article/details/10617271 ...

最新文章

  1. 复制windows对话框内容的方法
  2. 使用SQLCMD在SQLServer执行多个脚本
  3. 嵌入式linux 配置usb otg,嵌入式系统设计中的USB OTG方案
  4. 爱普生第三方相机_值得购买第三方相机镜头吗?
  5. linux之用route命令看简单路由信息
  6. (转)淘淘商城系列——商品搜索功能Dao实现
  7. Python使用Apriori算法查找关系密切的演员组合
  8. java如何判断当前系统是windows还是linux?
  9. PhotoShop 2022 mac版新增功能
  10. cmd启动某个server卡住解决办法
  11. 微信打开网页:如需浏览,请长按网址复制后使用浏览器访问怎么解决
  12. PS中预设画笔并为路径描边
  13. STC芯片在Keil中的添加与使用
  14. 七牛base64上传图片带格式
  15. 【SQL】用SQL语句表示同比和环比
  16. 关于国产数据库,不得不谈一下“数据库四小龙”
  17. 【原创】在winform程序中实现在IE浏览器中打开一个新的页面,全屏化并屏蔽IE窗口的工具栏和地址栏
  18. vue动态更改背景图
  19. android 打开相机拍照功能吗,Android调用相机实现拍照功能
  20. python 绘制 3D 曲面

热门文章

  1. 跨林迁移用户、计算机、邮箱(1)
  2. 查看MySQL数据库中每个表占用的空间大小
  3. C BNF grammar
  4. LeetCode 504. Base 7 (C++)
  5. 企业无线网演进 2.4GHz或被5GHz频段取代
  6. mysql用一个表更新另一个表的方法
  7. AngularJS中的表单验证机制
  8. 【Arduino基础教程】PM2.5粉尘检测传感器
  9. 【心得】centos 去除屏幕保护
  10. c# winform窗体边框风格的设计