検索

Vue.js は、現在非常に人気のある JavaScript MVVM ライブラリであり、データ駆動型およびコンポーネントベースのアイデアで構築されています。 Angular.js と比較して、Vue.js はよりシンプルで理解しやすい API を提供するため、すぐに Vue.js を使い始めて使用することができます。次の記事では、vue.js の使用に関する関連した概要を主に紹介します。必要な友人は参照してください。

1. Vue.js コンポーネント

vue.js ビルド コンポーネント 使用

Vue.component('componentName',{ /*component*/ });

ここで、コンポーネントは最初に登録してから使用する必要があることに注意してください。つまり、

Vue.component('mine',{
  template:'#mineTpl',
  props:['name','title','city','content']
 });

 var v=new Vue({
 el:'#vueInstance',
 data:{
  name:'zhang',
  title:'this is title',
  city:'Beijing',
  content:'these are some desc about Blog'
 }
});

逆の場合は、逆の場合は、コンポーネントが最初に使用されることを意味するため、エラーが報告されます。コンポーネントはインストールされていますが、コンポーネントは登録されていません。

webpack がエラーを報告した後、webpack --display-error-details を使用してエラーをトラブルシューティングします

2. コマンド keep-alive

デモを見ていると、keep-alive と keep-alive という言葉が書かれているのが見えました。 vue-router. 意味:

切り替えられたコンポーネントをメモリ内に保持すると、その状態を保存したり、再レンダリングを回避したりできます。この目的のために、キープアライブ命令を追加できます

<component></component>

3. CSS を現在のコンポーネントでのみ機能させる方法

CSS を記述したい場合は、各 vue コンポーネントで独自の CSS と JS を定義できます。現在のコンポーネントで作業するには、スタイルでスコープを指定するだけで済みます。

<style></style>

4. vuejs ループに画像を挿入します

ループを記述するときは、次のコードを記述します。

<p> 
 <img  src="/static/imghwm/default1.png" data-src="{{item.image}}" class="lazy" alt="vue.js の使い方の超包括的なまとめ" >
</p>

この時点でコンソールに表示されます。警告
[Vue Warn]: src="{{item.image}}": "src" 属性の補間により 404 リクエストが発生します。代わりに v-bind:src を使用してください。これは、「src」属性の補間により 404 リクエストが発生することを意味します。代わりに v-bind:src を使用してください。

次のように置き換えます:

<p> 
 <img  src="/static/imghwm/default1.png" data-src="item.image" class="lazy" alt="vue.js の使い方の超包括的なまとめ" >
</p>

ここがキーです。公式の声明によると、v-bind は {{}} を使用できなくなります:

<a></a>

ここでの href はパラメーターであり、v に指示します。 -bind 命令は、要素の href 属性を式 URL の値にバインドします。特徴補間 href="{{url}}" rel="external nofollow" を使用しても同じ結果が得られることに気づいたかもしれません。これは正しく、内部的に特徴補間は実際に v-bind バインディングに変換されます。

5. Vue インスタンスの動的属性に値をバインドする

ラジオ ボタン、チェック ボックス、および選択ボックスのオプションの場合、v-model にバインドされる値は通常、静的な文字列です (チェック ボックスの場合は論理文字列値です) ):

<!-- `toggle` 为 true 或 false -->
<input>

ただし、値を vue インスタンスの動的属性にバインドしたい場合もあります。この場合、v-bind を使用できます。この属性の値は文字列である必要はありません。たとえば、Checkbox の値を vue インスタンスの動的属性にバインドします。

<input>
<p>{{toggle}}</p>

ここでバインドした後、クリック後に true と false から a と b に切り替えられるわけではありません。なぜなら、ここで定義されている動的 a は、 b はスコープ上の a, b であり、

//当选中时
vm.toggle === vm.a
//当没选中时
vm.toggle === vm.b

なので直接表示できないので、この時点でデータ内で a, b を定義する必要があります。つまり、

new Vue({
 el:'...',
 data:{
 a:'a',
 b:'b' 
 }
});

6. フラグメントインスタンス

