为什么网络应用程序经常使用单独的模板语言来生成网页?
Why do web applications often use a separate template language to generate web pages?
为什么 Web 应用程序使用单独的模板语言(例如 Jade)而不是使用应用程序的语言(例如 Java、Python、Java脚本)?我只想知道是否有实际原因,或者只是为了将逻辑 (javascript) 与显示代码 (jade/html) 分开?
不同的工作需要不同的工具。
您的应用程序语言并不都适合模板化。使用其他东西更容易,特别是如果你使用将变量数据插入 HTML 的语言风格,比如 Swig:
<h1>{{ headingText }}</h1>
要在 JavaScript 中执行此操作,您首先必须创建节点,然后设置其值。对整个文档执行此操作会变得乏味。
var headingEl = document.createElement('h1');
headingEl.textContent = 'woot';
document.body.appendChild(heading);
另一个原因是制作模板的人通常不同于构建应用程序的人。如果非开发人员已经知道 HTML,那么使用将变量嵌入 HTML 的模板语言很容易上手。可以让网页设计师或技术人员级别的人去制作模板,根据需要插入可变数据。这对您是否重要取决于您的需求。
有一些模板语言,例如 Jade,需要非常结构化的 DOM 构建。虽然这保证了最后一个可解析的文档,但对于来自构建静态页面的人来说可能有点陌生。如果你用的是Jade,这样构建DOM还是比创建节点方便。
您可能会争辩说,以编程方式从数据生成页面很容易...比如从 JSON。你说得对,事实上 there is code that does just that。用起来肯定没问题。
旁注,Rasmus Lerdorf has famously argued that no templating engine is needed for PHP,因为 PHP 实际上是一个模板引擎。现在,这有点断章取义,因为 PHP 比以前成熟得多,Rasmus 反对模板引擎的人,他们基本上是在模板中构建 Web 框架。但是,直接使用您的应用程序语言的想法已经存在。
为什么 Web 应用程序使用单独的模板语言(例如 Jade)而不是使用应用程序的语言(例如 Java、Python、Java脚本)?我只想知道是否有实际原因,或者只是为了将逻辑 (javascript) 与显示代码 (jade/html) 分开?
不同的工作需要不同的工具。
您的应用程序语言并不都适合模板化。使用其他东西更容易,特别是如果你使用将变量数据插入 HTML 的语言风格,比如 Swig:
<h1>{{ headingText }}</h1>
要在 JavaScript 中执行此操作,您首先必须创建节点,然后设置其值。对整个文档执行此操作会变得乏味。
var headingEl = document.createElement('h1');
headingEl.textContent = 'woot';
document.body.appendChild(heading);
另一个原因是制作模板的人通常不同于构建应用程序的人。如果非开发人员已经知道 HTML,那么使用将变量嵌入 HTML 的模板语言很容易上手。可以让网页设计师或技术人员级别的人去制作模板,根据需要插入可变数据。这对您是否重要取决于您的需求。
有一些模板语言,例如 Jade,需要非常结构化的 DOM 构建。虽然这保证了最后一个可解析的文档,但对于来自构建静态页面的人来说可能有点陌生。如果你用的是Jade,这样构建DOM还是比创建节点方便。
您可能会争辩说,以编程方式从数据生成页面很容易...比如从 JSON。你说得对,事实上 there is code that does just that。用起来肯定没问题。
旁注,Rasmus Lerdorf has famously argued that no templating engine is needed for PHP,因为 PHP 实际上是一个模板引擎。现在,这有点断章取义,因为 PHP 比以前成熟得多,Rasmus 反对模板引擎的人,他们基本上是在模板中构建 Web 框架。但是,直接使用您的应用程序语言的想法已经存在。