首先讲明,我不是标题党。这纯属我个人的意见,勿喷。

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

在早期的WEB中,JS,CSS远未成熟,技术大方向并不明确!由于前端语言的匮乏,各家大公司都推出基于后端的模板语言。比如JSP,ASP,PHP等。

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

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

但在在这些服务器模板语言中,单就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,明显已跟不上时代的脚步,终将慢慢逝去...

大浪淘沙,JSP终将死去相关推荐

  1. 万维钢:但是人终将老去

    有的少年不想放弃撒娇的权利.有的青年会在六一儿童节发朋友圈庆祝.有的中年倔强地命令自己每年跑两次马拉松.现代社会的整个情绪是大家假装都还年轻,谁也不会老.我们喜欢听未来生物技术能延长寿命的预测,我们强 ...

  2. 《代码之美》第六章:菜鸟的自圆其说

    Micheal Feather是我早就攻击过的专家级菜鸟,看过这一章,他在我心目中的高级初学者的形象,已经板上钉钉了.前两天看一本书,讲到调研表明,很多人在自己的领域干了20年,过了前五年,基本就不会 ...

  3. If today were the last day of my life

    For the past 33 years, I've looked in the mirror every morning and asked myself: "If today were ...

  4. 大脑的终极秘密——从狮子也有意识谈起

    作者:中国科学院大学教授  谢平 理性思维是意识的高级成分,但它并非人类的专利.在自然界的生存斗争中,人类不仅仅需要通过感觉器官去获取外部世界的印象,还需要对外部世界的事物进行归类.判断与推理,决定自 ...

  5. 你应该学点哲学的20个理由:不为拥有深奥的思想,只为更好地生活

    利用先贤的智慧来解决现代生活的日常问题. 转载于 http://china.36kr.com/p/5223175?column=WORKPLACE 什么是哲学?是不是就是时不时让你能够蹦出一些高深莫测 ...

  6. Scratch 被禁止访问;Linux 内核历史报告2020 等开源之道每周评论2020 09 15

    点击上方蓝字,关注开源之道 声明:本文所言论,仅代表适兕个人观点 论文阅读心得与体会 Linux 内核历史报告2020 原文链接:the 2020 Linux Kernel History Repor ...

  7. 周易——一本不可不读,读后难忘的经典

    有一些道理,永远有效:有一些书籍,终生受益:有一些师友,没世难忘.--题记 看此书的起因 主要源于对未知的好奇.中国人对于周易.八卦等事物等最初印象多起源于道馆等风水算卦之地,那个简单但韵味无穷的两仪 ...

  8. 孤独源于过分的优越感,而优越感的另一面,则是自卑

    作者 | 沈小星 来源 | Stevenandbook(ID) 中国独居人口2018年达到7700万,2021年这个数字将增至9200万. 独居比例如此高,就一定不能忽略这种社会心理--孤独. 国内一 ...

  9. To be a man

    What does it mean to be a man today? 这个题目是什么意思?让男人回归本真:强壮而不失温和,勇敢而不失温情:勇于追求并拥有美好的事物,关心他人.勤劳.幽默.温柔.充满 ...

最新文章

  1. 基于U-Net系列算法的医学图像分割(课程设计)
  2. 直接操作游戏对象C#游戏开发
  3. 【POJ 3026】Borg Maze
  4. Class 17 - 1 动态渲染页面爬取 — Selenium使用
  5. 【leetcode 简单】第十一题 搜索插入位置
  6. 单源最短路 Dijkstra算法 和 SPFA算法
  7. 2021杭州高考杭二成绩查询,2021年杭州重点高中名单及排名,杭州高中高考成绩排名榜...
  8. [数据库]---mysql 插入sql之 INSERT INTO和INSERT IGNORE INTO和REPLACE INTO和ON DUPLICATE KEY UPDATE比较应用
  9. python:栈的理解与应用,让你快速入门Python
  10. async python_Async Python 竟不比sync Python 快,怎么回事?
  11. linux mv复制命令,linux中删除复制移动文件rm,mv,cp命令详解linux操作系统 -电脑资料...
  12. JxBrowser做爬虫时处理浏览器对话框
  13. iOS 10.0的网络问题:设置使用无线局域网与蜂窝移动的应用
  14. 绘制奥林匹克标志——利用python turtle画奥运五环
  15. null id in entry (don‘t flush the Session after an exception occurs)解决思路
  16. IDEA运行项目时停不下来
  17. mysql distribute by_Mysql与分布式Gaussdb 100语法差异及常见问题汇总
  18. android基础的博客,【复习】Android基础
  19. Linux下 “>/dev/null 2>1 “ 命令学习
  20. html5如何设置视频为静音,html5中设置或返回音频/视频是否应该被静音的属性muted-...

热门文章

  1. 解决摩托罗拉XOOM平板刷安卓4.03电子市场不能使用的问题
  2. 基于九鼎核心板的rk3288 双屏开发
  3. 如何进行企业文化建设?
  4. C++面向对象游戏模型
  5. 英语六级高频词汇速记 + 2018-6-1听力 Day01
  6. BosonNLP试用
  7. HustOJ - 1026
  8. 玩机搞机-----带你了解高通刷机平台中的一些选项释义 玩转平台
  9. 将http网站升级为https网站的方法指南
  10. 蛇行矩阵(蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形)