jade是面向后台开发员的模板语言,体验过各种语言各种模板之后,个人认为jade最佳应用场景就是小型开发,就是从后台到前台一脚踢的情况,它能以最少的代码量最快的速度构建出一个像模像样的网页架构,对于大部分不具备美工技能的coder来说,这就足够了。除此之外,放弃jade吧。jade只是个单人play的玩具罢了。
html是页面结构,jade正好体现了这一点,以前写html很随意,为了调试方便,经常把css,js函数写到里面,页面复杂以后,很多时间花在调整格式,标签配对了,jade的机制强制让html保留页面结构,表现和运作都分离出去,即使页面复杂,而且程序生成的html没有标签错乱的问题,就象在sass中写嵌套的样式,避免了外层样式输错或者更新引起的问题,每个模板都能清楚地看到这个页面的结构和要呈现的数据形式. 至于1万行的页面模板,平时一般的页面大小在5k-10k之间,这个极端情况很少遇到,平时每页列表的数据不会超过30行,对于现实情况中大部分模板的差异微乎其微,如果要1万行的页面,那可以生成静态页或者输出json数据专到页面js变量,然后在页面中用js来渲染
说学html有点言重了,做开发的,很少听说说学html的,一般都是学c++,学设计模式什么的听得比较多 ,html标签都是所见即所得,就跟word里点按扭是一样的效果,jade只不过把html标签中必不可少的部分提练出来了 比如html 要写
<div id="xxx " > ooo </div>
jade只需要写
#xxx
就可以 如果jade能称上得累缀的话,你让nodejs异步处理里面的async,step,promise,enentproxy这些情何以堪
我要写一个000那应该怎么样 还是要写html 我们就说了解html吧,
你说胡后面这些库是为了使代码更容易读懂,解决nodejs回调嵌套过深,并且有时代码当中又有比较复杂的逻辑,所以上述这些库很有存在的必要。html中会有很复杂的逻辑吗,会有很深的嵌套吗?
所以我还是认为jade就是鸡肋,没有什么意义
@chloe html html 有没有很深的嵌套,取决于你开发什么样的页面 随便打开一个主流网站用firebug看下页面结构,当然你是开发一些玩具网站就不必纠结了 html的逻辑复杂在于css样式的优先级还有不同浏览器的对Css样式解释的差异,jade从一开始在技术层面就培养了一个好的习惯,让结构与表现尽量独立,省了以后页面嵌套而引起各种低级错误,而那种混写的习惯完全取决于个人偏好,当然不也排除有人在ejs里结构,行为,样式完全独立分开写,但大部分人还是写成一团乱麻,到最后了在调页面兼容性的时候越改越乱,纠结在标签不匹配,引号不匹配,样式表与内联样式与js设置的样式冲突这些转义不对等各种低级错误上,而jade从一开始用技术手段就避免了这些问题,让你专注于内容和数据
@yakczh 如果你的页面都嵌套那么深了,还是程序员在写页面吗!!! 并且html与css的这些差异后端根本不用过多关心,你说了那么多,看起来都是程序员把前后端都完成了一样。。。。。
我打开了taobao看到很多嵌套也没有超过10层,不知道你是开发哪种复杂的网站。。。。
“满眼的%,根本无法维护了”,你让写jsp,php的人情何以堪啊!!!难道现在的jsp,php都是无法维护了? 就我个人而言,根本不喜欢jade,更喜欢ejs,因为ejs有更广泛的支持度。任何写jsp,php的人几乎是0成本就能上手ejs。反观jade,就算是资深的web前端开发,有几个人会去学??看看nodejs为什么会那么火,如果nodejs不是用V8引擎,不是用javascript语法,用一个作者自己造的语法,会这么火吗? 在团队里,我只要拿出ejs文件,给一个应届毕业生,人家立马就可以上手干活了。 如果是一个jade文件呢,你觉得有多少人可以上手?
jade这种语法,我觉得和coffeeScript一样,个人玩玩还可以,商业项目开发,还是算了吧。
只有适合自己的,没有更好的,用了才知道。 我个人原来倾向于ejs,现在自己搞了一个,在JsonML基础上改进的。
https://github.com/coordcn/mark
var temp = [
'doctype',
['html',
['head',
['meta',
{charset: 'utf-8'}
],
['link',
{href: 'main.css',
rel: 'stylesheet',
type: 'text/css'
}
]
],
['body',
['div',
{class: function(data){
if(!data && !data.class) return '';
return data.class;}
},
function(data){
if(!data && !data.table && !data.table.length) return '';
var table = ['table'];
var tbody = ['tbody'];
var tdata = data.table
var len = tdata.length;
for(var i = 0; i < len; i++){
var d = tdata[i];
if(!d && d.length) continue;
var tr = ['tr'];
for(var j = 0, l = d.length; j < l; j++){
var val = d[j] ? d[j] : '';
var td = ['td'];
td.push(val);
tr.push(td);
}
tbody.push(tr);
}
table.push(tbody);
return table;
}
]
]
]
];
原汁原味的js,代码变多了,但是也更灵活,好坏要看各人取舍了。
开发效率,灵活,简洁,很多时候是矛盾的,这个就在于自己的取舍。不管用什么技术,自己吃透了才是王道。
只有丑陋的代码,没有丑陋的语言。