次の状況では、インスタンスがフラグメント インスタンスになります:

  1. テンプレートには複数のトップレベル要素が含まれています。

  2. テンプレートには通常のテキストのみが含まれています。

  3. テンプレートには他のコンポーネントのみが含まれます (他のコンポーネントはフラグメント インスタンスである可能性があります)。

  4. テンプレートには、 や vue-router の などの要素ディレクティブが 1 つだけ含まれています。

  5. テンプレートのルートノードには、v-if や v-for などのフロー制御ディレクティブがあります。

インスタンスに未知の数のトップレベル要素がある場合、その DOM コンテンツはフラグメントとして扱われます。フラグメント インスタンスは引き続きコンテンツを正しくレンダリングします。ただし、ルート ノードはなく、その $el は空のテキスト ノード (開発モードではコメント ノード) であるアンカー ノードを指します。

しかし、より重要なのは、バインドするルート要素がないため、コンポーネント要素の非フロー制御ディレクティブ、非プロパティ属性、トランジションは無視されることです:

<!-- 不可以,因为没有根元素 -->
<example></example>
 
<!-- props 可以 -->
<example></example>
 
<!-- 流程控制可以,但是不能有过渡 -->
<example></example>

Fragment インスタンスも便利ですが、通常、コンポーネントには 1 つのインスタンスがあります。ルート ノードの方が優れており、コンポーネント要素の命令とプロパティが確実に正しく変換され、パフォーマンスがわずかに向上します。

7. ルートのネスト

ルートのネストでは、ページ全体をジャンプするのではなく、コンポーネントをその位置にレンダリングします。ページをレンダリングするだけです。ルートを構成するときに、ルート コンポーネントに次のように記述します。

var App = Vue.extend({ root });
router.start(App,'#app');

ここでは、まずルート コンポーネントを登録してルートに構成された各ページをレンダリングし、次に # app が要素に一致するようにルート コンポーネントをマウントします。

8. 条件に応じて異なるテキストを表示するメソッドを複数実装する

v-if、v-elseで条件選択を実現できますが、複数連続の条件選択の場合は計算された属性を使用する必要があります。たとえば、入力ボックスに何も書き込まれていない場合は「empty」という文字列が表示され、それ以外の場合は入力ボックスの内容が表示されます。

<p>
 <input>
 </p><h1 id="changeVaule">{{changeVaule}}</h1>

new Vue({
 el:'#test',
 data:{
 changeVaule:'123'
 },
 computed :{
 changeVaule:function(){
  if(this.inputValue!==''){
  return this.inputValue;
  }else{
  return 'empty';
  }
 }
 }
});

9. Vuejs の変更検出の問題

1.配列

JavaScript の制限により、vuejs は配列に対する次の変更を検出できません:

vm.item[0]={} などの設定要素を直接インデックス化する

データの長さを変更するvm.item.length。

問題 1 を解決するために、Vuejs は観測配列を拡張し、それに $set() メソッドを追加します。

// 与 `example1.items[0] = ...` 相同,但是能触发视图更新
example1.items.$set(0, { childMsg: 'Changed!'})

问题2,需要一个空数组替换items。

除了$set() ,vuejs也为观察数组添加了$remove()方法,用于从目标数组中查找并删除元素,在内部调用了splice() 。

因此,不必:

var index = this.items.indexOf(item)
if (index !== -1) {
 this.items.splice(index, 1)
}

只需:

this.items.$remove(item);

2.检测对象

受ES5的显示,Vuejs不能检测到对象属性的添加或删除。因为Vuejs在初始化时候将属性转化为getter/setter,所以属性必须在data对象才能让Vuejs转换它,才能让它是响应的,例如:

var data = { a: 1 }
var vm = new Vue({
 data: data
})
// `vm.a` 和 `data.a` 现在是响应的
 
vm.b = 2
// `vm.b` 不是响应的
 
data.b = 2
// `data.b` 不是响应的

不过,有办法在实例创建之后添加属性并且让它是响应的。对于Vue实例,可以使用$set(key,value)实例方法:

vm.$set('b', 2)
// `vm.b` 和 `data.b` 现在是响应的

对于普通数据对象,可以使用全局方法Vue.set(object, key, value) :

