javascript - 为什么网络应用程序经常使用单独的模板语言来生成网页?

标签 javascript pug

为什么 Web 应用程序使用单独的模板语言(例如 Jade)而不是使用应用程序的语言(例如 Java、Python、JavaScript)来生成网页?我只想知道是否有实际原因,或者只是为了将逻辑 (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 框架。但是,直接使用您的应用程序语言的想法已经存在。

关于javascript - 为什么网络应用程序经常使用单独的模板语言来生成网页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28016935/

相关文章:

javascript - 如何从 AngularJS 模板中的嵌套 JSON 数组中获取值?

node.js - 使用 pug 对 JSON 对象进行排序

node.js - 从布局文件夹链接layout.pug文件

javascript - Angular/JADE - 当我尝试在 ng-href 属性中使用 Angular 标签时,为什么会收到错误 "Unexpected token {"?

javascript - 动态插入的 React 组件

javascript - 修复了 DIV 定位问题

javascript - 打开的 JqueryUI 对话框使用旧目标实例处理 onclick 事件

javascript - Jquery $(this).val() 不工作

javascript - 如何将模板中的内容传递到 Express 中的布局?

javascript - 反转数组的最短代码