V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
pzzrudlf
V2EX  ›  Node.js

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

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

    如题,我今天刚刚搭建了 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   ·   实用小工具   ·   911 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 22:06 · PVG 06:06 · LAX 14:06 · JFK 17:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.