From f441b8c47d25502ca30b13e5ae8833648a07f0f3 Mon Sep 17 00:00:00 2001 From: Bo Wang Date: Sat, 8 Apr 2017 13:55:37 +0800 Subject: [PATCH 0001/1357] change button name from "Toggle" to "Toggle render" --- src/v2/guide/transitions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/v2/guide/transitions.md b/src/v2/guide/transitions.md index a0231d7151..c0a45824e2 100644 --- a/src/v2/guide/transitions.md +++ b/src/v2/guide/transitions.md @@ -155,7 +155,7 @@ new Vue({ {% raw %}

hello

From 072f591b8cbe9dfdd7806782da510f79f08f9dce Mon Sep 17 00:00:00 2001 From: Joe Audette Date: Sat, 8 Apr 2017 15:45:00 -0400 Subject: [PATCH 0002/1357] fix sentence structure --- src/v2/guide/deployment.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/v2/guide/deployment.md b/src/v2/guide/deployment.md index de861b0f6a..b00b20c83d 100644 --- a/src/v2/guide/deployment.md +++ b/src/v2/guide/deployment.md @@ -73,7 +73,7 @@ If you are using Webpack, and prefer separating JavaScript and template files, y ## Extracting Component CSS -When using Single-File Components, the CSS inside components are injected dynamically as ` diff --git a/themes/vue/layout/partials/ad.ejs b/themes/vue/layout/partials/ad.ejs index 19fe6ebccf..fcaff3ce93 100644 --- a/themes/vue/layout/partials/ad.ejs +++ b/themes/vue/layout/partials/ad.ejs @@ -1,8 +1,22 @@ diff --git a/themes/vue/layout/partials/conf.ejs b/themes/vue/layout/partials/conf.ejs new file mode 100644 index 0000000000..9abae0414b --- /dev/null +++ b/themes/vue/layout/partials/conf.ejs @@ -0,0 +1,6 @@ + diff --git a/themes/vue/layout/partials/main_menu.ejs b/themes/vue/layout/partials/main_menu.ejs index e7f4e0e229..4fbf2706be 100644 --- a/themes/vue/layout/partials/main_menu.ejs +++ b/themes/vue/layout/partials/main_menu.ejs @@ -10,5 +10,4 @@ <%- partial('partials/language_dropdown') %>
  • Shop - NEW!
  • diff --git a/themes/vue/source/css/_header.styl b/themes/vue/source/css/_header.styl index ea54556e01..1b777d3f4e 100644 --- a/themes/vue/source/css/_header.styl +++ b/themes/vue/source/css/_header.styl @@ -20,7 +20,7 @@ body.docs margin 0 padding 0 position absolute - right 60px + right 30px top $heading-padding-vertical height $header-height line-height $header-height diff --git a/themes/vue/source/images/conf.png b/themes/vue/source/images/conf.png new file mode 100644 index 0000000000000000000000000000000000000000..cb11b01ba24a0b2c29a9bb5d332de16cd2ce362f GIT binary patch literal 12772 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 SQuxpRE@UN@Bx=NrgZ@8wm}3e6 literal 0 HcmV?d00001 From a26f6b69be328e2dac23c871cff86cdaf3595e41 Mon Sep 17 00:00:00 2001 From: Evan You Date: Thu, 11 May 2017 17:46:58 +0800 Subject: [PATCH 0017/1357] update some comparisons --- src/v2/guide/comparison.md | 155 +++++++------------------------------ 1 file changed, 28 insertions(+), 127 deletions(-) diff --git a/src/v2/guide/comparison.md b/src/v2/guide/comparison.md index 3b9aee661b..ad964f883d 100644 --- a/src/v2/guide/comparison.md +++ b/src/v2/guide/comparison.md @@ -24,148 +24,47 @@ With that said, it's inevitable that the comparison would appear biased towards The React community [has been instrumental](https://github.com/vuejs/vuejs.org/issues/364) in helping us achieve this balance, with special thanks to Dan Abramov from the React team. He was extremely generous with his time and considerable expertise to help us refine this document until we were [both happy](https://github.com/vuejs/vuejs.org/issues/364#issuecomment-244575740) with the final result. -### Performance Profiles - -In every real-world scenario that we've tested so far, Vue outperforms React by a fair margin. If your eyebrows are raising right now, read further. We'll breakdown why (and even include a benchmark developed in collaboration with the React team). - -#### Render Performance - -When rendering UI, manipulating the DOM is typically the most expensive operation and unfortunately, no library can make those raw operations faster. The best we can do is: - -1. Minimize the number of necessary DOM mutations. Both React and Vue use virtual DOM abstractions to accomplish this and both implementations work about equally well. - -2. Add as little overhead (pure JavaScript computations) as possible on top of those DOM manipulations. This is an area where Vue and React differ. - -The JavaScript overhead is directly related to the mechanisms of computing the necessary DOM operations. Both Vue and React utilize Virtual DOM to achieve that, but Vue's Virtual DOM implementation (a fork of [snabbdom](https://github.com/snabbdom/snabbdom)) is much lighter-weight and thus introduces less overhead than React's. - -Both Vue and React also offer functional components, which are stateless and instanceless - and therefore, require less overhead. When these are used in performance-critical situations, Vue is once again faster. To demonstrate this, we built a simple [benchmark project](https://github.com/chrisvfritz/vue-render-performance-comparisons) that just renders 10,000 list items 100 times. We encourage you to try it yourself, as the results will vary depending on the hardware and browser used - and actually, they'll vary even between runs due to the nature of JavaScript engines. - -If you're feeling lazy though, below are the numbers from one run in Chrome 52 on a 2014 MacBook Air. To avoid cherry-picking, both benchmarks were actually run 20 separate times, with results from the best runs included below: - -{% raw %} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    VueReact
    Fastest23ms63ms
    Median42ms81ms
    Average51ms94ms
    95th Perc.73ms164ms
    Slowest343ms453ms
    -{% endraw %} - -#### Update Performance - -In React, when a component's state changes, it triggers the re-render of the entire component sub-tree, starting at that component as root. To avoid unnecessary re-renders of child components, you need to implement `shouldComponentUpdate` everywhere and use immutable data structures. In Vue, a component's dependencies are automatically tracked during its render, so the system knows precisely which components actually need to re-render. +### Performance -This means updates in unoptimized Vue will be much faster than unoptimized React and actually, due to the improved render performance in Vue, even fully-optimized React will usually be slower than Vue is out-of-the-box. +Both React and Vue offer comparable performance in most commonly seen use cases, with Vue usually slightly head due to its lighter-weight Virtual DOM implementation. If you are interested in numbers, you can check out this [3rd party benchmark](https://rawgit.com/krausest/js-framework-benchmark/master/webdriver-ts/table.html) which focuses on raw rendering/updating performance. Note that this does not take complex component structures into account, so should only be considered a reference rather than a verdict. -#### In Development +#### Optimization Efforts -While performance in production is the more important metric as it is directly associated with end-user experience, performance in development still matters because it is associated with the developer experience. +In React, when a component's state changes, it triggers the re-render of the entire component sub-tree, starting at that component as root. To avoid unnecessary re-renders of child components, you need to either use `PureComponent` or implement `shouldComponentUpdate` whenever you can. You may also need to use immutable data structures to make your state changes more optimization-friendly. However, in certain cases you may not be able to rely on such optimizations because `PureComponent/shouldComponentUpdate` assumes the entire sub tree's render output is determined by the props of the current component. If that is not the case, then such optimizations may lead to inconsistent DOM state. -Both Vue and React remain fast enough in development for most normal applications. However, when prototyping high frame-rate data visualizations or animations, we've seen cases of Vue handling 10 frames per second in development while React dropping to about 1 frame per second. +In Vue, a component's dependencies are automatically tracked during its render, so the system knows precisely which components actually need to re-render when state changes. Each component can be considered to have `shouldComponentUpdate` automatically implemented for you, without the nested component caveats. -This is due to React's many heavy invariant checks in development mode, which help it to provide many excellent warnings and error messages. We agree that these are also important in Vue, but have tried to keep a closer eye on performance while we implement these checks. +Overall this removes the need for a whole class of performance optimizations from the developer's plate, and allows them to focus more on building the app itself as it scales. ### HTML & CSS -In React, everything is just JavaScript, which sounds very simple and elegant - until you dig deeper. The unfortunate reality is that reinventing HTML and CSS within JavaScript, while solving some issues of the traditional model, can also cause pain of its own. In Vue, we instead embrace web technologies and build on top of them. To show you what that means, we'll dive into some examples. +In React, everything is just JavaScript. Not only are HTML structures expressed via JSX, the recent trends also tend to put CSS management inside JavaScript as well. This approach has its own benefits, but also comes with various trade-offs that may not seem worthwhile for every developer. -#### JSX vs Templates +Vue embraces classic web technologies and builds on top of them. To show you what that means, we'll dive into some examples. -In React, all components express their UI within render functions using JSX, a declarative XML-like syntax that works within JavaScript. Here's an example, [vetted by the React community](https://github.com/vuejs/vuejs.org/issues/364#issuecomment-244582684): - -``` jsx -render () { - let { items } = this.props - - let children - if (items.length > 0) { - children = ( -
      - {items.map(item => -
    • {item.name}
    • - )} -
    - ) - } else { - children =

    No items found.

    - } +#### JSX vs Templates - return ( -
    - {children} -
    - ) -} -``` +In React, all components express their UI within render functions using JSX, a declarative XML-like syntax that works within JavaScript. Render functions with JSX have a few advantages: -- You can use the power of a full programming language (JavaScript) to build your view. +- You can leverage the power of a full programming language (JavaScript) to build your view. This includes temporary variables, flow controls, and directly referencing JavaScript values in scope. + - The tooling support (e.g. linting, type checking, editor autocompletion) for JSX is in some ways more advanced than what's currently available for Vue templates. -In Vue, we also have [render functions](render-function.html) and even [support JSX](render-function.html#JSX), because sometimes you need that power. However, as the default experience we offer templates as a simpler alternative: +In Vue, we also have [render functions](render-function.html) and even [support JSX](render-function.html#JSX), because sometimes you do need that power. However, as the default experience we offer templates as a simpler alternative. Any valid HTML is also a valid Vue template, and this leads to a few advantages of its own: -``` html - -``` +- For many developers who have been working with HTML, templates simply feel more natural to read and write. The preference itself can be somewhat subjective, but if it makes the developer more productive then the benefit is objective. -A few advantages here: +- HTML-based templates make it much easier to progressively migrate existing applications to take advantage of Vue's reactivity features. -- Fewer implementation and stylistic decisions have to be made while writing a template -- A template will always be declarative -- Any valid HTML is valid in a template -- It reads more like English (e.g. for each item in items) -- Advanced versions of JavaScript are not required to increase readability +- It also makes it much easier for designers and less experienced developers to parse and contribute to the codebase. -This is not only much easier for the developer that's writing it, but designers and less experienced developers will also find it much easier parsing and contributing code. +- You can even use pre-processors such as Pug (formerly known as Jade) to author your Vue templates. -An additional benefit of HTML-compliant templates is that you can use pre-processors such as Pug (formerly known as Jade) to author your Vue templates: +Some argue that you'd need to learn an extra DSL (Domain-Specific Language) to be able to write templates - we believe this difference is superficial at best. First, JSX doesn't mean the user don't need to learn anything - it's additional syntax on top of plain JavaScript, so it's easy for anyone familar with JavaScript to learn, but saying it's essentially free is misleading. Similarly, template is just additional syntax on top of plain HTML and thus has very low learning cost for those who are already familiar with HTML. With the DSL we are also able to help the user get more done with less code (e.g. `v-on` modifiers). The same task can involve a lot more code when using plain JSX or render functions. -``` pug -div.list-container - ul(v-if="items.length") - li(v-for="item in items") {{ item.name }} - p(v-else) No items found. -``` +On a higher level, we can divide components into two categories: presentational ones and logical ones. We recommend using templates for presentational components and render function / JSX for logical ones. The percentage of these components depends on the type of app you are building, but in general we find presentational ones to be much more common. #### Component-Scoped CSS @@ -229,7 +128,7 @@ At this moment, Weex is still in active development and is not as mature and bat MobX has become quite popular in the React community and it actually uses a nearly identical reactivity system to Vue. To a limited extent, the React + MobX workflow can be thought of as a more verbose Vue, so if you're using that combination and are enjoying it, jumping into Vue is probably the next logical step. -## Angular 1 +## AngularJS (Angular 1) Some of Vue's syntax will look very similar to Angular (e.g. `v-if` vs `ng-if`). This is because there were a lot of things that Angular got right and these were an inspiration for Vue very early in its development. There are also many pains that come with Angular however, where Vue has attempted to offer a significant improvement. @@ -259,21 +158,23 @@ Vue doesn't suffer from this at all because it uses a transparent dependency-tra Interestingly, there are quite a few similarities in how Angular 2 and Vue are addressing these Angular 1 issues. -## Angular 2 +## Angular (Formerly known as Angular 2) -We have a separate section for Angular 2 because it really is a completely new framework. For example, it features a first-class component system, many implementation details have been completely rewritten, and the API has also changed quite drastically. +We have a separate section for the new Angular because it really is a completely different framework from Angular 1. For example, it features a first-class component system, many implementation details have been completely rewritten, and the API has also changed quite drastically. ### TypeScript -While Angular 1 could be used for smaller applications, Angular 2 has shifted focus to best facilitate large enterprise applications. As part of this, it almost requires TypeScript, which can be very useful for developers that desire the type safety of languages such as Java and C#. +Angular essentially requires using TypeScript, given that almost all its documentation and learning resources are TypeScript-based. TypeScript has its obvious benefits - static type checking can be very useful for large-scale applications, and can be a big productivity boost for developers which backgrounds in Java and C#. + +However, not everyone wants to use TypeScript. In many smaller-scale use cases, introducing a type system may result in more overhead than productivity gain. In those cases you'd be better off going with Vue instead, since using Angular without TypeScript can be challenging. -Vue is also well-suited to [enterprise environments](https://github.com/vuejs/awesome-vue#enterprise-usage) and can even be used with TypeScript via our [official typings](https://github.com/vuejs/vue/tree/dev/types) and [official decorator](https://github.com/vuejs/vue-class-component), though it's definitely optional in our case. +Finally, although not as deeply integrated with TypeScript as Angular is, Vue also offers [official typings](https://github.com/vuejs/vue/tree/dev/types) and [official decorator](https://github.com/vuejs/vue-class-component) for those who wish to use TypeScript with Vue. We are also actively collaborating with the TypeScript and VSCode teams at Microsoft to improve the TS/IDE experience for Vue + TS users. ### Size and Performance In terms of performance, both frameworks are exceptionally fast and there isn't enough data from real world use cases to make a verdict. However if you are determined to see some numbers, Vue 2.0 seems to be ahead of Angular 2 according to this [3rd party benchmark](http://stefankrause.net/js-frameworks-benchmark4/webdriver-ts/table.html). -Size wise, although Angular 2 with offline compilation and tree-shaking is able to get its size down considerably, a full-featured Vue 2.0 with compiler included (23kb) is still lighter than a tree-shaken bare-bone example of Angular 2 (50kb). And do note the Angular 2 app's size is small due to tree-shaking, which removes code for features that you are not using. It will eventually grow back to its actual size as you import and use more features from the framework. +Recent versions of Angular, with AOT compilation and tree-shaking, have been able to get its size down considerably. However, a full-featured Vue 2 project with Vuex + vue-router included (~30kb gzipped) is still significantly lighter than an out-of-the-box, AOT-compiled application generated by `angular-cli` (~130kb gzipped). ### Flexibility @@ -283,7 +184,7 @@ Vue is much less opinionated than Angular 2, offering official support for a var To get started with Vue, all you need is familiarity with HTML and ES5 JavaScript (i.e. plain JavaScript). With these basic skills, you can start building non-trivial applications within less than a day of reading [the guide](./). -Angular 2's learning curve is much steeper. Even without TypeScript, their [Quickstart guide](https://angular.io/docs/js/latest/quickstart.html) starts out with an app that uses ES2015 JavaScript, NPM with 18 dependencies, 4 files, and over 3,000 words to explain it all - just to say Hello World. It wouldn't be an exaggeration to say that [Vue's Hello World](https://jsfiddle.net/chrisvfritz/50wL7mdz/) is a little bit simpler. Maybe because of that, we don't even need to dedicate a whole page in the guide to it. +Angular's learning curve is much steeper. The API surface of the framework is simply huge and the user will need to familiarize yourself with a lot more concepts before getting productive. Obviously, the complexity of Angular is largely due to its design goal of targeting only large, complex applications - but that does make the framework a lot more difficult for less-experienced developers to pick up. ## Ember From da46071b57815a4f89d6d7e3af8aebcc6a3f3d25 Mon Sep 17 00:00:00 2001 From: Chris Fritz Date: Thu, 11 May 2017 12:20:00 -0400 Subject: [PATCH 0018/1357] lock hexo at 3.2.2 for now --- package.json | 2 +- yarn.lock | 210 ++++++++++++++++++++++++--------------------------- 2 files changed, 99 insertions(+), 113 deletions(-) diff --git a/package.json b/package.json index 31efd4527e..a38307d809 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "version": "3.2.2" }, "dependencies": { - "hexo": "^3.2.2", + "hexo": "3.2.2", "hexo-deployer-git": "0.1.0", "hexo-generator-alias": "git+https://github.com/chrisvfritz/vuejs.org-hexo-generator-alias.git", "hexo-generator-archive": "^0.1.4", diff --git a/yarn.lock b/yarn.lock index 705b1bd9cc..98758bc9d7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1,10 +1,19 @@ # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. # yarn lockfile v1 + + +JSONStream@^1.0.7: + version "1.2.1" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.2.1.tgz#32aa5790e799481083b49b4b7fa94e23bae69bf9" + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + abab@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.3.tgz#b81de5f7274ec4e756d797cd834f303642724e5d" -abbrev@^1.0.7, abbrev@1: +abbrev@1, abbrev@^1.0.7: version "1.0.9" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" @@ -376,7 +385,7 @@ css-what@2.1: version "2.1.0" resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" -"cssom@>= 0.3.0 < 0.4.0", cssom@0.3.x: +cssom@0.3.x, "cssom@>= 0.3.0 < 0.4.0": version "0.3.1" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.1.tgz#c9e37ef2490e64f6d1baa10fda852257082c25d3" @@ -434,21 +443,17 @@ destroy@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" -dom-serializer@~0.1.0, dom-serializer@0: +dom-serializer@0, dom-serializer@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" dependencies: domelementtype "~1.1.1" entities "~1.1.1" -domelementtype@~1.1.1: +domelementtype@1, domelementtype@~1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" -domelementtype@1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" - domhandler@2.3: version "2.3.0" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.3.0.tgz#2de59a0822d5027fabff6f032c2b25a2a8abe738" @@ -486,14 +491,14 @@ encodeurl@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" -entities@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" - entities@1.0: version "1.0.0" resolved "https://registry.yarnpkg.com/entities/-/entities-1.0.0.tgz#b2987aa3821347fcde642b24fdfc9e4fb712bf26" +entities@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -684,27 +689,6 @@ glob-parent@^2.0.0: dependencies: is-glob "^2.0.0" -glob@^6.0.1: - version "6.0.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" - dependencies: - inflight "^1.0.4" - inherits "2" - minimatch "2 || 3" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.0.5: - version "7.1.1" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.2" - once "^1.3.0" - path-is-absolute "^1.0.0" - glob@3.2.x: version "3.2.11" resolved "https://registry.yarnpkg.com/glob/-/glob-3.2.11.tgz#4a973f635b9190f715d10987d5c00fd2815ebe3d" @@ -712,7 +696,7 @@ glob@3.2.x: inherits "2" minimatch "0.3" -glob@7.0.x: +glob@7.0.x, glob@^7.0.5: version "7.0.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a" dependencies: @@ -723,6 +707,16 @@ glob@7.0.x: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^6.0.1: + version "6.0.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.4: version "4.1.9" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.9.tgz#baacba37d19d11f9d146d3578bc99958c3787e29" @@ -919,7 +913,7 @@ hexo-util@^0.6.0: html-entities "^1.2.0" striptags "^2.1.1" -hexo@^3.2.2: +hexo@3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/hexo/-/hexo-3.2.2.tgz#9b8e7022aec95e02021cec140afd7888d4ceb931" dependencies: @@ -994,7 +988,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1, inherits@2: +inherits@2, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" @@ -1087,14 +1081,14 @@ is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" -isarray@~1.0.0, isarray@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" +isarray@1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + isexe@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/isexe/-/isexe-1.1.2.tgz#36f3e22e60750920f5e7241a476a8c6a42275ad0" @@ -1166,13 +1160,6 @@ jsonpointer@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.0.tgz#6661e161d2fc445f19f98430231343722e1fcbd5" -JSONStream@^1.0.7: - version "1.2.1" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.2.1.tgz#32aa5790e799481083b49b4b7fa94e23bae69bf9" - dependencies: - jsonparse "^1.2.0" - through ">=2.2.7 <3" - jsprim@^1.2.2: version "1.3.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252" @@ -1208,6 +1195,10 @@ lower-case@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.3.tgz#c92393d976793eee5ba4edb583cf8eae35bd9bfb" +lru-cache@2: + version "2.7.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" + lru-cache@^4.0.0, lru-cache@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.1.tgz#1343955edaf2e37d9b9e7ee7241e27c4b9fb72be" @@ -1215,10 +1206,6 @@ lru-cache@^4.0.0, lru-cache@^4.0.1: pseudomap "^1.0.1" yallist "^2.0.0" -lru-cache@2: - version "2.7.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" - markdown@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/markdown/-/markdown-0.5.0.tgz#28205b565a8ae7592de207463d6637dc182722b2" @@ -1257,16 +1244,10 @@ mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.7: dependencies: mime-db "~1.24.0" -mime@^1.3.4, mime@1.3.4: +mime@1.3.4, mime@^1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" -minimatch@^3.0.0, minimatch@^3.0.2, "minimatch@2 || 3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" - dependencies: - brace-expansion "^1.0.0" - minimatch@0.3: version "0.3.0" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.3.0.tgz#275d8edaac4f1bb3326472089e7949c8394699dd" @@ -1274,6 +1255,16 @@ minimatch@0.3: lru-cache "2" sigmund "~1.0.0" +"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" + dependencies: + brace-expansion "^1.0.0" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" @@ -1282,11 +1273,7 @@ minimist@~0.0.1: version "0.0.10" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - -"mkdirp@>=0.5 0", mkdirp@~0.5.1, mkdirp@0.5.x: +mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: @@ -1298,7 +1285,7 @@ moment-timezone@^0.5.4: dependencies: moment ">= 2.6.0" -moment@^2.10.6, moment@^2.11.2, "moment@>= 2.6.0": +"moment@>= 2.6.0", moment@^2.10.6, moment@^2.11.2: version "2.15.2" resolved "https://registry.yarnpkg.com/moment/-/moment-2.15.2.tgz#1bfdedf6a6e345f322fe956d5df5bd08a8ce84dc" @@ -1580,6 +1567,15 @@ rc@~1.1.6: minimist "^1.2.0" strip-json-comments "~1.0.4" +readable-stream@1.1: + version "1.1.13" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.13.tgz#f6eef764f514c89e2b9e23146a75ba106756d23e" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.2, readable-stream@~2.1.4: version "2.1.5" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0" @@ -1603,15 +1599,6 @@ readable-stream@~2.0.0: string_decoder "~0.10.x" util-deprecate "~1.0.1" -readable-stream@1.1: - version "1.1.13" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.13.tgz#f6eef764f514c89e2b9e23146a75ba106756d23e" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - readdirp@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" @@ -1661,30 +1648,30 @@ request@^2.55.0, request@^2.75.0: tough-cookie "~2.3.0" tunnel-agent "~0.4.1" +rimraf@2, rimraf@~2.5.1, rimraf@~2.5.4: + version "2.5.4" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04" + dependencies: + glob "^7.0.5" + rimraf@~2.4.0: version "2.4.5" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.4.5.tgz#ee710ce5d93a8fdb856fb5ea8ff0e2d75934b2da" dependencies: glob "^6.0.1" -rimraf@~2.5.1, rimraf@~2.5.4, rimraf@2: - version "2.5.4" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04" - dependencies: - glob "^7.0.5" - safe-json-stringify@~1: version "1.0.3" resolved "https://registry.yarnpkg.com/safe-json-stringify/-/safe-json-stringify-1.0.3.tgz#3cb6717660a086d07cb5bd9b7a6875bcf67bd05e" -sax@^1.1.4: - version "1.2.1" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" - sax@0.5.x: version "0.5.8" resolved "https://registry.yarnpkg.com/sax/-/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1" +sax@^1.1.4: + version "1.2.1" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" + semver@~5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" @@ -1748,12 +1735,6 @@ sntp@1.x.x: dependencies: hoek "2.x.x" -source-map@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" - dependencies: - amdefine ">=0.0.4" - source-map@0.1.34: version "0.1.34" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.34.tgz#a7cfe89aec7b1682c3b198d0acfb47d7d090566b" @@ -1766,6 +1747,12 @@ source-map@0.1.x: dependencies: amdefine ">=0.0.4" +source-map@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" + dependencies: + amdefine ">=0.0.4" + spawn-sync@^1.0.15: version "1.0.15" resolved "https://registry.yarnpkg.com/spawn-sync/-/spawn-sync-1.0.15.tgz#b00799557eb7fb0c8376c29d44e8a1ea67e57476" @@ -1796,10 +1783,6 @@ sshpk@^1.7.0: version "1.3.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.0.tgz#8e55758cb20e7682c1f4fce8dcab30bf01d1e07a" -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -1808,6 +1791,10 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + stringstream@~0.0.4: version "0.0.5" resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" @@ -1832,24 +1819,24 @@ striptags@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/striptags/-/striptags-2.1.1.tgz#e771b8b3193b97bbed392dca59a78279d3c8a6a6" -stylus@^0.53.0: - version "0.53.0" - resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.53.0.tgz#6b51e7665097f8dd4a6965e14ceea5e4b9fd724a" +stylus@0.54.5: + version "0.54.5" + resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.54.5.tgz#42b9560931ca7090ce8515a798ba9e6aa3d6dc79" dependencies: css-parse "1.7.x" debug "*" - glob "3.2.x" + glob "7.0.x" mkdirp "0.5.x" sax "0.5.x" source-map "0.1.x" -stylus@0.54.5: - version "0.54.5" - resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.54.5.tgz#42b9560931ca7090ce8515a798ba9e6aa3d6dc79" +stylus@^0.53.0: + version "0.53.0" + resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.53.0.tgz#6b51e7665097f8dd4a6965e14ceea5e4b9fd724a" dependencies: css-parse "1.7.x" debug "*" - glob "7.0.x" + glob "3.2.x" mkdirp "0.5.x" sax "0.5.x" source-map "0.1.x" @@ -1864,7 +1851,7 @@ swig-extras@0.0.1: dependencies: markdown "~0.5.0" -swig@^1.4.2, swig@1.4.2: +swig@1.4.2, swig@^1.4.2: version "1.4.2" resolved "https://registry.yarnpkg.com/swig/-/swig-1.4.2.tgz#4085ca0453369104b5d483e2841b39b7ae1aaba5" dependencies: @@ -1971,7 +1958,7 @@ util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" -utils-merge@^1.0.0, utils-merge@1.0.0: +utils-merge@1.0.0, utils-merge@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" @@ -1989,11 +1976,11 @@ warehouse@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/warehouse/-/warehouse-2.2.0.tgz#5d09d64942992be667d8f7c86a09c2b8aea04062" dependencies: + JSONStream "^1.0.7" bluebird "^3.2.2" cuid "~1.3.8" graceful-fs "^4.1.3" is-plain-object "^2.0.1" - JSONStream "^1.0.7" lodash "^4.2.1" webidl-conversions@^2.0.0: @@ -2018,13 +2005,17 @@ wide-align@^1.1.0: dependencies: string-width "^1.0.1" +window-size@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + window-size@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" -window-size@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" wordwrap@~0.0.2: version "0.0.3" @@ -2034,10 +2025,6 @@ wordwrap@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" -wordwrap@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" - wrap-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.0.0.tgz#7d30f8f873f9a5bbc3a64dabc8d177e071ae426f" @@ -2084,4 +2071,3 @@ yargs@~3.5.4: decamelize "^1.0.0" window-size "0.1.0" wordwrap "0.0.2" - From a821ed482cd911468e67f745ba155742b80b595a Mon Sep 17 00:00:00 2001 From: kazuya kawaguchi Date: Sat, 13 May 2017 00:43:12 +0900 Subject: [PATCH 0019/1357] fix invalid template NOTE: feedback from https://github.com/vuejs/jp.vuejs.org/pull/256 --- src/v2/guide/class-and-style.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/v2/guide/class-and-style.md b/src/v2/guide/class-and-style.md index 493d18b0d4..cae01de6b9 100644 --- a/src/v2/guide/class-and-style.md +++ b/src/v2/guide/class-and-style.md @@ -200,5 +200,5 @@ When you use a CSS property that requires [vendor prefixes](https://developer.mo Starting in 2.3 you can provide an array of multiple (prefixed) values to a style property, for example: ``` html -
    +
    ``` From 1d0a3968fd24f7abc984270d09454c3a8336aefd Mon Sep 17 00:00:00 2001 From: Paul Verbeek-Mast Date: Tue, 16 May 2017 07:24:08 +0200 Subject: [PATCH 0020/1357] added v-bind to example (#907) Added `v-bind` to the Multiple Values example for consistency --- src/v2/guide/class-and-style.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/v2/guide/class-and-style.md b/src/v2/guide/class-and-style.md index cae01de6b9..2f04daff74 100644 --- a/src/v2/guide/class-and-style.md +++ b/src/v2/guide/class-and-style.md @@ -200,5 +200,5 @@ When you use a CSS property that requires [vendor prefixes](https://developer.mo Starting in 2.3 you can provide an array of multiple (prefixed) values to a style property, for example: ``` html -
    +
    ``` From 9bc8cfcfc459229e6c13ce3591937239dca2cd8b Mon Sep 17 00:00:00 2001 From: Philip Belesky Date: Tue, 16 May 2017 15:24:45 +1000 Subject: [PATCH 0021/1357] Fix minor typos in comparison.md (#906) --- src/v2/guide/comparison.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/v2/guide/comparison.md b/src/v2/guide/comparison.md index ad964f883d..39f7ed75ae 100644 --- a/src/v2/guide/comparison.md +++ b/src/v2/guide/comparison.md @@ -26,7 +26,7 @@ The React community [has been instrumental](https://github.com/vuejs/vuejs.org/i ### Performance -Both React and Vue offer comparable performance in most commonly seen use cases, with Vue usually slightly head due to its lighter-weight Virtual DOM implementation. If you are interested in numbers, you can check out this [3rd party benchmark](https://rawgit.com/krausest/js-framework-benchmark/master/webdriver-ts/table.html) which focuses on raw rendering/updating performance. Note that this does not take complex component structures into account, so should only be considered a reference rather than a verdict. +Both React and Vue offer comparable performance in most commonly seen use cases, with Vue usually slightly ahead due to its lighter-weight Virtual DOM implementation. If you are interested in numbers, you can check out this [3rd party benchmark](https://rawgit.com/krausest/js-framework-benchmark/master/webdriver-ts/table.html) which focuses on raw rendering/updating performance. Note that this does not take complex component structures into account, so should only be considered a reference rather than a verdict. #### Optimization Efforts @@ -62,7 +62,7 @@ In Vue, we also have [render functions](render-function.html) and even [support - You can even use pre-processors such as Pug (formerly known as Jade) to author your Vue templates. -Some argue that you'd need to learn an extra DSL (Domain-Specific Language) to be able to write templates - we believe this difference is superficial at best. First, JSX doesn't mean the user don't need to learn anything - it's additional syntax on top of plain JavaScript, so it's easy for anyone familar with JavaScript to learn, but saying it's essentially free is misleading. Similarly, template is just additional syntax on top of plain HTML and thus has very low learning cost for those who are already familiar with HTML. With the DSL we are also able to help the user get more done with less code (e.g. `v-on` modifiers). The same task can involve a lot more code when using plain JSX or render functions. +Some argue that you'd need to learn an extra DSL (Domain-Specific Language) to be able to write templates - we believe this difference is superficial at best. First, JSX doesn't mean the user don't need to learn anything - it's additional syntax on top of plain JavaScript, so it's easy for anyone familiar with JavaScript to learn, but saying it's essentially free is misleading. Similarly, template is just additional syntax on top of plain HTML and thus has very low learning cost for those who are already familiar with HTML. With the DSL we are also able to help the user get more done with less code (e.g. `v-on` modifiers). The same task can involve a lot more code when using plain JSX or render functions. On a higher level, we can divide components into two categories: presentational ones and logical ones. We recommend using templates for presentational components and render function / JSX for logical ones. The percentage of these components depends on the type of app you are building, but in general we find presentational ones to be much more common. From 5d6681e0ffb9ca92cfe85f59183deefe8bfdde2e Mon Sep 17 00:00:00 2001 From: Bruno Lesieur Date: Tue, 16 May 2017 07:27:51 +0200 Subject: [PATCH 0022/1357] Angular 1 to AngularJS and Angular 2 to Angular (#908) Signed-off-by: Bruno Lesieur --- src/v2/guide/comparison.md | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/v2/guide/comparison.md b/src/v2/guide/comparison.md index 39f7ed75ae..462e420ce2 100644 --- a/src/v2/guide/comparison.md +++ b/src/v2/guide/comparison.md @@ -96,7 +96,7 @@ For large applications, both Vue and React offer robust routing solutions. The R Another important difference between these offerings is that Vue's companion libraries for state management and routing (among [other concerns](https://github.com/vuejs)) are all officially supported and kept up-to-date with the core library. React instead chooses to leave these concerns to the community, creating a more fragmented ecosystem. Being more popular though, React's ecosystem is considerably richer than Vue's. -Finally, Vue offers a [CLI project generator](https://github.com/vuejs/vue-cli) that makes it trivially easy to start a new project using your choice of build system, including [Webpack](https://github.com/vuejs-templates/webpack), [Browserify](https://github.com/vuejs-templates/browserify), or even [no build system](https://github.com/vuejs-templates/simple). React is also making strides in this area with [create-react-app](https://github.com/facebookincubator/create-react-app), but it currently has a few limitations: +Finally, Vue offers a [CLI project generator](https://github.com/vuejs/vue-cli) that makes it trivially easy to start a new project using your choice of build system, including [webpack](https://github.com/vuejs-templates/webpack), [Browserify](https://github.com/vuejs-templates/browserify), or even [no build system](https://github.com/vuejs-templates/simple). React is also making strides in this area with [create-react-app](https://github.com/facebookincubator/create-react-app), but it currently has a few limitations: - It does not allow any configuration during project generation, while Vue's project templates allow [Yeoman](http://yeoman.io/)-like customization. - It only offers a single template that assumes you're building a single-page application, while Vue offers a wide variety of templates for various purposes and build systems. @@ -130,37 +130,37 @@ MobX has become quite popular in the React community and it actually uses a near ## AngularJS (Angular 1) -Some of Vue's syntax will look very similar to Angular (e.g. `v-if` vs `ng-if`). This is because there were a lot of things that Angular got right and these were an inspiration for Vue very early in its development. There are also many pains that come with Angular however, where Vue has attempted to offer a significant improvement. +Some of Vue's syntax will look very similar to AngularJS (e.g. `v-if` vs `ng-if`). This is because there were a lot of things that AngularJS got right and these were an inspiration for Vue very early in its development. There are also many pains that come with AngularJS however, where Vue has attempted to offer a significant improvement. ### Complexity -Vue is much simpler than Angular 1, both in terms of API and design. Learning enough to build non-trivial applications typically takes less than a day, which is not true for Angular 1. +Vue is much simpler than AngularJS, both in terms of API and design. Learning enough to build non-trivial applications typically takes less than a day, which is not true for AngularJS. ### Flexibility and Modularity -Angular 1 has strong opinions about how your applications should be structured, while Vue is a more flexible, modular solution. While this makes Vue more adaptable to a wide variety of projects, we also recognize that sometimes it's useful to have some decisions made for you, so that you can just get started coding. +AngularJS has strong opinions about how your applications should be structured, while Vue is a more flexible, modular solution. While this makes Vue more adaptable to a wide variety of projects, we also recognize that sometimes it's useful to have some decisions made for you, so that you can just get started coding. -That's why we offer a [Webpack template](https://github.com/vuejs-templates/webpack) that can set you up within minutes, while also granting you access to advanced features such as hot module reloading, linting, CSS extraction, and much more. +That's why we offer a [webpack template](https://github.com/vuejs-templates/webpack) that can set you up within minutes, while also granting you access to advanced features such as hot module reloading, linting, CSS extraction, and much more. ### Data binding -Angular 1 uses two-way binding between scopes, while Vue enforces a one-way data flow between components. This makes the flow of data easier to reason about in non-trivial applications. +AngularJS uses two-way binding between scopes, while Vue enforces a one-way data flow between components. This makes the flow of data easier to reason about in non-trivial applications. ### Directives vs Components -Vue has a clearer separation between directives and components. Directives are meant to encapsulate DOM manipulations only, while components are self-contained units that have their own view and data logic. In Angular, there's a lot of confusion between the two. +Vue has a clearer separation between directives and components. Directives are meant to encapsulate DOM manipulations only, while components are self-contained units that have their own view and data logic. In AngularJS, there's a lot of confusion between the two. ### Performance -Vue has better performance and is much, much easier to optimize because it doesn't use dirty checking. Angular 1 becomes slow when there are a lot of watchers, because every time anything in the scope changes, all these watchers need to be re-evaluated again. Also, the digest cycle may have to run multiple times to "stabilize" if some watcher triggers another update. Angular users often have to resort to esoteric techniques to get around the digest cycle, and in some situations, there's simply no way to optimize a scope with many watchers. +Vue has better performance and is much, much easier to optimize because it doesn't use dirty checking. AngularJS becomes slow when there are a lot of watchers, because every time anything in the scope changes, all these watchers need to be re-evaluated again. Also, the digest cycle may have to run multiple times to "stabilize" if some watcher triggers another update. AngularJS users often have to resort to esoteric techniques to get around the digest cycle, and in some situations, there's simply no way to optimize a scope with many watchers. Vue doesn't suffer from this at all because it uses a transparent dependency-tracking observation system with async queueing - all changes trigger independently unless they have explicit dependency relationships. -Interestingly, there are quite a few similarities in how Angular 2 and Vue are addressing these Angular 1 issues. +Interestingly, there are quite a few similarities in how Angular and Vue are addressing these AngularJS issues. ## Angular (Formerly known as Angular 2) -We have a separate section for the new Angular because it really is a completely different framework from Angular 1. For example, it features a first-class component system, many implementation details have been completely rewritten, and the API has also changed quite drastically. +We have a separate section for the new Angular because it really is a completely different framework from AngularJS. For example, it features a first-class component system, many implementation details have been completely rewritten, and the API has also changed quite drastically. ### TypeScript @@ -172,13 +172,13 @@ Finally, although not as deeply integrated with TypeScript as Angular is, Vue al ### Size and Performance -In terms of performance, both frameworks are exceptionally fast and there isn't enough data from real world use cases to make a verdict. However if you are determined to see some numbers, Vue 2.0 seems to be ahead of Angular 2 according to this [3rd party benchmark](http://stefankrause.net/js-frameworks-benchmark4/webdriver-ts/table.html). +In terms of performance, both frameworks are exceptionally fast and there isn't enough data from real world use cases to make a verdict. However if you are determined to see some numbers, Vue 2.0 seems to be ahead of Angular according to this [3rd party benchmark](http://stefankrause.net/js-frameworks-benchmark4/webdriver-ts/table.html). Recent versions of Angular, with AOT compilation and tree-shaking, have been able to get its size down considerably. However, a full-featured Vue 2 project with Vuex + vue-router included (~30kb gzipped) is still significantly lighter than an out-of-the-box, AOT-compiled application generated by `angular-cli` (~130kb gzipped). ### Flexibility -Vue is much less opinionated than Angular 2, offering official support for a variety of build systems, with no restrictions on how you structure your application. Many developers enjoy this freedom, while some prefer having only one Right Way to build any application. +Vue is much less opinionated than Angular, offering official support for a variety of build systems, with no restrictions on how you structure your application. Many developers enjoy this freedom, while some prefer having only one Right Way to build any application. ### Learning Curve @@ -214,7 +214,7 @@ In Polymer 1.0, the team has also made its data-binding system very limited in o Polymer custom elements are authored in HTML files, which limits you to plain JavaScript/CSS (and language features supported by today's browsers). In comparison, Vue's single file components allows you to easily use ES2015+ and any CSS preprocessors you want. -When deploying to production, Polymer recommends loading everything on-the-fly with HTML Imports, which assumes browsers implementing the spec, and HTTP/2 support on both server and client. This may or may not be feasible depending on your target audience and deployment environment. In cases where this is not desirable, you will have to use a special tool called Vulcanizer to bundle your Polymer elements. On this front, Vue can combine its async component feature with Webpack's code-splitting feature to easily split out parts of the application bundle to be lazy-loaded. This ensures compatibility with older browsers while retaining great app loading performance. +When deploying to production, Polymer recommends loading everything on-the-fly with HTML Imports, which assumes browsers implementing the spec, and HTTP/2 support on both server and client. This may or may not be feasible depending on your target audience and deployment environment. In cases where this is not desirable, you will have to use a special tool called Vulcanizer to bundle your Polymer elements. On this front, Vue can combine its async component feature with webpack's code-splitting feature to easily split out parts of the application bundle to be lazy-loaded. This ensures compatibility with older browsers while retaining great app loading performance. It is also totally feasible to offer deeper integration between Vue with Web Component specs such as Custom Elements and Shadow DOM style encapsulation - however at this moment we are still waiting for the specs to mature and be widely implemented in all mainstream browsers before making any serious commitments. @@ -224,5 +224,5 @@ Riot 2.0 provides a similar component-based development model (which is called a - [Transition effect system](transitions.html). Riot has none. - A far more powerful router. Riot’s routing API is extremely minimal. -- Better performance. Riot [traverses a DOM tree](http://riotjs.com/compare/#virtual-dom-vs-expressions-binding) rather than using a virtual DOM, so suffers from the same performance issues as Angular 1. -- More mature tooling support. Vue provides official support for [Webpack](https://github.com/vuejs/vue-loader) and [Browserify](https://github.com/vuejs/vueify), while Riot relies on community support for build system integration. +- Better performance. Riot [traverses a DOM tree](http://riotjs.com/compare/#virtual-dom-vs-expressions-binding) rather than using a virtual DOM, so suffers from the same performance issues as AngularJS. +- More mature tooling support. Vue provides official support for [webpack](https://github.com/vuejs/vue-loader) and [Browserify](https://github.com/vuejs/vueify), while Riot relies on community support for build system integration. From 8ca28376ed5ed13acde6c7cb96f93ecd1492bbce Mon Sep 17 00:00:00 2001 From: Paul Verbeek-Mast Date: Tue, 16 May 2017 09:27:34 +0200 Subject: [PATCH 0023/1357] Added explanation for rendering of multiple values (#909) --- src/v2/guide/class-and-style.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/v2/guide/class-and-style.md b/src/v2/guide/class-and-style.md index 2f04daff74..9554c81f63 100644 --- a/src/v2/guide/class-and-style.md +++ b/src/v2/guide/class-and-style.md @@ -202,3 +202,5 @@ Starting in 2.3 you can provide an array of multiple (prefixed) values to a styl ``` html
    ``` + +This will only render the last value in the array which the browser supports. In this example, it will render `display: flex` for browsers that support the unprefixed version of flexbox. From 8efaae390aa234f0e1a3fa9cb781aac28b3de7a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ant=C3=A9rio=20Vieira?= Date: Tue, 16 May 2017 12:04:07 -0300 Subject: [PATCH 0024/1357] =?UTF-8?q?Add=20reference=20for=20Portugu=C3=AA?= =?UTF-8?q?s-Br=20translation=20(#910)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index eb016681d6..34ea444214 100644 --- a/README.md +++ b/README.md @@ -16,9 +16,15 @@ $ hexo server Translation for this documentation project are currently mantained in separate repositories forked from this original one. -### Mandarin +### French -* Translation Repo - [/vuejs/cn.vuejs.org](https://github.com/vuejs/cn.vuejs.org) +French translation is maintained by Vuejs-FR. + +* Translation Repo — [/vuejs-fr/vuejs.org](https://github.com/vuejs-fr/vuejs.org) + +### Italian + +* Translation Repo - [/vuejs/it.vuejs.org](https://github.com/vuejs/it.vuejs.org) ### Japanese @@ -27,29 +33,29 @@ Japanese translation is maintained by [Vue.js japan user group](https://github.c * Translation Repo - [/vuejs/jp.vuejs.org](https://github.com/vuejs/jp.vuejs.org) * Primary maintainer - [kazupon](https://github.com/kazupon) -### Russian +### Korean -Russian translation is maintained by Translation Gang. +Korean translation is maintained by [Vue.js Korean User group](https://github.com/vuejs-kr). -* Translation Repo — [/translation-gang/ru.vuejs.org](https://github.com/translation-gang/ru.vuejs.org) -* Primary maintainer - [Grigoriy Beziuk](https://gbezyuk.github.io) +* Translation Repo - [/vuejs-kr/kr.vuejs.org](https://github.com/vuejs-kr/kr.vuejs.org) +* Primary maintainer - [ChangJoo Park](https://github.com/ChangJoo-Park) -### Italian +### Mandarin -* Translation Repo - [/vuejs/it.vuejs.org](https://github.com/vuejs/it.vuejs.org) +* Translation Repo - [/vuejs/cn.vuejs.org](https://github.com/vuejs/cn.vuejs.org) -### Korean +### Português-Br -Korean translation is maintained by [Vue.js Korean User group](https://github.com/vuejs-kr). +Português-Br translation is maintained by [Vuejs-Br](https://github.com/vuejs-br). -* Translation Repo - [/vuejs-kr/kr.vuejs.org](https://github.com/vuejs-kr/kr.vuejs.org) -* Primary maintainer - [ChangJoo Park](https://github.com/ChangJoo-Park) +* Translation Repo - [/vuejs-br/br.vuejs.org](https://github.com/vuejs-br/br.vuejs.org) -### French +### Russian -French translation is maintained by Vuejs-FR. +Russian translation is maintained by Translation Gang. -* Translation Repo — [/vuejs-fr/vuejs.org](https://github.com/vuejs-fr/vuejs.org) +* Translation Repo — [/translation-gang/ru.vuejs.org](https://github.com/translation-gang/ru.vuejs.org) +* Primary maintainer - [Grigoriy Beziuk](https://gbezyuk.github.io) ### Want to help with the translation? From 75b7dea1b9302421e96377def82314fc4d269184 Mon Sep 17 00:00:00 2001 From: Chris Fritz Date: Thu, 18 May 2017 14:51:47 -0400 Subject: [PATCH 0025/1357] add link to benchmark for ember performance comparison --- package.json | 2 +- src/v2/guide/comparison.md | 2 +- yarn.lock | 6 +----- 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index a38307d809..be1d5d5748 100644 --- a/package.json +++ b/package.json @@ -19,4 +19,4 @@ "hexo-renderer-stylus": "^0.3.1", "hexo-server": "^0.2.0" } -} +} \ No newline at end of file diff --git a/src/v2/guide/comparison.md b/src/v2/guide/comparison.md index 462e420ce2..63383da169 100644 --- a/src/v2/guide/comparison.md +++ b/src/v2/guide/comparison.md @@ -196,7 +196,7 @@ That said, it would probably make a better comparison between Vue core and Ember - Vue's template syntax harnesses the full power of JavaScript expressions, while Handlebars' expression and helper syntax is intentionally quite limited in comparison. -- Performance-wise, Vue outperforms Ember by a fair margin, even after the latest Glimmer engine update in Ember 2.0. Vue automatically batches updates, while in Ember you need to manually manage run loops in performance-critical situations. +- Performance-wise, Vue outperforms Ember [by a fair margin](https://rawgit.com/krausest/js-framework-benchmark/master/webdriver-ts/table.html), even after the latest Glimmer engine update in Ember 2.x. Vue automatically batches updates, while in Ember you need to manually manage run loops in performance-critical situations. ## Knockout diff --git a/yarn.lock b/yarn.lock index 98758bc9d7..687486ddc4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1285,11 +1285,7 @@ moment-timezone@^0.5.4: dependencies: moment ">= 2.6.0" -"moment@>= 2.6.0", moment@^2.10.6, moment@^2.11.2: - version "2.15.2" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.15.2.tgz#1bfdedf6a6e345f322fe956d5df5bd08a8ce84dc" - -moment@~2.13.0: +"moment@>= 2.6.0", moment@^2.10.6, moment@^2.11.2, moment@~2.13.0: version "2.13.0" resolved "https://registry.yarnpkg.com/moment/-/moment-2.13.0.tgz#24162d99521e6d40f99ae6939e806d2139eaac52" From 382b8acb61db17dedeebf8303604ecc0a7256f76 Mon Sep 17 00:00:00 2001 From: Bruno Lesieur Date: Fri, 19 May 2017 02:35:08 +0200 Subject: [PATCH 0026/1357] Open mobile memu only if slide come from left-border side of screen (#913) Signed-off-by: Bruno Lesieur --- themes/vue/source/js/common.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/themes/vue/source/js/common.js b/themes/vue/source/js/common.js index 293417999f..0ab2299feb 100644 --- a/themes/vue/source/js/common.js +++ b/themes/vue/source/js/common.js @@ -126,7 +126,7 @@ var yDiff = end.y - start.y if (Math.abs(xDiff) > Math.abs(yDiff)) { - if (xDiff > 0) sidebar.classList.add('open') + if (xDiff > 0 && start.x <= 80) sidebar.classList.add('open') else sidebar.classList.remove('open') } }) From 84a65b1001d5927fabd41f695c3fd276c7dca107 Mon Sep 17 00:00:00 2001 From: David Lloyd Date: Thu, 18 May 2017 20:40:28 -0400 Subject: [PATCH 0027/1357] Clarify v-html usage (#905) * Update syntax.md Originally, I'd thought that: ```
    This {{ some_html}}
    ``` (where we might have `vm.data.some_html='hello'`) ... would render something like: **hello** But instead we get: ``` Property or method "rawHtml" is not defined on the instance but referenced during render. Make sure to declare reactive data properties in the data option. ``` ...if one is watching console errors. My wording could be a little bit kludgy and others might be able to make it clearer but I think this may overcome some misunderstandings for those not familiar with vuejs. * Update syntax.md --- src/v2/guide/syntax.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/v2/guide/syntax.md b/src/v2/guide/syntax.md index 5cb1464fd5..9b4367c009 100644 --- a/src/v2/guide/syntax.md +++ b/src/v2/guide/syntax.md @@ -36,7 +36,7 @@ The double mustaches interprets the data as plain text, not HTML. In order to ou
    ``` -The contents are inserted as plain HTML - data bindings are ignored. Note that you cannot use `v-html` to compose template partials, because Vue is not a string-based templating engine. Instead, components are preferred as the fundamental unit for UI reuse and composition. +The contents of this `div` will be replaced with the value of the `rawHtml` property, interpreted as plain HTML - data bindings are ignored. Note that you cannot use `v-html` to compose template partials, because Vue is not a string-based templating engine. Instead, components are preferred as the fundamental unit for UI reuse and composition.

    Dynamically rendering arbitrary HTML on your website can be very dangerous because it can easily lead to [XSS vulnerabilities](https://en.wikipedia.org/wiki/Cross-site_scripting). Only use HTML interpolation on trusted content and **never** on user-provided content.

    From ea5356a69a8bcc2243f983a0d911c9abd68a7e6c Mon Sep 17 00:00:00 2001 From: Etienne Levesque Guitard Date: Thu, 18 May 2017 20:43:40 -0400 Subject: [PATCH 0028/1357] Align Range v-for HTML sample with actual result (#904) --- src/v2/guide/list.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/v2/guide/list.md b/src/v2/guide/list.md index ad65a9d43e..133d9047ea 100644 --- a/src/v2/guide/list.md +++ b/src/v2/guide/list.md @@ -196,7 +196,7 @@ And another for the index: ``` html
    - {{ n }} + {{ n }}
    ``` From a5b1643f85e46ef801d500b051cf81183e472f60 Mon Sep 17 00:00:00 2001 From: Bruno Lesieur Date: Fri, 19 May 2017 02:50:35 +0200 Subject: [PATCH 0029/1357] `component.md` : Component Naming Conventions better consistency (#903) * Add french translation link Signed-off-by: Bruno Lesieur * kebab-case explaination updates Signed-off-by: Bruno Lesieur * kebab-case to kebab-cased Signed-off-by: Bruno Lesieur * Remove space before self-closing component --- src/v2/guide/components.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/v2/guide/components.md b/src/v2/guide/components.md index 841eee6f98..c544bbfdaa 100644 --- a/src/v2/guide/components.md +++ b/src/v2/guide/components.md @@ -1155,25 +1155,25 @@ When using _string_ templates however, we're not bound by HTML's case-insensitiv - kebab-case - camelCase or kebab-case if the component has been defined using camelCase -- kebab-case, camelCase or Title case if the component has been defined using TitleCase +- kebab-case, camelCase or TitleCase if the component has been defined using TitleCase ``` js components: { - 'kebab-case-component': { /* ... */ }, - camelCaseComponent: { /* ... */ }, - TitleCaseComponent: { /* ... */ } + 'kebab-cased-component': { /* ... */ }, + camelCasedComponent: { /* ... */ }, + TitleCasedComponent: { /* ... */ } } ``` ``` html - + - - + + - - - + + + ``` This means that the TitleCase is the most universal _declaration convention_ and kebab-case is the most universal _usage convention_. From 8c545d35ffb5fcf3111879b3d72b7e3421e1db6a Mon Sep 17 00:00:00 2001 From: Andreas Solleder Date: Sat, 20 May 2017 10:38:54 +0200 Subject: [PATCH 0030/1357] fix: typos using misspell (#916) This PR is part of a campaign to fix a lot of typos on github! You can see the progress on https://github.com/fixTypos/fix_typos/ https://github.com/client9/misspell --- README.md | 2 +- src/_posts/011-component.md | 2 +- src/_posts/vue-next.md | 4 ++-- src/v2/guide/migration-vuex.md | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 34ea444214..651c5e2a3a 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ $ hexo server ## On Translations -Translation for this documentation project are currently mantained in separate repositories forked from this original one. +Translation for this documentation project are currently maintained in separate repositories forked from this original one. ### French diff --git a/src/_posts/011-component.md b/src/_posts/011-component.md index 2be314f1ac..c95230e530 100644 --- a/src/_posts/011-component.md +++ b/src/_posts/011-component.md @@ -54,7 +54,7 @@ The only exception to the rule is `v-with` (and `paramAttributes` which compiles ### Cleaner Event Communication -Previously the standard way for a child component to communicate to its parent is via dispatching events. However, with this approach, the event listeners on the parent component are not guaranteed to be listening on the desired child component only. It's also possible to trigger undesired listners further up the chain if we do not cancel the event. +Previously the standard way for a child component to communicate to its parent is via dispatching events. However, with this approach, the event listeners on the parent component are not guaranteed to be listening on the desired child component only. It's also possible to trigger undesired listeners further up the chain if we do not cancel the event. The most common use case is for a parent to react to the events from a specific, direct child component. So in 0.11.4, [a new directive `v-events`](/api/directives.html#v-events) has been introduced to enable exactly this behavior. diff --git a/src/_posts/vue-next.md b/src/_posts/vue-next.md index f30cd9c625..fe324b223d 100644 --- a/src/_posts/vue-next.md +++ b/src/_posts/vue-next.md @@ -5,7 +5,7 @@ date: 2014-07-29 00:04:55 ## 0.10.6 -Vue.js 0.10.6 has been released! This is another small bug-fix release and will be the last maintainance version before the next major release. +Vue.js 0.10.6 has been released! This is another small bug-fix release and will be the last maintenance version before the next major release. @@ -22,6 +22,6 @@ Some of you might have noticed there is a [next](https://github.com/yyx990803/vu - Fix some issues that are caused by design flaws in the current version. Because these changes affect the design of some core modules, it is actually easier to rewrite than to apply on the current codebase. - Improve general code quality (in particular, `compiler.js` as of now is a big pile of mess, and comments are not consistent across the codebase.) -Take note that the `next` branch is still in **very** early stage. The internals will change a lot, and when it comes out it **will** break current applications. Despite that I will try to keep the API changes to a minimum. Major differences with current 0.10 branch are documented in [`changes.md`](https://github.com/yyx990803/vue/blob/next/changes.md). The list is obviously incomplete and subject to change, some of them are simply ideas, but it at least gives you a taste of what to expect, and I'd appreicate your feedback on any of the topics. +Take note that the `next` branch is still in **very** early stage. The internals will change a lot, and when it comes out it **will** break current applications. Despite that I will try to keep the API changes to a minimum. Major differences with current 0.10 branch are documented in [`changes.md`](https://github.com/yyx990803/vue/blob/next/changes.md). The list is obviously incomplete and subject to change, some of them are simply ideas, but it at least gives you a taste of what to expect, and I'd appreciate your feedback on any of the topics. Share your thoughts at [vuejs/Discussion](https://github.com/vuejs/Discussion/issues). diff --git a/src/v2/guide/migration-vuex.md b/src/v2/guide/migration-vuex.md index 1e5aa28bdf..f15e6f0667 100644 --- a/src/v2/guide/migration-vuex.md +++ b/src/v2/guide/migration-vuex.md @@ -9,7 +9,7 @@ order: 28 Both Vuex 1.0 and 2.0: - fully support both Vue 1.0 and 2.0 -- will be maintained for the forseeable future +- will be maintained for the foreseeable future They have slightly different target users however. From cbd34422addcf0abe0595081fb1e4f22b9e9dc06 Mon Sep 17 00:00:00 2001 From: Daniel Bushman Date: Sat, 20 May 2017 02:41:06 -0600 Subject: [PATCH 0031/1357] fixed favicon's MIME type (#915) --- themes/vue/layout/layout.ejs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/themes/vue/layout/layout.ejs b/themes/vue/layout/layout.ejs index 7be91e1506..bdb3ef70b7 100644 --- a/themes/vue/layout/layout.ejs +++ b/themes/vue/layout/layout.ejs @@ -17,7 +17,7 @@ - " type="image/x-icon"> + " type="image/png"> From 58c9239dc4cb7839da46e7f9711213bdb15f6e59 Mon Sep 17 00:00:00 2001 From: Brian Juul Andersen Date: Sat, 20 May 2017 16:16:57 +0200 Subject: [PATCH 0032/1357] Fixed minor grammatical error. (#914) Fixed minor grammatical error. --- src/v2/guide/comparison.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/v2/guide/comparison.md b/src/v2/guide/comparison.md index 63383da169..1b22f7b0f7 100644 --- a/src/v2/guide/comparison.md +++ b/src/v2/guide/comparison.md @@ -184,7 +184,7 @@ Vue is much less opinionated than Angular, offering official support for a varie To get started with Vue, all you need is familiarity with HTML and ES5 JavaScript (i.e. plain JavaScript). With these basic skills, you can start building non-trivial applications within less than a day of reading [the guide](./). -Angular's learning curve is much steeper. The API surface of the framework is simply huge and the user will need to familiarize yourself with a lot more concepts before getting productive. Obviously, the complexity of Angular is largely due to its design goal of targeting only large, complex applications - but that does make the framework a lot more difficult for less-experienced developers to pick up. +Angular's learning curve is much steeper. The API surface of the framework is simply huge and as a user you will need to familiarize yourself with a lot more concepts before getting productive. Obviously, the complexity of Angular is largely due to its design goal of targeting only large, complex applications - but that does make the framework a lot more difficult for less-experienced developers to pick up. ## Ember From 8ee417b98d59f4611361f03b1c9a042b96f3b51b Mon Sep 17 00:00:00 2001 From: Chris Fritz Date: Sat, 20 May 2017 11:34:36 -0400 Subject: [PATCH 0033/1357] make template compilation results selectable --- src/v2/guide/render-function.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/v2/guide/render-function.md b/src/v2/guide/render-function.md index 692883bba4..43accc7266 100644 --- a/src/v2/guide/render-function.md +++ b/src/v2/guide/render-function.md @@ -605,6 +605,10 @@ console.error = function (error) { } + + + +
    +
    +

    The Core Team

    + +

    + The development of Vue and its ecosystem is guided by an international team, + some of whom have chosen to be featured below. +

    + + +
    + +
    +

    Community Partners

    + +

    + Some members of the Vue community have so enriched it, that they deserve special mention. + We've developed a more intimate relationship with these key partners, often coordinating + with them on upcoming news and features. +

    + + +
    ``` @@ -63,7 +61,7 @@ Vue.component('anchored-heading', { }) ``` -That template doesn't feel great. It's not only verbose, but we're duplicating `` for every heading level and will have to do the same when we add the anchor element. The whole thing is also wrapped in a useless `div` because components must contain exactly one root node. +That template doesn't feel great. It's not only verbose, but we're duplicating `` for every heading level and will have to do the same when we add the anchor element. While templates work great for most components, it's clear that this isn't one of them. So let's try rewriting it with a `render` function: From 1b23c9294c3e1cb9eef929aa1fecdbf8d44718b7 Mon Sep 17 00:00:00 2001 From: Chris Fritz Date: Thu, 6 Jul 2017 02:41:52 -0400 Subject: [PATCH 0098/1357] initial prototype of team page locations --- src/v2/guide/team.md | 233 ++++++++++++++++++++++++- themes/vue/source/css/_animations.styl | 12 ++ themes/vue/source/css/_settings.styl | 1 + themes/vue/source/css/_team.styl | 35 ++++ themes/vue/source/css/page.styl | 68 ++++---- 5 files changed, 314 insertions(+), 35 deletions(-) create mode 100644 themes/vue/source/css/_animations.styl diff --git a/src/v2/guide/team.md b/src/v2/guide/team.md index 9d33a0c05c..7806253460 100644 --- a/src/v2/guide/team.md +++ b/src/v2/guide/team.md @@ -41,12 +41,32 @@ order: 31 + +
    + + Distance +
    +
    + About {{ textDistance }} away in {{ profile.city }} +
    +
    +