为什么很多人安装了 express 之后,不使用默认的 jade,反而去使用 ejs 呢? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
pzzrudlf
V2EX    Node.js

为什么很多人安装了 express 之后,不使用默认的 jade,反而去使用 ejs 呢?

  •  1
     
  •   pzzrudlf 2016-02-27 00:41:00 +08:00 10093 次点击
    这是一个创建于 3519 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,我今天刚刚搭建了 node + express 环境,就像修改视图文件的后缀为.html 。但是在 google 方法的时候,发现很多人都不使用默认的 jade 模板引擎,反而使用 ejs 模板引擎。这是为什么?除了 jade 和 ejs 之外,还有其他使用率较高的模板引擎吗?(我是新人,求多多关注:))

    30 条回复    2016-02-29 10:24:00 +08:00
    pzzrudlf
        1
    pzzrudlf  
    OP
       2016-02-27 00:42:41 +08:00
    '像'=>'想'。
    kungfuchicken
        2
    kungfuchicken  
       2016-02-27 00:55:31 +08:00
    因为 jade 真的真的很难用
    fedoral
        3
    fedoral  
       2016-02-27 01:04:36 +08:00 via Android
    hbs 一直在用
    jybox
        4
    jybox  
       2016-02-27 01:33:08 +08:00
    express 默认 jade ?据我所知当前版本的 express 已经移除了所有和具体模板引擎有关的逻辑,你可以在源代码中搜索 `jade` 这个词,只出现在了示例和注释中。

    相比于 ejs 等模板引擎 Jade 的劣势:

    只能渲染 HTML (而很多应用需要渲染非 HTML 内容);
    Javascript 程序员不习惯用缩进来表示层级(很多编辑器对基于缩进表示层级的语言支持也比较差);
    Jade 引擎的代码量是 ejs 的几倍,如果希望在前后端使用同一个模板引擎, jade 可能不是一个好的选择。
    WildCat
        5
    WildCat  
       2016-02-27 01:34:14 +08:00 via iPhone
    我猜楼主是用的 WebStorm
    yyfearth
        6
    yyfearth  
       2016-02-27 02:53:32 +08:00
    主要原因是 jade 需要重写所有的模版
    而 ejs 可以直接复制粘贴现成的 html
    stevenFang
        7
    stevenFang  
       2016-02-27 04:38:40 +08:00
    @yyfearth 你在这里很活跃啊
    yyfearth
        8
    yyfearth  
       2016-02-27 09:05:38 +08:00
    @stevenFang 那是啊

    @jybox 貌似有啊 根据文档 express generator 默认是 jade

    $ express -h

    Usage: express [options] [dir]

    Options:

    -h, --help output usage information
    -V, --version output the version number
    -e, --ejs add ejs engine support (defaults to jade)
    --hbs add handlebars engine support
    jsonline
        9
    jsonline  
       2016-02-27 11:34:21 +08:00 via Android
    因为 Jade 不是 HTML
    adspe
        10
    adspe  
       2016-02-27 12:03:40 +08:00
    jade 确实有点难用。 intent 我一直弄不好
    dphdjy
        11
    dphdjy  
       2016-02-27 12:31:09 +08:00 via Android
    _(:з)∠)_ 把 ejs 换成 jade 的路过~
    jade 比较优雅~~和 coffeescript 一起用~
    画面多美~
    fermatrolle
        12
    fermatrolle  
       2016-02-27 13:31:11 +08:00
    确实,默认是 jade ,但是当时比较着急,就没花时间去学,而且 ejs 入手比较简单。
    CrazySpiderMan
        13
    CrazySpiderMan  
       2016-02-27 13:33:35 +08:00
    用 jade 的话, 如果需要复制 html 代码的, 就把用工具把它转换成 jade 就是了. jade 代码易读些.
    Twinkle
        14
    Twinkle  
       2016-02-27 13:47:32 +08:00
    @dphdjy es6 推广开来之后感觉 coffee 快死了_(:з)∠)_
    Wangxf
        15
    Wangxf  
       2016-02-27 14:04:09 +08:00
    jade :不是 html ,现成的 html 还要借助 html2jade (本身有小小的问题)转成 jade ,而且团队协作麻烦不小
    ejs :很不错,但是受不了各种内嵌,看着很烦
    hbs: 可以,但是有些功能比较薄弱
    最后选择了无比强大的[nunjucks]( http://mozilla.github.io/nunjucks/cn/templating.html)
    dphdjy
        16
    dphdjy  
       2016-02-27 14:48:33 +08:00 via Android
    @Twinkle 不不~私以为主要是 typescript 出来~coffeescript 快死了~~然而我偶尔小脚本还在用~ 多美~_(:з)∠)_
    visonme
        17
    visonme  
       2016-02-27 14:52:43 +08:00
    多是一种习惯吧
    jade 语法简洁了很多,但是我还是喜欢写 html 标签,看的顺眼
    zyguan
        18
    zyguan  
       2016-02-27 15:50:27 +08:00
    dsl 简洁是简洁,但多了学习成本,要想用好还得深入其实现,再说有了 emmet 等神器, html 写起来也不算费事。当然,团队合作也是个事儿~
    Keviw
        19
    Keviw  
       2016-02-27 15:55:44 +08:00
    @dphdjy +1 我也觉得 jade 很 NICE (易读、简洁),但是如果想移植 html 文件到 jade 就得重写,很影响效率,现在看来大多人普遍会采用 ejs 来开发项目。
    hxtheone
        20
    hxtheone  
       2016-02-27 15:58:37 +08:00 via iPhone
    写 jade 行数一多就觉得有点控制不住
    breeswish
        21
    breeswish  
       2016-02-27 16:21:32 +08:00
    nunjucks 路过, ejs 就像拿 PHP 当做模板引擎一样,写多了就会发现其实很蛋疼哒
    nunjucks 和 Twig (PHP), Jinja (Python) 等是类似的语法
    loading
        22
    loading  
       2016-02-27 16:46:39 +08:00 via Android
    @breeswish nunjucks 有坑吗?我习惯而且喜欢用 jinja2 。
    Threezj
        23
    Threezj  
       2016-02-27 17:05:09 +08:00
    jade 需要学习成本呀。
    breeswish
        24
    breeswish  
       2016-02-27 17:06:21 +08:00
    @loading 感觉用起来几乎完全一致
    wentao
        25
    wentao  
       2016-02-27 19:23:23 +08:00 via Android
    可以看看 swig 。 Django 就是内置的这个引擎 感觉比较简单
    wizardforcel
        26
    wizardforcel  
       2016-02-27 19:49:52 +08:00
    因为 jade 不是 html 啊
    dphdjy
        27
    dphdjy  
       2016-02-28 02:29:31 +08:00 via Android
    @Keviw 我感觉 jade 最麻烦不是这点
    除非已经有了 html ,进行重构,否则 jade 各方面优势都很大
    但是 jade 拓展有点问题~(也许我姿势不对
    因为用 tab 排版,对于有些格式的内容,怎么写都有点奇怪~~
    ejs 写多了简直一团乱麻~我还没找到好用的格式化工具
    w88975
        28
    w88975  
       2016-02-28 20:48:14 +08:00
    jade 的可读性太差,反而 ejs 更符合大部分人对 HTML 语法的认识(除了 ejs 的模板引擎语法,其他都是纯统的 HTML 语法)
    yimity
        29
    yimity  
       2016-02-29 09:38:15 +08:00
    我目前也慢慢的切换到 nunjucks 了。
    之前是 swig ,和 nunjucks 语法基本一样。
    在之前是 ejs , jade 需要转换。麻烦。
    SoulClinic
        30
    SoulClinic  
       2016-02-29 10:24:00 +08:00
    直接用 React.js 不用模板语言。。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2974 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 12:59 PVG 20:59 LAX 05:59 JFK 08:59
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86