程序本质是数据结构和算法,HTML 和 CSS只能表达简单的树形结构,适合简单的内容型网站,不适合复杂的Web程序。以它们为核心的开发会:把简单变的更简单,但把复杂变的更复杂。石头搭得了石屋,不一定盖得了大厦。
啰嗦的讲:
HTML和CSS的语言表达能力,用JavaScript的一个子集JSON(其实就是JavaScript对象和数组)就可以代替,但缺少基本运算符、语句、函数、对象等,为啥不干脆用JavaScript代替,还能保持统一性和灵活性。我不是说的具体功能,功能是浏览器底层实现的,JavaScript照样可以作为接口,就像Node.js一样。
因为是游戏开发出身,所以知道对于像游戏这样复杂的东西,不可能用 HTML 和 CSS 等标记式语言开发。那么,随着 Web 前端的复杂度不断高升,HTML 和 CSS 这种适合文档网站的语言还有存在的必要吗?会不会阻碍复杂程序的开发。
作
为类比,以前我用过 Flex,其 MXML 语言的灵活度比 HTML 更高,也会用到 CSS,但是除非是很简单的页面结构,大部分情况下,用
ActionScript 组织页面会更方便灵活。而且 JavaScript 开发,也更容易模块化。HTML 和 CSS 都太简单,甚至可以用
JSON 替代,其功能用 JS 封装。
就像很多其它语言平台一样,比如 Java,用纯 Java
代码开发界面。如果真的很需要结构化动态数据,可以用 JSON 或 XML。至于内容、表现、逻辑的分离,并不需要从语言层面分离,纯 JS
一样可以分离,而且更有可控性。HTML 和 CSS 逻辑太弱了,这也是为什么会有 LESS 等 CSS 预编译器和各种模板引擎,如果用纯
JS,这些都可以不需要了。
至于不支持 JS 的浏览器,基本上也不可能用来上网了吧。
补充下:
最近有一些库尤其是追求性能和WebApp开发的库,已经把HTML当作最终输出目标,用JS重构整个显示模型。比如React的虚拟DOM和JSX(满足模板爱好者的可选项),极度优化了DOM更新。http://famo.us的3D物理型显示引擎,压平了整个DOM树,用CSS3和硬件加速,极大提高了运行效率。当然也为模板爱好者提供了Angular整合的可选项。
这是我用famous加一些自己写的函数实现链式调用,用coffeescript(JavaScript改进)写的界面代码。我觉得高手来写的话,可读性应该比这个更好。关键是灵活性很高。
是的,添加TH。
注意要使用th:untext()函数,而非th:text()函数。
处理路径时,如果使用了获取绝对路径的方式,可能会造成访问权限问题,在web项目中要慎重。
大家可以根据自己的需求更改spring boot和Thymeleaf的文件目录,具体可以参考修改spring boot默认目录。
thymeleaf介绍
简单说, Thymeleaf 是一个跟 Velocity、FreeMarker 类似的模板引擎,它可以完全替代 JSP 。相较与其他的模板引擎,它有如下三个极吸引人的特点:
1.Thymeleaf 在有网络和无网络的环境下皆可运行,即它可以让美工在浏览器查看页面的静态效果,也可以让程序员在服务器查看带数据的动态页面效果。
这是由于它支持 html 原型,然后在 html 标签里增加额外的属性来达到模板+数据的展示方式。
浏览器解释 html 时会忽略未定义的标签属性,所以 thymeleaf 的模板可以静态地运行;当有数据返回到页面时,Thymeleaf 标签会动态地替换掉静态内容,使页面动态显示。
2.Thymeleaf 开箱即用的特性。它提供标准和spring标准两种方言,可以直接套用模板实现JSTL、 OGNL表达式效果,避免每天套模板、该jstl、改标签的困扰。同时开发人员也可以扩展和创建自定义的方言。
3.Thymeleaf 提供spring标准方言和一个与 SpringMVC 完美集成的可选模块,可以快速的实现表单绑定、属性编辑器、国际化等功能。