Skip to content

Commit ba2f645

Browse files
author
jinjiang
committed
Site updated: 2017-06-26 14:58:05
1 parent 348f9e1 commit ba2f645

File tree

4 files changed

+22
-5
lines changed

4 files changed

+22
-5
lines changed

v2/guide/comparison.html

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -641,7 +641,7 @@ <h4 id="JSX-vs-Templates"><a href="#JSX-vs-Templates" class="headerlink" title="
641641
<p>更抽象一点来看,我们可以把组件区分为两类:一类是偏视图表现的 (presentational),一类则是偏逻辑的 (logical)。我们推荐在前者中使用模板,在后者中使用 JSX 或渲染函数。这两类组件的比例会根据应用类型的不同有所变化,但整体来说我们发现表现类的组件远远多于逻辑类组件。</p>
642642
<h4 id="CSS-的组件作用域"><a href="#CSS-的组件作用域" class="headerlink" title="CSS 的组件作用域"></a>CSS 的组件作用域</h4><p>除非你把组件分布在多个文件上(例如 <a href="https://github.com/gajus/react-css-modules" target="_blank" rel="external">CSS Modules</a>),要不在 React 中作用域内的 CSS 就会产生警告。非常简单的 CSS 还可以工作,但是稍微复杂点的,比如悬停状态、媒体查询、伪类选择符等要么通过沉重的依赖来重做要么就直接不能用。</p>
643643
<p>而 Vue 可以让你在每个<a href="single-file-components.html">单文件组件</a>中完全访问 CSS。</p>
644-
<figure class="highlight html"><table><tr><td class="code"><pre><div class="line"><span class="tag">&lt;<span class="name">style</span> <span class="attr">scoped</span>&gt;</span><span class="css"></span></div><div class="line"> @<span class="keyword">media</span> (min-width: <span class="number">250px</span>) &#123;</div><div class="line"> <span class="selector-class">.list-container</span><span class="selector-pseudo">:hover</span> &#123;</div><div class="line"> <span class="attribute">background</span>: orange;</div><div class="line"> &#125;</div><div class="line"> &#125;</div><div class="line"><span class="tag">&lt;/<span class="name">style</span>&gt;</span></div></pre></td></tr></table></figure>
644+
<figure class="highlight html"><table><tr><td class="code"><pre><div class="line"><span class="tag">&lt;<span class="name">style</span> <span class="attr">scoped</span>&gt;</span><span class="undefined"></span></div><div class="line"> @media (min-width: 250px) &#123;</div><div class="line"> .list-container:hover &#123;</div><div class="line"> background: orange;</div><div class="line"> &#125;</div><div class="line"> &#125;</div><div class="line"><span class="tag">&lt;/<span class="name">style</span>&gt;</span></div></pre></td></tr></table></figure>
645645
<p>这个可选 <code>scoped</code> 属性会自动添加一个唯一的属性(比如 <code>data-v-21e5b78</code>)为组件内 CSS 指定作用域,编译的时候 <code>.list-container:hover</code> 会被编译成类似 <code>.list-container[data-v-21e5b78]:hover</code></p>
646646
<p>如果你已经熟悉 CSS Modules,Vue 单文件组件也有 <a href="http://vue-loader.vuejs.org/en/features/css-modules.html" target="_blank" rel="external">first-class 支持它</a></p>
647647
<p>最后,就像 HTML 一样,你可以选择自己偏爱的 CSS 预处理器(或后处理器)编写 CSS,这些生态系统允许您利用现有的库。这可以让你围绕设计为中心展开工作,,比如您的构建过程中颜色操作,而不是引入专门的库来增加你应用的体积和复杂度。</p>
@@ -700,7 +700,8 @@ <h2 id="Polymer"><a href="#Polymer" class="headerlink" title="Polymer"></a>Polym
700700
<p>而 Vue 和 Web Component 标准进行深层次的整合也是完全可行的,比如使用 Custom Elements、Shadow DOM 的样式封装。然而在我们做出严肃的实现承诺之前,我们目前仍在等待相关标准成熟,进而再广泛应用于主流的浏览器中。</p>
701701
<h2 id="Riot"><a href="#Riot" class="headerlink" title="Riot"></a>Riot</h2><p>Riot 2.0 提供了一个类似于基于组件的开发模型(在 Riot 中称之为 Tag),它提供了小巧精美的 API。Riot 和 Vue 在设计理念上可能有许多相似处。尽管相比 Riot ,Vue 要显得重一点,Vue 还是有很多显著优势的:</p>
702702
<ul>
703-
<li><a href="transitions.html">过渡效果系统</a>。Riot 现在还没有提供。<br>-功能更加强大的路由机制,Riot 的路由功能的 API 是极少的。</li>
703+
<li><a href="transitions.html">过渡效果系统</a>。Riot 现在还没有提供。</li>
704+
<li>功能更加强大的路由机制,Riot 的路由功能的 API 是极少的。</li>
704705
<li>更好的性能。Riot 使用了 <a href="http://riotjs.com/compare/#virtual-dom-vs-expressions-binding" target="_blank" rel="external">遍历 DOM 树</a> 而不是虚拟 DOM,但实际上用的还是脏检查机制,因此和 Angular 1 患有相同的性能问题。</li>
705706
<li>更多成熟工具的支持。Vue 提供官方支持<a href="https://github.com/vuejs/vue-loader" target="_blank" rel="external">Webpack</a><a href="https://github.com/vuejs/vueify" target="_blank" rel="external">Browserify</a>,而 Riot 是依靠社区来建立集成系统。</li>
706707
</ul>

