v2ex.k 新版内测 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
kokdemo
V2EX    分享创造

v2ex.k 新版内测

  •  3
     
  •   kokdemo
    kokdemo 2016-07-11 22:03:58 +08:00 6543 次点击
    这是一个创建于 3461 天前的主题,其中的信息可能已经有所发展或是发生改变。

    距离 v2ex.k 上一个版本已经好久好久了……

    重写的原因

    依稀记得为了写这个插件学习 react 的日子,然而在写完这个插件之后我就再没有写 react 了:P 。

    所以一直没有更新是有理由的。

    这段时间决定重写一下这个插件,全部换成了 vue 。于是就有了目前的这个版本。

    由于是重写,因此没能 100%的还原 react 版本的全部功能(其实我也忘了之前有什么功能了......)。基本完成了样式的重现。

    大概长这样:

    image

    怎么安装:

    最后,希望测试使用的童鞋能多多的反馈建议。能顺手给个star就更好啦!

    35 条回复    2016-07-18 18:38:39 +08:00
    designer
        1
    designer  
       2016-07-11 22:19:48 +08:00
    我还以为是一个域名。。
    DearTanker
        2
    DearTanker  
       2016-07-11 22:22:12 +08:00
    做成插件放 chrome 市场吧,这样加载略嫌麻烦。(其实是我太懒
    learnshare
        3
    learnshare  
       2016-07-11 22:23:28 +08:00
    来,邀请楼主来对比一下 React 和 Vue
    chanssl
        4
    chanssl  
       2016-07-11 22:44:23 +08:00
    适用了一下,不太习惯,视角方向需要左右切换,有点累
    jamesxu
        5
    jamesxu  
       2016-07-11 22:45:39 +08:00 via iPhone
    很好,不用来回翻页
    xhowhy
        6
    xhowhy  
       2016-07-11 23:44:55 +08:00 via iPhone
    何苦用 vue
    mthli
        7
    mthli  
       2016-07-12 00:14:10 +08:00
    :P
    baoguok
        8
    baoguok  
       2016-07-12 02:21:52 +08:00
    这个是基于 api 做的么?
    kokdemo
        9
    kokdemo  
    OP
       2016-07-12 10:30:42 +08:00
    @DearTanker 有上架,但是这是个不完全功能的版本,所以没有全面更新。

    @learnshare 不吹不黑,我个人更喜欢 vue ,等到 2.0 出来之后会更新到 vue2.0 的版本。

    @chanssl 这个比较适合宽屏用,最窄也能支持到 1100px 左右的宽度

    @xhowhy 主要就是手熟……

    @baoguok 并不是,全部拿的是原来页面的数据,整理之后重新展现。
    oott123
        10
    oott123  
       2016-07-12 10:31:22 +08:00   1
    我就知道没有 Firefox 版本
    kokdemo
        11
    kokdemo  
    OP
       2016-07-12 10:33:30 +08:00
    @oott123 应该是没有,但是我会考虑把插件改写成 userscript 的形式。
    oott123
        12
    oott123  
       2016-07-12 10:34:45 +08:00
    @kokdemo 其实 Firefox 最近支持 Web Extensions 了……看你这插件感觉应该改改就能用。
    不过有 userscript 版本最好啦……这样普适性强,在 chrome 下也不用折腾什么开发者模式整天被禁用插件了。
    xhowhy
        13
    xhowhy  
       2016-07-12 10:39:57 +08:00
    @kokdemo @learnshare
    vue2 里貌似没有 shouldComponentUpdate ,但有时候非常有用,举个例子,比如渲染一个实时的新闻列表

    在渲染每行 Cell 的时候,只要重写 Cell 组件的 shouldComponentUpdate ,`return this.props.updateTime === newProps.updateTime `,这样直接就完成了 diff ,简单高效,不需要深度 diff 不需要 Imutable 。
    这样的优化效果是没有 shouldComponentpdate 的方式无法比拟的,后者宣称开发再方便,不支持开发者直接进行优化,在很多时候性能都会被秒成渣。

    如果有了 shouldComponentUpdate , vue2 和 react 又有何区别?所以为毛要用一个小众框架。。
    kokdemo
        14
    kokdemo  
    OP
       2016-07-12 10:40:08 +08:00   1
    @oott123 额,也不是 userscript 最好, chrome 的插件毕竟可以拿到不少的权限,这样我折腾起来也容易的多。
    oott123
        15
    oott123  
       2016-07-12 10:44:39 +08:00
    @xhowhy 你指的是 http://vuejs.org/guide/list.html#track-by 这种功能么?


    @kokdemo 嗯,有道理,不过还是希望能出功能精简的 userscript 或者 firefox 扩展 或者改天我自己移植一下……
    kokdemo
        16
    kokdemo  
    OP
       2016-07-12 10:45:52 +08:00   1
    @oott123 这个项目接下来的方向应该是挪到 electron 里面封装一个 mac 客户端,所以 firefox 扩展靠你了……
    TangMonk
        17
    TangMonk  
       2016-07-12 10:46:24 +08:00
    安装了一个感觉还不错
    oott123
        18
    oott123  
       2016-07-12 10:49:27 +08:00
    @kokdemo 赞。开始开发的时候记得在 V2 发帖,有空我也想 contribute 一些~
    kokdemo
        19
    kokdemo  
    OP
       2016-07-12 10:57:30 +08:00
    @oott123 我都是闷声开发的,只有快成品了才批量 commit ……
    xhowhy
        20
    xhowhy  
       2016-07-12 11:15:05 +08:00
    @oott123 确实可以把我说的场景中,字段合并后进行编码,比如 uid = md5(articleId + updateTime),但这样就显得不太优雅了:

    1. 只是想 diff ,为什么要引入一种消耗性能的 guid 生成方式呢
    2. md5(articleId + updateTime) 这样的方式生成 uid ,然后让框架去对比 uid ,这样做完全不符合开发直觉:我明明可以直接比较 updateTime 字段,为啥要通过 updateTime 小心翼翼地生成一个 uid 呢,还得防止冲突碰撞
    learnshare
        21
    learnshare  
       2016-07-12 11:21:00 +08:00
    @xhowhy 我在 Angular.js 里也用 updateTime 去驱动重新渲染,$watch 深度对比几乎是废物

    因为写 Angular.js 很久了,所以我更倾向于 Vue ,而不是 React 。 React 的许多风格都不喜欢
    oott123
        22
    oott123  
       2016-07-12 11:24:20 +08:00
    @xhowhy 你如果可以直接比较 updateTime ,那你直接写 track-by="updateTime" 就行了嘛,不一定要生成 UID 呀……
    要是后端有现成的 UID ,那也可以正好直接拿过来用嘛。
    xhowhy
        23
    xhowhy  
       2016-07-12 11:57:16 +08:00
    @oott123 两篇文章的 updateTime 一样 那不就错了嘛 至少得 articleId + updateTime
    xhowhy
        24
    xhowhy  
       2016-07-12 12:00:30 +08:00
    @oott123 shouldComponentUpdate 让我自己可以定义比较过程,用 vue 让我不仅得清楚比较过程,还得为这个过程的结果生成一个 uid 。高下立判。
    oott123
        25
    oott123  
       2016-07-12 12:09:54 +08:00
    @xhowhy 那就 track-by="'' + articleId + updateTime" ……感觉看上去还行?
    xhowhy
        26
    xhowhy  
       2016-07-12 12:12:22 +08:00 via iPhone
    @oott123 uid=articleId+updateTime 感觉很 low 理由上一条说了
    kokdemo
        27
    kokdemo  
    OP
       2016-07-12 14:41:24 +08:00   1
    @xhowhy
    @oott123 我还指望着你们反馈一些使用建议和反馈呢,结果你们因为这个吵起来了……
    oott123
        28
    oott123  
       2016-07-12 14:43:06 +08:00
    @kokdemo 不算吵,和谐讨论~
    对离题感到抱歉。 sorry :(
    kokdemo
        29
    kokdemo  
    OP
       2016-07-12 14:50:18 +08:00   1
    @oott123 这个不用抱歉啊,只要能收到有效的反馈我就很开心。
    xhowhy
        30
    xhowhy  
       2016-07-12 17:55:30 +08:00 via iPhone
    @kokdemo 嗯 和谐讨论 你有没有一点点感受到我说的情况
    ClassicOldSong
        31
    ClassicOldSong  
       2016-07-16 07:43:14 +08:00 via Android
    看起来很赞~ star 之~
    dtfm
        32
    dtfm  
       2016-07-18 16:31:01 +08:00
    貌似这个开发者是厨师公司的 PR ,真的挺厉害啊。
    kokdemo
        33
    kokdemo  
    OP
       2016-07-18 18:27:37 +08:00
    @dtfm pr 是啥……
    dtfm
        34
    dtfm  
       2016-07-18 18:37:17 +08:00
    @kokdemo 写错啦, PM ,产品经理啊
    dtfm
        35
    dtfm  
       2016-07-18 18:38:39 +08:00
    @kokdemo 你不就是么!对下厨房一向有好感,想跳去它的 Android 岗,我之前在一个吐槽微博邮箱里见过你的回复就记住了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2333 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 05:15 PVG 13:15 LAX 21:15 JFK 00:15
    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