• 大浪淘沙,JSP终将死去


    首先讲明,我不是标题党。

    这纯属我个人的意见。勿喷。


    先来讲讲JSP是怎么出现的吧.


    在早期的WEB中,JS。CSS远未成熟,技术慷慨向并不明白!因为前端语言的匮乏。各家大公司都推出基于后端的模板语言。

    比方JSP,ASP,PHP等。


    这些基于后台的模板语言引领了一个时代 !


    比方在JSP中,内置基本数据对象,外加自己定义Tag。能够实现“半组件式”的开发,这在当时大大加快了系统的开发速度。



    但在在这些server模板语言中,单就JSP而言。存在着一些无言的痛点:


    1. 页面无法保存数据

    除了网页中保存数据。其它并没有保存数据的地方。比如当前登陆用户,用于页面计算的辅助数据等。

    做过JSP的都知道。到处使用 input[type="hidden"]来存储数据,一方面导致页面HTML越来越大,渲染越来越慢。

    还有一方面,这些代码都是游离于架构之外,早晚有一天会雪崩。千里之堤毁于蚁穴!


    2. 全然黑盒执行

    JSP终于会编译成Class文件执行。它的执行机制全然黑盒的。

    多少次,JSP报错,仅仅能靠“猜”解决这个问题。

    黑盒导致的另外问题是。不能单独执行。

    比方一张表单,想作为邮件发送给用户。JSP并不能实现,仅仅能用HTML重写一遍。这简直不能忍受。


    所以非常多公司都搭配FreeMarker,或者JasperReport使用,来单独实现打印等功能。这就要求员工有很多其它的技术压力,不要以为这是好事,这是运营成本!


    3. 粒度太粗

    怎样理解粒度太粗呢? 比方,有一个页面,想要重用,或者页面中的某些HTML想重用。因为JSP和后台数据严格相应。而且JSP不能分离,不可能做到。

    而在开发中。假设做不到最小粒度的重用。你将迷失在复制粘贴的海洋中。

    假设你不认为复制粘贴有什么问题。仅仅能说明你还停留在码农的层次。


    基于如上。非常多人舍弃了JSP,转向了FreeMarker,Velocity等分离的模板语言!

    这些语言都是针对JSP的缺点做了改进。拿FreeMarker来说吧。


    1.能够单独执行,意味着用户能够重用页面。比方上面说的表单发送邮件。能够直接使用FreeMarker生成HTML。而不用又一次写另外一套。

    2. 更小粒度的组件宏,用起来比JSP稍具灵活性。


    FreeMarker。Velocity作为后台模板语言。它们依旧没有解决一些核心问题。比方:页面无法存储经常使用的数据。无法脱离后台执行等问题。

    可是它们作为生成报表,格式打印。邮件模板等工具却越来越流行。

    使用FreeMarker打印,要比JasperReport的打印,轻量了不止一个数量级。


    可是它们也仅仅能作为JSP的过渡产品,以及一些特殊的使用方法,作为页面逻辑展示,也越显吃力。

    时代在发展,技术更是日新月异!

    基于后台的模板语言。始终把“前端”都摆在一个“辅助”的位置上,它一直在为了做“主力”而奋斗着...



    随着Web的发展,JS的稳定以及流行,终于基于JS的模板语言出现了。

    比如简单精炼的Underscore Template。Mustache,支持自己定义标签的Handlebars等。


    基于JS的模板能够更小粒度定义,执行基于JS,相关的数据直接存储在JS中,方便使用。

    JS模板能够基于不论什么JS引擎执行,那么打印以及发送邮件这类问题,都能够不使用其它工具直接实现,降低了开发者的技术压力。


    眼下流行的前端MVC框架。如Backbone,AngularJS。ReactJS...等等,都是基于模板来执行。

    随着Web的持续发展。JS模板终将或者已经成为主流。



    而已经年迈的JSP,明显已跟不上时代的脚步,终将慢慢逝去...








  • 相关阅读:
    【leetcode】416. Partition Equal Subset Sum
    【leetcode】893. Groups of Special-Equivalent Strings
    【leetcode】892. Surface Area of 3D Shapes
    【leetcode】883. Projection Area of 3D Shapes
    【leetcode】140. Word Break II
    【leetcode】126. Word Ladder II
    【leetcode】44. Wildcard Matching
    【leetcode】336. Palindrome Pairs
    【leetcode】354. Russian Doll Envelopes
    2017.12.22 英语面试手记
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/7190307.html
Copyright © 2020-2023  润新知