v2/guide/events.html

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -671,6 +671,8 @@ <h2 id="事件修饰符"><a href="#事件修饰符" class="headerlink" title="
671671
<li><code>.once</code></li>
672672
</ul>
673673
<figure class="highlight html"><table><tr><td class="code"><pre><div class="line"><span class="comment">&lt;!-- 阻止单击事件冒泡 --&gt;</span></div><div class="line"><span class="tag">&lt;<span class="name">a</span> <span class="attr">v-on:click.stop</span>=<span class="string">"doThis"</span>&gt;</span><span class="tag">&lt;/<span class="name">a</span>&gt;</span></div><div class="line"></div><div class="line"><span class="comment">&lt;!-- 提交事件不再重载页面 --&gt;</span></div><div class="line"><span class="tag">&lt;<span class="name">form</span> <span class="attr">v-on:submit.prevent</span>=<span class="string">"onSubmit"</span>&gt;</span><span class="tag">&lt;/<span class="name">form</span>&gt;</span></div><div class="line"></div><div class="line"><span class="comment">&lt;!-- 修饰符可以串联 --&gt;</span></div><div class="line"><span class="tag">&lt;<span class="name">a</span> <span class="attr">v-on:click.stop.prevent</span>=<span class="string">"doThat"</span>&gt;</span><span class="tag">&lt;/<span class="name">a</span>&gt;</span></div><div class="line"></div><div class="line"><span class="comment">&lt;!-- 只有修饰符 --&gt;</span></div><div class="line"><span class="tag">&lt;<span class="name">form</span> <span class="attr">v-on:submit.prevent</span>&gt;</span><span class="tag">&lt;/<span class="name">form</span>&gt;</span></div><div class="line"></div><div class="line"><span class="comment">&lt;!-- 添加事件侦听器时使用事件捕获模式 --&gt;</span></div><div class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">v-on:click.capture</span>=<span class="string">"doThis"</span>&gt;</span>...<span class="tag">&lt;/<span class="name">div</span>&gt;</span></div><div class="line"></div><div class="line"><span class="comment">&lt;!-- 只当事件在该元素本身(而不是子元素)触发时触发回调 --&gt;</span></div><div class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">v-on:click.self</span>=<span class="string">"doThat"</span>&gt;</span>...<span class="tag">&lt;/<span class="name">div</span>&gt;</span></div></pre></td></tr></table></figure>
674+
<p class="tip">使用修饰服时,顺序很重要;相应的代码会以同样的顺序产生。因此,用 <code>@click.prevent.self</code> 会阻止<strong>所有的点击</strong>,而 <code>@click.self.prevent</code> 只会阻止元素上的点击。</p>
675+
674676
<blockquote>
675677
<p>2.1.4 新增</p>
676678
</blockquote>
@@ -708,6 +710,17 @@ <h2 id="按键修饰符-1"><a href="#按键修饰符-1" class="headerlink" title
708710
<p>注意:在Mac系统键盘上,meta对应命令键 (⌘)。在Windows系统键盘meta对应windows徽标键(⊞)。在Sun操作系统键盘上,meta对应实心宝石键 (◆)。在其他特定键盘上,尤其在MIT和Lisp键盘及其后续,比如Knight键盘,space-cadet键盘,meta被标记为“META”。在Symbolics键盘上,meta被标记为“META” 或者 “Meta”。<br>例如:</p>
709711
</blockquote>
710712
<figure class="highlight html"><table><tr><td class="code"><pre><div class="line"><span class="comment">&lt;!-- Alt + C --&gt;</span></div><div class="line"><span class="tag">&lt;<span class="name">input</span> @<span class="attr">keyup.alt.67</span>=<span class="string">"clear"</span>&gt;</span></div><div class="line"></div><div class="line"><span class="comment">&lt;!-- Ctrl + Click --&gt;</span></div><div class="line"><span class="tag">&lt;<span class="name">div</span> @<span class="attr">click.ctrl</span>=<span class="string">"doSomething"</span>&gt;</span>Do something<span class="tag">&lt;/<span class="name">div</span>&gt;</span></div></pre></td></tr></table></figure>
713+
<p class="tip">修饰符键比正常的按键不同;修饰符键和 <code>keyup</code> 事件一起用时,事件引发时必须按下正常的按键。换一种说法:如果要引发 <code>keyup.ctrl</code>,必须按下 <code>ctrl</code> 时释放其他的按键;单单释放 <code>ctrl</code> 不会引发事件。</p>
714+
715+
<h3 id="滑鼠按键修饰符"><a href="#滑鼠按键修饰符" class="headerlink" title="滑鼠按键修饰符"></a>滑鼠按键修饰符</h3><blockquote>
716+
<p>2.1.0 新增</p>
717+
</blockquote>
718+
<ul>
719+
<li><code>.left</code></li>
720+
<li><code>.right</code></li>
721+
<li><code>.middle</code></li>
722+
</ul>
723+
<p>这些修饰符会限制处理程序监听特定的滑鼠按键。</p>
711724
<h2 id="为什么在-HTML-中监听事件"><a href="#为什么在-HTML-中监听事件" class="headerlink" title="为什么在 HTML 中监听事件?"></a>为什么在 HTML 中监听事件?</h2><p>你可能注意到这种事件监听的方式违背了关注点分离(separation of concern)传统理念。不必担心,因为所有的 Vue.js 事件处理方法和表达式都严格绑定在当前视图的 ViewModel 上,它不会导致任何维护上的困难。实际上,使用 <code>v-on</code> 有几个好处:</p>
712725
<ol>
713726
<li><p>扫一眼 HTML 模板便能轻松定位在 JavaScript 代码里对应的方法。</p>

