本人学生狗一枚,最近正在学习用mean做一点东西出来(其实是毕设),然后在jade上碰到了一些疑问, jade是express默认的模板,因为里面都是emmet的语法,不陌生,所以就用了,但是我前端用的是angular,这个东西又是在服务器渲染 所以我angular的路由又不能直接templateUrl指向jade文件,得传服务器渲染完的 但是现在这个推崇前后端分离开发,把前端的东西带到后台,真的有必要么 用html写也可以,而且可能逻辑上比jade更简单,但是存在即真理,我还是很想知道jade的意义在哪里
望大牛们解答下
模版存在的意义就是“复用”。“传服务器渲染完的”这个不是很正常吗?不过如果想要用“单纯的前端模版”,可以考虑其他方案: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,只是以前没写过模板,想用一次,虽然这个场景根本不适合这个东西 再就是想了解下这东西好处到底在哪了。。。。
@zhuyingda 我也就用这一次,以后没必要我也不碰它了,哈哈。
其实都想多了,我就用一句话来说吧。
有了C,C++的意义何在?或者说,有了C++,C的意义何在,其他语言意义何在?
在说,关心这些小事,还不如多写几行代码。
jade 就是一个单纯的模板的意义吧。楼上说的模板模块化的事情,任何模板都提供类似的复用功能啊。
https://github.com/expressjs/express/wiki?_ga=1.148200951.1354791833.1450773617#template-engines
这里有一大堆的模板引擎可以选择。
在我看来,jade 就是跟 coffeescript 一样,能不废话就不废话,但跟 coffeescript 存在一样的问题:用空格来表示块。
不同的模板引擎,大致有两点不同:
- html 的语法不同
- 字符串插值的方式不同
我个人是喜欢用 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怎么配置?