<p><span class="img-wrap"><img data-src="/img/bVrMcT" src="/img/bVrMcT" alt="clipboard.png" title="clipboard.png" style="cursor: pointer; display: inline;"></span></p> <p>2015年对<code><a href="http://www.js-code.com/tag/vue" title="Vue" target="_blank">Vue</a>.js</code>来说是高速发展的一年。这个项目的发展已经超出了我的预期,所以我打算做一个回顾并阐述一些观点。</p> <h2 id="articleHeader0">开头</h2> <h3 id="articleHeader1">使用情况</h3> <ul> <li> <p><code>NPM</code>下载量: <strong>382,184</strong>, <strong>~52k</strong>每月</p> </li> <li> <p><code>GitHub Stars</code>数量: <strong>11,357</strong></p> </li> </ul> <p>很遗憾,<code>Bower</code>和CDNs没有办法提供下载统计 - 应该至少与上面的数据相持平,因为有相当一部分的<code><a href="http://www.js-code.com/tag/vue" title="Vue" target="_blank">Vue</a>.js</code>使用者直接从CDN引用并将它用于非SPA页面。</p> <p><code>GitHub star</code>数量从二月份到现在有了<strong>7.6k+</strong>的增长。相比之下,<code><a href="http://www.js-code.com/tag/vue" title="浏览关于“Vue”的文章" target="_blank" class="tag_link">Vue</a>.js</code>在发布的第一年(2014二月 至 2015 二月)只获得了<em>~3.6k</em>的<code>stars</code>。</p> <h3 id="articleHeader2">Repo 活动记录</h3> <ul> <li> <p>版本数量: <strong>54</strong> (从 <code>0.11.5</code> 到 <code>1.0.12</code> , 包含 <code>alpha</code>/<code>beta</code>/<code>rc</code> 版本)</p> </li> <li> <p>代码提交次数: <strong>1,023</strong></p> </li> <li> <p>关闭的<code>Issues</code>数量: <strong>1,014</strong></p> </li> <li> <p><code>Pull Requests</code>合并数量: <strong>69</strong>个(从<strong>43</strong>个贡献者)</p> </li> </ul> <h3 id="articleHeader3">Vuejs.org 官网数据</h3> <ul> <li> <p>页面浏览次数: <strong>3,761,728</strong></p> </li> <li> <p>累计浏览人数: <strong>363,365</strong></p> </li> <li> <p>30天内活跃人数: <strong>76,090</strong></p> </li> </ul> <h2 id="articleHeader4">亮点</h2> <h3 id="articleHeader5">被Laravel社区采用</h3> <p>一切的开始来自于……</p> <blockquote> <p><a href="http://www.js-code.com/tag/react" title="React" target="_blank">React</a>学起来真是太费劲了。<a href="https://twitter.com/vuejs" rel="nofollow noreferrer" target="_blank">@vuejs</a>看起来挺容易的,而且网站挺不错的。?</p> <p>— Taylor Otwell (@taylorotwell) <a href="https://twitter.com/taylorotwell/status/590281695581982720" rel="nofollow noreferrer" target="_blank">April 20, 2015</a></p> </blockquote> <p><code>Taylor Otwell</code>是<a href="https://laravel.com/" rel="nofollow noreferrer" target="_blank">Laravel</a>的作者,选用了<code>Vue.js</code>做为他新的前端库以代替<code><a href="http://www.js-code.com/tag/react" title="React" target="_blank">React</a></code>。不久之后<code>Jeffrey Way</code>在<a href="https://laracasts.com/" rel="nofollow noreferrer" target="_blank">laracasts</a>录制了教学视频用来安利<code>Vue.js</code>。现在很多的<code>Vue.js</code>活跃用户就是来自Laravel社区。现在有很多非常Cool的开源项目就是这两个技术的结晶,比如<a href="http://koel.phanan.net/" rel="nofollow noreferrer" target="_blank">Koel</a>。</p> <h3 id="articleHeader6">发布<code>1.0</code><br /> </h3> <p><code>1.0</code>版本的开发真是一个艰难的工作:认真考虑反对的声音,漫长的时间,倾听关于模板语法修改的讨论。但最终我相信我们做出了让大多数人满意的结果。<code>1.0</code>版本有着升级警告提示并且完全向后兼容,因此我对提供了无缝升级这件事十分的自豪。</p> <p><code>1.0</code>的发布对于这个项目的采用来说是一个不错的宣传。这个发布在<code>HackerNews front</code>页面呆了有段时间,收到了超过<strong>300</strong>个赞成票。<code>GitHub star</code>的数量激增,从那之后<code>Vue.js</code>几乎每天都呆在<code>GitHub JavaScript trending</code>的列表里。在Google统计中,<code>Vue.js</code>有着不错的增长率,<a href="https://www.google.com/trends/explore#q=vuejs%20+%20vue.js,%20backbone.js%20+%20backbonejs,%20emberjs%20+%20ember.js&amp;cmpt=q&amp;tz=Etc/GMT+5" rel="nofollow noreferrer" target="_blank">最近超过了Backbone和Ember</a>。</p> <h3 id="articleHeader7">不断壮大的生态系统</h3> <p>除了Vue.js这个核心,我们现在也提供了一整套的库和工具以用来构建大型应用:</p> <ul> <li> <p><a href="https://github.com/vuejs/vue-loader" rel="nofollow noreferrer" target="_blank">vue-loader</a> 和 <a href="https://github.com/vuejs/vueify" rel="nofollow noreferrer" target="_blank">vueify</a> 用于构建基于组件的开发</p> </li> <li> <p><a href="https://github.com/vuejs/vue-router" rel="nofollow noreferrer" target="_blank">vue-router</a> 用于SPA路由</p> </li> <li> <p><a href="https://github.com/vuejs/vue-devtools" rel="nofollow noreferrer" target="_blank">vue-devtools</a> 用于页面调试</p> </li> <li> <p><a href="https://github.com/vuejs/vuex" rel="nofollow noreferrer" target="_blank">vuex</a> 用于大型项目的状态管理</p> </li> </ul> <p>当然也有很多<a href="https://github.com/vuejs/awesome-vue#libraries--plugins" rel="nofollow noreferrer" target="_blank">社区贡献的项目</a> - 分享你创造的东西吧!</p> <h3 id="articleHeader8">当嘉宾!</h3> <p>我在今年做了好多次的播客,主要是去谈论<code>Vue.js</code>的。这些播客谈到了<code>Vue.js</code>很多深层次的话题,如果你对这些技术细节有兴趣,那么非常值得一听!</p> <ul> <li> <p><a href="https://devchat.tv/js-jabber/187-jsj-vue-js-with-evan-you" rel="nofollow noreferrer" target="_blank">JavaScript Jabber</a></p> </li> <li> <p><a href="https://changelog.com/184/" rel="nofollow noreferrer" target="_blank">The Changelog</a></p> </li> <li> <p><a href="http://www.fullstackradio.com/30" rel="nofollow noreferrer" target="_blank">Fullstack Radio</a></p> </li> <li> <p><a href="http://teahour.fm/2015/08/16/vuejs-creator-evan-you.html" rel="nofollow noreferrer" target="_blank">Teahour.fm (中文)</a></p> </li> </ul> <h2 id="articleHeader9">思考 - The Progressive Framework</h2> <p>经常有人问我<code>Vue.js</code>和其他的框架相比有何优缺点。这当中有大量的技术细节,在我的播客中已经谈论的足够多了。最根本的问题在于为什么<code>Vue.js</code>存在,它的最终目标是什么。老实说,我也经常这样问我自己 - 尤其是在这个几乎人人都在高谈阔论<code><a href="http://www.js-code.com/tag/react" title="浏览关于“React”的文章" target="_blank" class="tag_link">React</a></code>的2015年。撇掉<code>React</code>的优势不谈,有相当的人喜欢使用<code>Vue.js</code> - 事实上,人数越来越多。每隔几天我都可以在推特看到关于<code>Vue.js</code>如何改变了别人的开发方式。这使得我坚信<code>Vue.js</code>正在填补现有web开发的不足之处。</p> <p>web开发覆盖的方向非常多,每一个web开发方向都非常的不同。从静态内容网站到复杂的企业应用,人们的构建方式几乎完全不同。每一个解决方案都是针对特定的问题而生的。例如,当尝试管理大型复杂应用的时候,侵入性强的框架往往会引入一些额外没有什么价值的复杂度到团队架构中,这些概念和工具使得简单的事情变得复杂。另一方面,当把一些大大小小的库组合在一起来处理大型应用时,各种调研、开发和配置的工作变得多的吓人。</p> <div class="google-auto-placed ap_container" style="text-align: center; width: 100%; height: auto; clear: none;"><ins data-ad-format="auto" class="adsbygoogle adsbygoogle-noablate" data-ad-client="ca-pub-6330872677300335" data-adsbygoogle-status="done" style="display: block; margin: auto; background-color: transparent;"><ins id="aswift_4_expand" style="display:inline-table;border:none;height:175px;margin:0;padding:0;position:relative;visibility:visible;width:697px;background-color:transparent;"><ins id="aswift_4_anchor" style="display:block;border:none;height:175px;margin:0;padding:0;position:relative;visibility:visible;width:697px;background-color:transparent;"><iframe width="697" height="175" frameborder="0" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" scrolling="no" allowfullscreen="true" onload="var i=this.id,s=window.google_iframe_oncopy,H=s&amp;&amp;s.handlers,h=H&amp;&amp;H[i],w=this.contentWindow,d;try{d=w.document}catch(e){}if(h&amp;&amp;d&amp;&amp;(!d.body||!d.body.firstChild)){if(h.call){setTimeout(h,0)}else if(h.match){try{h=s.upd(h,i)}catch(e){}w.location.replace(h)}}" id="aswift_4" name="aswift_4" style="left:0;position:absolute;top:0;border:0px;width:697px;height:175px;"></iframe></ins></ins></ins></div> <p>我相信<code>Vue.js</code>是正确的,它解决了大多数基本的web开发问题 - 通过声明映射状态到<a href="http://www.js-code.com/tag/dom" title="DOM" target="_blank">DOM</a> - 将侵入性降到最小。如果这正是你想要的,那么这种复杂程度能立马被控制住。当项目的规模开始膨胀,你可能会开始使用组件,但它并不一定必须是一个SPA的。对于真正的SPA来说,你可以使用<code>vue-router</code>,然后你可以考虑是否使用模块构建系统。最终,对于一个成熟的模块化的SPA来说,你还可以考虑是否用<code>Vuex</code>来管理状态……</p> <p>这就是我所说的<code>Progressive Framework</code>: 关键在于我们是否能够让框架跟随项目的复杂需求一起增长。但你开始扩展的时候,你将不必在数不清的解决方案中苦苦筛选,因为这里有着官方解决方案并配有文档,这些解决方案本身就是被设计用于一起工作的。(当然,你也可以用点别的东西把他们替换掉)。在<code>progressive framework</code>中,你的框架相关的知识可以贯穿于整个项目,而不是只用到它的一小部分。</p> <p>在2016年依旧有许多地方需要努力 - 但一定会向着好的方向发展 ;)</p> <blockquote> <p>author: <a href="https://github.com/yyx990803" rel="nofollow noreferrer" target="_blank">Evan You</a><br />date: Dec 20, 2015<br />via: <a href="http://blog.evanyou.me/2015/12/20/vuejs-2015-in-review/" rel="nofollow noreferrer" target="_blank">http://blog.evanyou.me/2015/1...</a></p> </blockquote> <hr> <blockquote> <p>希望我没有曲解作者的意思?</p> </blockquote>

本文固定链接: http://www.js-code.com/vue-js/vue-js_13136.html