Vue.set(data, 'c', 3)
// `vm.c` 和 `data.c` 现在是响应的

有时你想向已有对象上添加一些属性,例如使用 Object.assign() 或 _.extend() 添加属性。但是,添加到对象上的新属性不会触发更新。这时可以创建一个新的对象,包含原对象的属性和新的属性:

// 不使用 `Object.assign(this.someObject, { a: 1, b: 2 })`
this.someObject = Object.assign({}, this.someObject, { a: 1, b: 2 })

十、关于vuejs页面闪烁{{message}}

在vuejs指令中有v-cloak,这个指令保持在元素上直到关联实例结束编译。和CSS规则如[v-cloak]{display:none}一起用时,这个指令可以隐藏未编译的Mustache标签直到实例准备完毕。

用法如下:

[v-cloak]{
 display:none;
}
<p>{{message}}</p>

这样

不会显示,直到编译结束

十一、关于在v-for循环时候v-model的使用

有时候需要循环生成input,用v-model绑定后,利用vuejs操作它,此时我们可以在v-model中写一个数组selected[$index] ,这样就可以给不同的input绑定不同的v-model,从而分别操作他们。这个我在demo中的dataBind.vue中用到。

十二、vuejs中过渡动画

在vuejs中,css定义动画:

 .zoom-transition{
  width:60%;
  height:auto;
  position: absolute;
  left:50%;
  top:50%;
  transform: translate(-50%,-50%);
  -webkit-transition: all .3s ease;
  transition: all .3s ease;
 }
 .zoom-enter, .zoom-leave{
  width:150px;
  height:auto;
  position: absolute;
  left:20px;
  top:20px;
  transform: translate(0,0);
 }

其中动画在定的时候要注意上下对应,上面有什么,下面有什么,都要变化的,如果有不变化的,应该抽离出去,作为公共css样式,在上面的css中,如果我只写 transform: translate(-50%,-50%);而不写下面的transform: translate(0,0);则会导致上面的transform: translate(-50%,-50%);被添加到下面,认为这个是不变的。

十三、指令v-el的使用

有时候我们想就像使用jquery那样去访问一个元素,此时就可以使用v-el指令,去给这个元素注册一个索引,方便通过所属实例的$el访问这个元素。

注意

HTML不区分大小写,所以v-el:someEl将转换为全小写。可以用v-el:some-el然后设置this.$el.someEl。

示例

<span>hello</span>
<span>world</span>
this.$els.msg.textContent // -> "hello"
this.$els.otherMsg.textContent // -> "world"
this.$els.msg //-><span>hello</span>

十四、关于vuejs中使用事件名

在vuejs中,我们经常要绑定一些事件,有时候给DOM元素绑定,有时候给组件绑定。绑定事件在HTML中用v-on:click-"event" ,这时evet的名字不要出现大写,因为在1.x中不区分大小写,所以如果我们在HTML写v-on:click="myEvent"而在js中写myEvent就出错误,所以在vuejs的1.x绑定事件时候,要尽量避免使用大写字母。在2.0中没有该限制!

十五、v-if与v-show的区别

v-if直接不渲染这个DOM元素,而v-show是会渲染DOM元素,只是使用display:none隐藏,打开开发者工具可以看到该DOM

十六、关于transition全局钩子如何在组件中使用

Vue.transition是定义一个全局transition钩子的,如果想针对组件定义,则需要如下写法:

export default{
 transition:{
  'fade':{
   enter() {},
   leave() {}
  }
 }
}

这样fade这个过度钩子只会作用于组件内,如果同时有同名的全局钩子,则会优先使用组建定义的

十七、利用vue-router如何实现组件在渲染出来前执行某个事件

export default{
 data(){
  return{
   selected:0,
   currentView:'view_0'
  }
 },
 methods:{
  choose(index) {
   this.selected=index;
   this.currentView='view_'+index;
  }
 },
 route:{
  data() {
   /*每次切换路由,在渲染出页面前都会执行*/
  }
 }
}

更多超全面的vue.js使用总结相关文章请关注PHP中文网!

相关文章:

通过纯Vue.js构建Bootstrap组件

强大Vue.js组件详细说明