v2/guide/forms.html

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -695,11 +695,12 @@ <h3 id="单选按钮"><a href="#单选按钮" class="headerlink" title="单选
695695
</script>
696696

697697
<h3 id="选择列表"><a href="#选择列表" class="headerlink" title="选择列表"></a>选择列表</h3><p>单选列表:</p>
698-
<figure class="highlight html"><table><tr><td class="code"><pre><div class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">"example-5"</span>&gt;</span></div><div class="line"> <span class="tag">&lt;<span class="name">select</span> <span class="attr">v-model</span>=<span class="string">"selected"</span>&gt;</span></div><div class="line"> <span class="tag">&lt;<span class="name">option</span>&gt;</span>A<span class="tag">&lt;/<span class="name">option</span>&gt;</span></div><div class="line"> <span class="tag">&lt;<span class="name">option</span>&gt;</span>B<span class="tag">&lt;/<span class="name">option</span>&gt;</span></div><div class="line"> <span class="tag">&lt;<span class="name">option</span>&gt;</span>C<span class="tag">&lt;/<span class="name">option</span>&gt;</span></div><div class="line"> <span class="tag">&lt;/<span class="name">select</span>&gt;</span></div><div class="line"> <span class="tag">&lt;<span class="name">span</span>&gt;</span>Selected: &#123;&#123; selected &#125;&#125;<span class="tag">&lt;/<span class="name">span</span>&gt;</span></div><div class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></div></pre></td></tr></table></figure>
698+
<figure class="highlight html"><table><tr><td class="code"><pre><div class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">"example-5"</span>&gt;</span></div><div class="line"> <span class="tag">&lt;<span class="name">select</span> <span class="attr">v-model</span>=<span class="string">"selected"</span>&gt;</span></div><div class="line"> <span class="tag">&lt;<span class="name">option</span> <span class="attr">disabled</span> <span class="attr">value</span>=<span class="string">""</span>&gt;</span>请选择<span class="tag">&lt;/<span class="name">option</span>&gt;</span></div><div class="line"> <span class="tag">&lt;<span class="name">option</span>&gt;</span>A<span class="tag">&lt;/<span class="name">option</span>&gt;</span></div><div class="line"> <span class="tag">&lt;<span class="name">option</span>&gt;</span>B<span class="tag">&lt;/<span class="name">option</span>&gt;</span></div><div class="line"> <span class="tag">&lt;<span class="name">option</span>&gt;</span>C<span class="tag">&lt;/<span class="name">option</span>&gt;</span></div><div class="line"> <span class="tag">&lt;/<span class="name">select</span>&gt;</span></div><div class="line"> <span class="tag">&lt;<span class="name">span</span>&gt;</span>Selected: &#123;&#123; selected &#125;&#125;<span class="tag">&lt;/<span class="name">span</span>&gt;</span></div><div class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></div></pre></td></tr></table></figure>
699699
<figure class="highlight js"><table><tr><td class="code"><pre><div class="line"><span class="keyword">new</span> Vue(&#123;</div><div class="line"> <span class="attr">el</span>: <span class="string">'#example-5'</span>,</div><div class="line"> <span class="attr">data</span>: &#123;</div><div class="line"> <span class="attr">selected</span>: <span class="literal">null</span></div><div class="line"> &#125;</div><div class="line">&#125;)</div></pre></td></tr></table></figure>
700700

701701
<div id="example-5">
702702
<select v-model="selected">
703+
<option disabled value="">请选择</option>
703704
<option>A</option>
704705
<option>B</option>
705706
<option>C</option>
@@ -715,6 +716,8 @@ <h3 id="选择列表"><a href="#选择列表" class="headerlink" title="选择
715716
})
716717
</script>
717718

