Jade的意义何在?
发布于 9 年前 作者 THCloud 7040 次浏览 最后一次编辑是 8 年前 来自 问答

本人学生狗一枚,最近正在学习用mean做一点东西出来(其实是毕设),然后在jade上碰到了一些疑问, jade是express默认的模板,因为里面都是emmet的语法,不陌生,所以就用了,但是我前端用的是angular,这个东西又是在服务器渲染 所以我angular的路由又不能直接templateUrl指向jade文件,得传服务器渲染完的 但是现在这个推崇前后端分离开发,把前端的东西带到后台,真的有必要么 用html写也可以,而且可能逻辑上比jade更简单,但是存在即真理,我还是很想知道jade的意义在哪里

望大牛们解答下

22 回复

模版存在的意义就是“复用”。“传服务器渲染完的”这个不是很正常吗?不过如果想要用“单纯的前端模版”,可以考虑其他方案:doT/ejs/underscore/handlebar之类的。在前端也可以直接用预编译好的函数,而不是模版文件本身。leungwensen/template2module

@leungwensen 没怎么太懂,我原来在创业公司实习的那一阵,就是可能对mvc的观念毒化比较深,然后就认为前端就应该干前端的活,后台就应该做后台的事情了,那jade这个东西不是就是把前端的东西带到后台,强行在前端跟后台之间加关联了么,类似jsp那样(我是这么理解的,不知道有没有错)

@leungwensen doT那些什么的我是真的没用过了,ejs的话,express好像确实有这个模板的,不过并没有领略到这个东西的意义吧,可能确实把每个部分分离开更容易理解每个文件负责哪里的

jade的意义在于把强制码农把一个复杂的页面拆成几个小的block,这样可以灵活搭配,组合起来复用,而不是象ejs那样把页面写成一团乱麻

@yakczh 那react岂不是更好?

@THCloud 把大页面分解成小组件,这是大的方向,因为以后码农越来越少了,写ejs模板的码农离职了以后,新招进来的码农很难看得懂写成一团乱麻的页面模板,也没有人愿意接手这样的维护工作

你是用angular做单页应用,即只有一个主页面,这个主页面可以在服务端渲染(jade)。之后请求的页面模版都是静态的html页面,和jade没有任何关系。

@huangshaohui 并没懂,我angular的route怎么写? 项目里又没有html

@THCloud angular的router是用来做单页应用的。如果你要做单页应用,请将templateUrl指向静态的html页面,不要指向jade。 如果你做的不是单页应用,那就不需要用angular的router了。

@huangshaohui 是打算做成单页,gulp的js压缩跟css压缩什么都写好了 现在是angular的route的templateurl指向express router对应的url,然后express的router里res。render过去相应的jade 就是服务器渲染的了

@THCloud 既然是单页应用,为何要通过jade返回html,为了用jade而用jade。 对于那些非单页应用,没有jade这样的模版引擎就玩不下去了。

@huangshaohui 我也觉得我这种行为非常213,只是以前没写过模板,想用一次,虽然这个场景根本不适合这个东西 再就是想了解下这东西好处到底在哪了。。。。

angular jade 以及其他模板该选啥前面都说的差不多,基本就是那么个意思。 其实你要问jade存在的意义, jade这东西诞生的时候还没有react,我的看法是有react以后基本没必要用jade了。 如果一定要按照存在即合理的思路来讲的话

@zhuyingda 我也就用这一次,以后没必要我也不碰它了,哈哈。

其实都想多了,我就用一句话来说吧。

有了C,C++的意义何在?或者说,有了C++,C的意义何在,其他语言意义何在?

在说,关心这些小事,还不如多写几行代码。

jade 就是一个单纯的模板的意义吧。楼上说的模板模块化的事情,任何模板都提供类似的复用功能啊。

https://github.com/expressjs/express/wiki?_ga=1.148200951.1354791833.1450773617#template-engines

这里有一大堆的模板引擎可以选择。

在我看来,jade 就是跟 coffeescript 一样,能不废话就不废话,但跟 coffeescript 存在一样的问题:用空格来表示块。

不同的模板引擎,大致有两点不同:

  1. html 的语法不同
  2. 字符串插值的方式不同

我个人是喜欢用 ejs 的。

模板放后台渲染很正常,不要以为所有的应用都像你想的那样可以简单的"前后端分离",很多时候node也算是前端。

@alsotang 哈哈,简单的用 ejs。复杂的用 nunjucks

不是所有人都用angular的。。。如果用angular这类mvvm框架的话传统的模版引擎确实作用不大。。。但是如果不用的话,路由是服务端c层实现的,就只能用jade,ejs之类的

@welefen 是啊,ejs恒久远啊,有时候一些前端环境有 underscore 的话,用起来也通行。虽然for 和 if 之类的啰嗦一点,但至少是容易debug出来的。

我利用ejs做了一个Excel模板引擎, ejsExcel

@huangshaohui templateUrl指向静态的html页面,express的view engine怎么配置?

回到顶部