Vue.js环境搭建教程介绍

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
JavaScriptのデータ型:ブラウザとNodejsに違いはありますか?JavaScriptのデータ型:ブラウザとNodejsに違いはありますか?May 14, 2025 am 12:15 AM

JavaScriptコアデータ型は、ブラウザとnode.jsで一貫していますが、余分なタイプとは異なる方法で処理されます。 1)グローバルオブジェクトはブラウザのウィンドウであり、node.jsのグローバルです2)バイナリデータの処理に使用されるNode.jsの一意のバッファオブジェクト。 3)パフォーマンスと時間の処理にも違いがあり、環境に従ってコードを調整する必要があります。

JavaScriptコメント://および / * *を使用するためのガイドJavaScriptコメント://および / * *を使用するためのガイドMay 13, 2025 pm 03:49 PM

javascriptusestwotypesofcomments:シングルライン(//)およびマルチライン(//)

Python vs. JavaScript:開発者の比較分析Python vs. JavaScript:開発者の比較分析May 09, 2025 am 12:22 AM

PythonとJavaScriptの主な違いは、タイプシステムとアプリケーションシナリオです。 1。Pythonは、科学的コンピューティングとデータ分析に適した動的タイプを使用します。 2。JavaScriptは弱いタイプを採用し、フロントエンドとフルスタックの開発で広く使用されています。この2つは、非同期プログラミングとパフォーマンスの最適化に独自の利点があり、選択する際にプロジェクトの要件に従って決定する必要があります。

Python vs. JavaScript:ジョブに適したツールを選択するPython vs. JavaScript:ジョブに適したツールを選択するMay 08, 2025 am 12:10 AM

PythonまたはJavaScriptを選択するかどうかは、プロジェクトの種類によって異なります。1)データサイエンスおよび自動化タスクのPythonを選択します。 2)フロントエンドとフルスタック開発のためにJavaScriptを選択します。 Pythonは、データ処理と自動化における強力なライブラリに好まれていますが、JavaScriptはWebインタラクションとフルスタック開発の利点に不可欠です。

PythonとJavaScript:それぞれの強みを理解するPythonとJavaScript:それぞれの強みを理解するMay 06, 2025 am 12:15 AM

PythonとJavaScriptにはそれぞれ独自の利点があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1. Pythonは、データサイエンスやバックエンド開発に適した簡潔な構文を備えた学習が簡単ですが、実行速度が遅くなっています。 2。JavaScriptはフロントエンド開発のいたるところにあり、強力な非同期プログラミング機能を備えています。 node.jsはフルスタックの開発に適していますが、構文は複雑でエラーが発生しやすい場合があります。

JavaScriptのコア:CまたはCの上に構築されていますか?JavaScriptのコア:CまたはCの上に構築されていますか?May 05, 2025 am 12:07 AM

javascriptisnotbuiltoncorc;それは、解釈されていることを解釈しました。

JavaScriptアプリケーション:フロントエンドからバックエンドまでJavaScriptアプリケーション:フロントエンドからバックエンドまでMay 04, 2025 am 12:12 AM

JavaScriptは、フロントエンドおよびバックエンド開発に使用できます。フロントエンドは、DOM操作を介してユーザーエクスペリエンスを強化し、バックエンドはnode.jsを介してサーバータスクを処理することを処理します。 1.フロントエンドの例:Webページテキストのコンテンツを変更します。 2。バックエンドの例:node.jsサーバーを作成します。

Python vs. Javascript:どの言語を学ぶべきですか?Python vs. Javascript:どの言語を学ぶべきですか?May 03, 2025 am 12:10 AM

PythonまたはJavaScriptの選択は、キャリア開発、学習曲線、エコシステムに基づいている必要があります。1)キャリア開発:Pythonはデータサイエンスとバックエンド開発に適していますが、JavaScriptはフロントエンドおよびフルスタック開発に適しています。 2)学習曲線:Python構文は簡潔で初心者に適しています。 JavaScriptの構文は柔軟です。 3)エコシステム:Pythonには豊富な科学コンピューティングライブラリがあり、JavaScriptには強力なフロントエンドフレームワークがあります。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、