做有态度的前端团队

网易FEG前端团队

Why We Chose Vue.js

##Why We Chose Vue.js

翻译一篇来自gitlab官方博客所写的文章作为vuejs的介绍推荐。个人觉得vuejs是一个非常值得学习的框架。

原作者 Jacob Schatz
原文链接 Why We Chose Vue.js

我几周前在采访中跟一个被采访者有过一个很棒的关于个人应该如何选择JavaScript框架的讨论。

他指出当一个主流软件公司开发他们的秘密核心代码时,一般都是为了大肆宣传自己。开发者一般都会这样暗自考虑:“这个公司写的JS跟我不太一样,而他们都是杰出并成功的。是否他们写JS代码的方式就比我的强?所以我必须适应他们?”

他们的秘密源代码也许非常棒,但并不因为其他人很兴奋就应该假设这值得敬畏。你不会并不理解溢出的内容就简单的进行复制粘贴一个答案,所以为什么要去复制粘贴一个完整的框架?

这就是为什么我们决定在GitLab上使用Vue.js框架。

####简洁易用
首先使我们考虑Vuejs的理由是它能促使我们团队非常容易的写简单的JavaScript。开始学习Vuejs是极其极其简单的。源代码可读,文档不多不少的仅包含你需要的指引。你不需要额外的库。你可以用也可以不用JQuery。你不需要安装任何插件,但有很多可选。我个人非常喜欢Vuejs的源生机制,而然我需要的时候我也可以接触到vue的源码部分。把vuejs对接上现有代码直接流畅。对于vuejs并没有什么特别的魔法,其实从内到外他都是被设置为对象。

我跟很多JavaScript的开发交谈过,有意思的是有些人几乎把所有时间都花在了Angular上并看上去不了解JavaScript本身。我并不希望我或者我们的开发团队变成这样。为什么我们要写“不是JavaScript本身”的代码。

我回忆下当我用Backbone的时候,我必须强迫自己保持DRY(这里原文是DRY,猜测作者想表达自己思考必须清晰的意思),因为这几乎就是一个空白的canvas给你画。Vuejs并不对其他的地方做任何假设,它只假设你的数据会改变。

但Vuejs在它会帮你做什么和那些事情你可以自己搞定中间保持了一个完美的平衡。如果Backbone处于无政府混乱状态而Angular是独裁专制。那我必须要说Vuejs就像社会主义(并非我国特色社会主义):你肯定被vue框架支配了,但它保持在一个可沟通的状态,作为一个健壮,但有极其灵活的安全网帮助你保证你的程序高效运行而DOM修改幅度最小。

先看一个简单的栗子:

<div id="journal">
  <input type="text" v-model="message">
  <div>{{message}}</div>
</div>
var journal = new Vue({
    el: '#journal',
    data: {
        message: 'Your first entry'
    }
});

如果你已经看过JavaScript的库,这个例子中的所有东西不需要文档你都能看懂。对于其他常见框架,一般简单的好消息就到此为止了。你在“开始学习”的时候拿到了一个简单漂亮的栗子。但事实是你学完了那些框架之后(尝试解决问题的时候)事情变得越来越复杂。但这些并没有在vue身上出现,真实使用的情况和学习文档栗子一样简单。

这就是我们热爱vuejs的点:他优雅的吧结构和简单结合在了一起。用于显示内容的数据是一个叫做“data”的对象,但这个数据可以直达页面并展现出任何你想要的样子。所有你将要写的函数并作为事件的回调都被放在了叫做"methods"的对象里,但他们可以干任何事并返回你想要的任何东西。Vue只是感知变化并更新你的需要的视图。所以你写更少的代码。(搞定了dom自动更新这一点已经算是帮了大忙了,更何况能更好的管理和分解代码结构并合理的管理整个页面的逻辑。)

####Vue.js+GitLab === Less code

所以对于GItLab这解决了什么问题?当我加入的时候,所有JavaScript都依赖JQuery。这没任何毛病,除了需要多写几行代码来解决每个问题罢了。但我知道我们可以干的更好。当我们开始使用Vue.js,马上就发现可以立刻并轻易的在更少的时间内解决更复杂的问题。

一个应用在我们实际生产环境中简单但非常实际的栗子是:对于一个GitLab发布中,发布状态显示不是 closed 就是 open。这个简单的值会被非常频繁的修改并影响多个视觉效果。如果是用JQuery,我们需要大概30行左右的代码去扩散这些修改结果,这些修改包括手动检索整个DOM中并修改多个class。

在Vue.js中,这只需要一行JavaScript,而我们添加在HTML中的代码也只是增加了几个额外的属性。

尤雨溪大神知道写一个干XX的好框架并不光是写伟大的代码。你需要卓越的文档,一个强壮有力的社区互相帮助学习,一堆对此提供支持的库和插件帮助用户解决硬核问题,然后高效的反馈循环能让用户反馈帮助框架有着明确的功能意思。Vue有以上所有这些,并且有着伟大的代码。这就是为什么我们用它,你呢?

手机阅读请扫描下方二维码:

none
上一篇:十月知识记录   下一篇:浅谈css3的混合模式

