V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
jarlyyn
V2EX  ›  问与答

knockout.js 有什么坑么?

  •  1
     
  •   jarlyyn · 2015-04-03 14:57:02 +08:00 · 11211 次点击
    这是一个创建于 3554 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如题。

    用过一些前端mv*的框架,如backbones,angular。

    最近自己弄了个小玩具。基本是后台nodejs跑服务(mud脚本),前台通过socket.io更新状态,利用node.js显示一个类似app的界面。

    angular感觉太重而且不方便和jQuery一起用,backbones没有数据绑定。看了react.js感觉更不靠谱了。那是做大型的项目的底层组件。我只是做一个简单的应用程序的界面而已。

    然后看了knockout.js,感觉异常合适。我不需要model.不需要router.不需要controller.只需要一个databind的view.

    但不论是google trend还是论坛上的讨论,感觉knockout都没杀人关注了,是不是有什么看文档看不出来的坑?
    16 条回复    2015-11-12 11:53:25 +08:00
    ituren
        1
    ituren  
       2015-04-03 15:12:55 +08:00   ❤️ 1
    如果只是要单向data驱动view的话
    一般的template就可以了吧
    就1K左右而已
    jarlyyn
        2
    jarlyyn  
    OP
       2015-04-03 15:21:26 +08:00
    @ituren
    双向,而且在更新一个值后,界面上可能有多个元素要更新。

    而且元素数量可能还不定。
    ETiV
        3
    ETiV  
       2015-04-03 15:55:21 +08:00   ❤️ 1
    推荐关注 / 使用 vue.js ; 好用, 坑少, 易上手.
    mcfog
        4
    mcfog  
       2015-04-03 16:02:25 +08:00   ❤️ 1
    knockout 比较古老,但真正的竞品应该只有vuejs一家

    knockout兼容性比较好,但`.name()`读 `.name(value);`写 相对啰嗦
    vuejs牺牲了兼容性换取更直观的API(直接属性读写)

    印象当中ko的“虚拟元素”也就是类似<!--ko xxx-->的形式在vuejs中没有找到替代,然后vuejs里面自定义行为感觉比ko舒服一点
    jarlyyn
        5
    jarlyyn  
    OP
       2015-04-03 16:54:19 +08:00
    @ETiV

    谢谢推荐。

    但是vue有浏览器兼容性要求的吧?

    我去看下。
    ETiV
        6
    ETiV  
       2015-04-03 17:03:18 +08:00
    @mcfog 其实我没用过 knockout~

    虚拟元素, 我看了一下官方文档
    http://knockoutjs.com/documentation/custom-bindings-for-virtual-elements.html

    感觉跟我遇到的情况类似:

    前两天写代码的时候, 碰到了 dl > dt,dd 的 repeat 问题. 又不像 ul > li , 琢磨了半天.
    后来从官方 issues 看到了项目发起人的回复:

    "使用 <template> 标签完成这个功能."

    具体就是
    ```
    <dl>
    __<template v-repeat="rows">
    ____<dt>{{title}}</dt>
    ____<dd>{{content}}</dd>
    __</template>
    </dl>
    ```

    不知道有没有格式., 先用下划线顶上...
    jarlyyn
        7
    jarlyyn  
    OP
       2015-04-03 17:05:22 +08:00
    @ETiV
    vue不支持IE8......

    我在公司的兼容性也只能推行到无视ie6,7而已。

    ie8可是现在国内占有率最高的……
    ETiV
        8
    ETiV  
       2015-04-03 17:07:56 +08:00
    @mcfog 我又细看了一下, 可能我对virtual elements理解有误~~
    ETiV
        9
    ETiV  
       2015-04-03 17:11:03 +08:00
    @jarlyyn 看你说 "最近自己弄了个小玩具", 以为是自用的呢
    jarlyyn
        10
    jarlyyn  
    OP
       2015-04-03 17:15:21 +08:00
    @ETiV

    的确自用的,拿自用的东西试手,好用就推广,不好用拉倒……
    2code
        11
    2code  
       2015-04-03 17:21:36 +08:00
    KO有点太老了,感觉没有推广的必要了,试试其他的MV*框架
    iwege
        12
    iwege  
       2015-04-03 18:05:43 +08:00
    习惯backbone的话配合http://rivetsjs.com/ 可以解决一些view的data bind问题。
    clino
        13
    clino  
       2015-04-03 20:18:24 +08:00 via Android
    avalonjs 可以和 jq 一起用
    thinkif
        14
    thinkif  
       2015-04-03 20:45:32 +08:00   ❤️ 1
    手里有个内部管理类的Web应用用的是KO,正常双向绑定什么的没有明显大坑,当然功能也相对其他的 MV* 来的简单
    onlyurei
        15
    onlyurei  
       2015-04-29 06:03:23 +08:00
    用了3年的knockout,so far so good。
    刚开源我用knockout和其他几个库搭起来的微型单页程序框架,有兴趣可以试用:
    https://github.com/onlyurei/knockout-spa
    Axurez
        16
    Axurez  
       2015-11-12 11:53:25 +08:00
    @mcfog 还有 jsblocks
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3612 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 04:22 · PVG 12:22 · LAX 20:22 · JFK 23:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.