719+
<p class="tip">如果 <code>v-model</code> 表达初始的值不相配任何的选择,<code>&lt;select&gt;</code> 元素就会以”未选中”的状态渲染。在 iOS,这会使用者无法选择第一个选择,因为这样的情况下, iOS 不会引发 change 事件。因此,像以上提供 disabled 选择是建议的做法。</p>
720+
718721
<p>多选列表(绑定到一个数组):</p>
719722
<figure class="highlight html"><table><tr><td class="code"><pre><div class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">"example-6"</span>&gt;</span></div><div class="line"> <span class="tag">&lt;<span class="name">select</span> <span class="attr">v-model</span>=<span class="string">"selected"</span> <span class="attr">multiple</span> <span class="attr">style</span>=<span class="string">"width: 50px"</span>&gt;</span></div><div class="line"> <span class="tag">&lt;<span class="name">option</span>&gt;</span>A<span class="tag">&lt;/<span class="name">option</span>&gt;</span></div><div class="line"> <span class="tag">&lt;<span class="name">option</span>&gt;</span>B<span class="tag">&lt;/<span class="name">option</span>&gt;</span></div><div class="line"> <span class="tag">&lt;<span class="name">option</span>&gt;</span>C<span class="tag">&lt;/<span class="name">option</span>&gt;</span></div><div class="line"> <span class="tag">&lt;/<span class="name">select</span>&gt;</span></div><div class="line"> <span class="tag">&lt;<span class="name">br</span>&gt;</span></div><div class="line"> <span class="tag">&lt;<span class="name">span</span>&gt;</span>Selected: &#123;&#123; selected &#125;&#125;<span class="tag">&lt;/<span class="name">span</span>&gt;</span></div><div class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></div></pre></td></tr></table></figure>
720723
<figure class="highlight js"><table><tr><td class="code"><pre><div class="line"><span class="keyword">new</span> Vue(&#123;</div><div class="line"> <span class="attr">el</span>: <span class="string">'#example-6'</span>,</div><div class="line"> <span class="attr">data</span>: &#123;</div><div class="line"> <span class="attr">selected</span>: []</div><div class="line"> &#125;</div><div class="line">&#125;)</div></pre></td></tr></table></figure>

0 commit comments

Comments
 (0)