Nodejs express为什么默认生成的项目用jade做渲染?
Nodejs express为什么默认生成的项目用jade做渲染?
有一个疑问,express为什么默认生成的项目用jade做渲染?jade的优点在哪?如果单纯为了少写代码、快速编码,那直接在编码的时候zenCode不就好了?发散一下,css写成less,html写成jade,绕一个弯子写代码真的有必要?这中间的性能损耗真的已经可以忽略不计了么?
Nodejs express为什么默认生成的项目用jade做渲染?
在Express.js早期版本中,默认使用Jade(后来更名为Pug)作为模板引擎。这是因为Jade具有简洁、优雅的语法,能够显著减少HTML模板的编写工作量。下面我们来详细探讨一下Jade的优点以及为何选择它作为默认模板引擎。
Jade的优点
-
简洁的语法: Jade的语法非常简洁,几乎不需要闭合标签。例如,下面是一个简单的Jade模板:
doctype html html head title= pageTitle body h1 Welcome to #{title} p Welcome to #{title}, the best site for cool stuff.
上述代码会生成如下的HTML:
<!DOCTYPE html> <html> <head> <title>Welcome Page</title> </head> <body> <h1>Welcome to Welcome Page</h1> <p>Welcome to Welcome Page, the best site for cool stuff.</p> </body> </html>
-
提高开发效率: 使用Jade可以极大地提高开发效率,因为你可以专注于业务逻辑,而不是繁琐的HTML标签。例如,使用ZenCoding(Emmet)虽然也能简化HTML编写,但Jade提供了一种更结构化的方式。
-
可维护性: 由于Jade的语法更加简洁,使得HTML模板更易于阅读和维护。这对于大型项目来说尤为重要。
-
性能: 尽管Jade需要解析模板字符串,但它通常被优化得非常好,性能损耗可以忽略不计。现代的JavaScript引擎和模板引擎都有很高的优化水平。
为什么不直接使用HTML?
确实,你可以选择使用其他模板引擎或直接使用HTML。例如,使用EJS(Embedded JavaScript)模板引擎也可以实现类似的效果:
<!DOCTYPE html>
<html>
<head>
<title><%= title %></title>
</head>
<body>
<h1>Welcome to <%= title %></h1>
<p>Welcome to <%= title %>, the best site for cool stuff.</p>
</body>
</html>
或者直接使用Pug(原名Jade):
doctype html
html
head
title= title
body
h1 Welcome to #{title}
p Welcome to #{title}, the best site for cool stuff.
总结
尽管Jade(Pug)最初被选为默认模板引擎是因为其简洁性和开发效率,但最终选择哪个模板引擎取决于具体需求和偏好。如果你更喜欢清晰的HTML语法,可以选择EJS或其它模板引擎。但是,Jade(Pug)仍然因其简洁和高效而受到许多开发者的青睐。
希望这些信息能帮助你理解为什么Express.js早期会选择Jade作为默认模板引擎,并且了解一些替代方案。
express 的作者 也是jade 的作者。他喜欢。
jade真的很不错,模板页面很整洁
jade太慢了
他也是 ejs作者
express xxxx -e采用ejsenter code here
应该差不多,编译以后缓存了。编译以后都是js code
缓存了就没什么关系了吧~性能什么的~
不是html写成jade或者ejs,而是必须这样,express不能直接与html交互,需要模板生成html,另外express的作者希望用stylus写css,因为这个也是他写的
噗……其实我觉得stylus还是不错的……【TJ真能写……
而且各个模板哪个快点哪个慢点没什么关系,第一次编译以后就缓存了,完全不影响以后的调用
暂时选定ejs在用
真不明白这问题为什么老是被反反复复拿出来讨论, 爱用什么就用什么呗,你不喜欢Jade不代表别人不喜欢啊
讨论而已,否则来社区的目的是什么?
“别人爱讨论什么就讨论什么呗,你不喜欢讨论不代表别人不喜欢啊”-------呵呵,开个玩笑~
用less写css是有很大的帮助和效率提升的。管理css代码实在是不可能,用less或sass的话,会好很多
http://naltatis.github.com/jade-syntax-docs/#mixin
和less一样,jade有mixin,emmet(zencoding)是没有的
Jade(现在称为Pug)作为Express项目的默认模板引擎,是因为它有一些显著的优势。这些优势不仅提高了开发效率,还使得代码更加清晰和易于维护。
Jade/Pug的优点
-
语法简洁:与传统的HTML相比,Jade/Pug使用更简洁的语法,这减少了编写视图时的样板代码。
// HTML <div class="container"> <h1>Welcome to My Website</h1> <p>This is a paragraph.</p> </div> // Pug .container h1 Welcome to My Website p This is a paragraph.
-
逻辑清晰:Pug的缩进方式使得HTML结构的层次关系一目了然,这有助于开发者快速理解页面的结构。
-
内置功能:Pug提供了许多内置的功能,如循环和条件语句,这使得在模板中处理动态数据变得更加简单。
ul each item in ['apple', 'banana', 'cherry'] li= item
-
可读性高:对于团队协作来说,Pug的语法更容易阅读和理解,从而减少沟通成本。
性能考虑
虽然Pug需要编译为HTML,但现代工具链通常优化了这一过程,使得性能损耗可以忽略不计。此外,Pug的模板缓存机制也确保了首次加载后的性能损失非常小。
示例代码
假设我们有一个简单的Express应用,使用Pug作为模板引擎:
const express = require('express');
const app = express();
app.set('view engine', 'pug');
app.get('/', (req, res) => {
const items = ['apple', 'banana', 'cherry'];
res.render('index', { items });
});
app.listen(3000, () => console.log('Server running on port 3000'));
views/index.pug
文件内容如下:
doctype html
html
head
title Pug Example
body
h1 Welcome to My Website
ul
each item in items
li= item
这样,当用户访问根路径时,他们将看到一个包含水果列表的页面。
通过这种方式,Pug简化了开发流程,提升了代码的可读性和可维护性,因此成为许多开发者和团队的选择。