zoukankan      html  css  js  c++  java
  • 对于基于模板的前端框架的补充

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

    其实说白了,这么多方式可以分为两类,一种是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,也可以做很多自动化的扩展。在这里可以下载示例代码。

  • 相关阅读:
    SSO 单点登录
    CPU运行原理及对线程的影响01
    表单设计器
    Session 身份验证
    cookie 身份验证及跨域
    WebService 身份验证01_SoapHeader及 iis windows 集成身份验证
    WebService 代理类型
    WebService
    网络协议的理解 http、udp、tcp 等
    Container
  • 原文地址:https://www.cnblogs.com/lovecindywang/p/1861724.html
Copyright © 2011-2022 走看看