已有 41 条评论

  1. vuejs确实是个好框架,个人感觉门槛和学历成本比react要低,有点更偏向前端的开发方式~~~

  2. admin

    12345678 ali-40.gif ali-41.gif ali-42.gif ali-43.gif ali-44.gif ali-45.gif ali-46.gif ali-47.gif ali-48.gif ali-49.gif ali-50.gif ali-51.gif ali-53.gif ali-54.gif ali-55.gif ali-56.gif ali-57.gif ali-58.gif ali-59.gif ali-60.gif ali-61.gif

    1. admin

      12345678 ali-40.gif

  3. 12345678 ali-40.gif ali-41.gif ali-42.gif ali-43.gif ali-44.gif ali-45.gif ali-46.gif ali-47.gif ali-48.gif ali-49.gif ali-50.gif ali-51.gif ali-53.gif ali-54.gif ali-55.gif ali-56.gif ali-57.gif ali-58.gif ali-59.gif ali-60.gif ali-61.gif

  4. admin

    12345678 ali-40.gif ali-41.gif ali-42.gif ali-43.gif ali-44.gif ali-45.gif ali-46.gif ali-47.gif ali-48.gif ali-49.gif ali-50.gif ali-51.gif ali-53.gif ali-54.gif ali-55.gif ali-56.gif ali-57.gif ali-58.gif ali-59.gif ali-60.gif ali-61.gif

  5. admin

    12345678 ali-40.gif ali-40.gif ali-40.gif

  6. 1

    1 ali-40.gif ali-40.gif ali-41.gif ali-41.gif ali-42.gif ali-42.gif ali-43.gif ali-43.gif ali-44.gif ali-44.gif ali-45.gif ali-45.gif ali-46.gif ali-46.gif ali-47.gif ali-47.gif ali-48.gif ali-48.gif ali-49.gif ali-49.gif ali-50.gif ali-50.gif ali-51.gif ali-51.gif ali-52.gif ali-52.gif ali-53.gif ali-53.gif ali-54.gif ali-54.gif ali-55.gif ali-55.gif ali-56.gif ali-56.gif ali-57.gif ali-57.gif ali-58.gif ali-58.gif ali-59.gif ali-59.gif ali-60.gif ali-60.gif ali-61.gif ali-61.gif

  7. 1

    1 ali-40.gif ali-40.gif ali-41.gif ali-41.gif ali-42.gif ali-42.gif ali-43.gif ali-43.gif ali-44.gif ali-44.gif ali-45.gif ali-45.gif ali-46.gif ali-46.gif ali-47.gif ali-47.gif ali-48.gif ali-48.gif ali-49.gif ali-49.gif ali-50.gif ali-50.gif ali-51.gif ali-51.gif ali-52.gif ali-52.gif ali-53.gif ali-53.gif ali-54.gif ali-54.gif ali-55.gif ali-55.gif ali-56.gif ali-56.gif ali-57.gif ali-57.gif ali-58.gif ali-58.gif ali-59.gif ali-59.gif ali-60.gif ali-60.gif ali-61.gif ali-61.gif

  8. 1

    1 ali-40.gif ali-40.gif ali-41.gif ali-41.gif ali-42.gif ali-42.gif ali-43.gif ali-43.gif ali-44.gif ali-44.gif ali-45.gif ali-45.gif ali-46.gif ali-46.gif ali-47.gif ali-47.gif ali-48.gif ali-48.gif ali-49.gif ali-49.gif ali-50.gif ali-50.gif ali-51.gif ali-51.gif ali-52.gif ali-52.gif ali-53.gif ali-53.gif ali-54.gif ali-54.gif ali-55.gif ali-55.gif ali-56.gif ali-56.gif ali-57.gif ali-57.gif ali-58.gif ali-58.gif ali-59.gif ali-59.gif ali-60.gif ali-60.gif ali-61.gif ali-61.gif

  9. 1

    1 ali-40.gif ali-40.gif ali-41.gif ali-41.gif ali-42.gif ali-42.gif ali-43.gif ali-43.gif ali-44.gif ali-44.gif ali-45.gif ali-45.gif ali-46.gif ali-46.gif ali-47.gif ali-47.gif ali-48.gif ali-48.gif ali-49.gif ali-49.gif ali-50.gif ali-50.gif ali-51.gif ali-51.gif ali-52.gif ali-52.gif ali-53.gif ali-53.gif ali-54.gif ali-54.gif ali-55.gif ali-55.gif ali-56.gif ali-56.gif ali-57.gif ali-57.gif ali-58.gif ali-58.gif ali-59.gif ali-59.gif ali-60.gif ali-60.gif ali-61.gif ali-61.gif

  10. 1

    1

  11. 1

    1

  12. 1

    1

  13. 1

    1

  14. 1

    1

  15. 1

    1

  16. 1

    1

  17. 1

    1

  18. 1

    1

  19. 1

    1

  20. 1

    1

  21. 1

    1

  22. 1

    1

添加新评论

ali-40.gifali-41.gifali-42.gifali-43.gifali-44.gifali-45.gifali-46.gifali-47.gifali-48.gifali-49.gifali-50.gifali-51.gifali-52.gifali-53.gifali-54.gifali-55.gifali-56.gifali-57.gifali-58.gifali-59.gifali-60.gifali-61.gif