今回は、Vue のインタビューに関する知識ポイントをお届けします。必要な方は、編集者をフォローしてご覧ください。
[関連する推奨事項: vue の面接の質問 (2020)]
1. vue の紹介
vue は、ユーザー インターフェイスを構築するためのフレームワークです。これは、Angular と同様に、いわゆる双方向データ バインディング、データ駆動型およびコンポーネント ベースのフロントエンド開発であり、シンプルな API を通じて応答性の高いデータ バインディングとビュー コンポーネントの組み合わせを実装します。使いやすくてコンパクトです。
2. Chrome で vue のデバッグを容易にするために vue-devtools プラグインをインストールします。デバッグを容易にするために vue-devtools がコードをチェックできるかどうかを構成します。vue.config.devtools = false。
vue.config.productionTip =false;本番メッセージの開始を防ぎます。
3. よく使用されるコマンド。
v-model 双方向データ バインディング。通常はフォーム要素に使用されます。
v-forは、配列またはオブジェクトに対してループ操作を実行します。v-repeatの代わりにv-forを使用します
v-onは時間をバインドするために使用されます。使用法: v-on : time = 'function'
v-show/v-if は要素を表示または非表示にするために使用され、v-show は表示を通じて実装され、v-if は削除のたびに作成されます
4. イベントと属性
v-on : click = " 略語 @click=""
$event イベント オブジェクト。イベント ソース、時間タイプ、オフセットなどのイベント関連情報が含まれます。
イベント バブリング、ネイティブ JS メソッドは、次のものに依存します。イベント オブジェクト、vue モードはイベント オブジェクトに依存しません。イベントのバブリングを防ぐための @click.stop
キーボード イベント: @keydown.13 または keydown.enter
イベント修飾子 .stop は、event.stopPropagation ( );
v-bind は属性バインディングに使用されます。使用法は v-bind:attribute="" 例 v-bind:src="" 省略形: src=""
5 vue.js は HTML を使用します。 vue インスタンスで dom をデータ テンプレートにバインドするための -based テンプレート構文。{{}} はデータをバインドしてページに表示するために使用されます。
単一アイテム バインディング{{}} はちらつきの問題を引き起こす可能性があります
v-text v-html を使用することもできます
v-pre は変更されず、そのまま直接表示されます
。 6. フィルター
は、モデル データをフィルターし、データ ペアを処理してフィルターしてから
構文: {{data | filter (parameter)}}
Built-inフィルタリング 2.0 以降は削除されます。これを使用すると、lodash data-fns、日付形式、accounting.js、通貨形式およびカスタマイズなどのサードパーティ ライブラリを使用できます。
。
vue 自体は送信をサポートしていません。Ajax リクエストは vue-resource axios などのプラグインを使用して実装する必要があります。axios を使用することをお勧めします。axios は、リクエストの送信に使用される、Promise ベースの http リクエスト クライアントです。
基本的な使用法:
axios.get(url[,options]); 传参方式,url或者params传参 axios.post(url,data,[options]);
注: axios がデフォルトでデータを送信するとき、データ形式は、で使用される形式ではなく、リクエスト ペイロードです。ベッドのデータ形式なので、パラメーターはキーと値のオブジェクトとして渡す必要があります
、パラメーターは JSON 形式で渡すことはできません
パラメーターを渡す方法: キーと値のペアを自分で結合し、transformrequst を使用してリクエストを送信する前にデータをリクエストします 変換するか、変換に qs モジュールを使用します
axios はクロスドメインリクエストをサポートしていません。vue-resource を使用してクロスドメインリクエストを送信できます。
ドメイン間でリクエストを送信する: this.$http.get(url,[options]); this.$http.post(url,[options]);
8.vue ライフサイクル
vueインスタンスの作成から破棄までのプロセスがライフサイクルになります
9。計算プロパティ
計算プロパティは、データの保存にも使用されます。データを論理的に処理できることと、計算プロパティ内のデータを監視できることです。
10.vue インスタンスのプロパティとメソッド
プロパティ vm.$el vm.$data vm.$options vm.$refs
メソッド vm.$mount() vm.$destroy vm.$ nextTick(callback) vm.$set(object,key,vlaue) vm.$delete(object,key) vm.$watch(data,callback)
11、カスタムコマンド
カスタムグローバルコマンドビュー。ディレクティブ (ディレクティブ ID、定義オブジェクト)
12. トランジション (アニメーション)
vue は、更新または dom を挿入するときにプロセスを適用するためのさまざまな方法を提供します。
基本的な使い方です。 : トランジション コンポーネントを使用して、変更されたコンポーネントにアニメーション化する要素を配置します
サードパーティのアニメーション ライブラリ animater.css と一緒に使用します
<transition enter-active-class="animated fadeInLeft" leave-active-class="animated fadeOutRight"> <p v-show="flag">显示内容</p> </transition>
13。コンポーネント
vue の強力な機能。コンポーネントを HTML 要素と組み合わせて、コードをカプセル化して再利用できます。
コンポーネント メソッドを定義するには、まずコンポーネント コンストラクターを作成し、次にコンポーネント コンストラクターを使用してコンポーネントを作成します。 b>
を直接作成してテンプレート で参照します。コンポーネント data; 関数内のデータは、vue インスタンスに格納されているデータとは異なります。 :is="" コンポーネント、複数のコンポーネント 同じハング ポイントを使用し、動的に切り替えます。
キープアライブ キャッシュ コンポーネントを使用して再作成を回避し、より効率的です
データ転送: 親子コンポーネント。1 つのコンポーネント内に別のコンポーネントが定義され、これを親子コンポーネントと呼びます。
子组件只能在付组件中使用,默认情况下,子组件不能访问付组件数据。每个组件的作用域是独立的。
组件间数据的通信:在调用组件时,绑定想要获取的付组件的数据,在子组件内部,使用props选项来生命获取
的数据,接收来自付组件的数据。例子:props:['msg'] props可以是数组,也可以是对象props:{} 允许配置高级设计比如类型判断
数据的校验,设置默认值 props:{messge:String,age:Number,name:{type:String,rquired:true,default:19,validator:function(){}}},对象做数组的默认值,
对象必须使用函数返回。
组件中的数据有三种形式:data props computed
付组件访问子组件数据方式:
a.在子组件中使用vm.$emit(事件名,数据) 出发一个自定义事件,事件名自定义
b.付组件在使用子组件的地方监听子组件出发事件,并在付组件中定义方法,用来获取数据
单项数据流:
props是单项绑定的,当付组件的属性变化时,将传导给子组件,但是不会反过来,而且不允许子组件直接
修改付组件中的数据
解决方案: a.如果子组件享把他作为局部数据来使用,可以将数据存入另一个变量在操作
b.如果子组件想修改数据并同步付组件,使用.sync 2.3开始支持,或者将付组件数据包装成udixiang,
然后在子组件中修改对象的属性。
非父子组件间通信:
可以通过一个空的vue实例来作为中央事件总线,用他来出发事件或监控事件
var Event = new Vue(); 空对象
Event.$emit(事件名,数据); 发送数据
Event.$on(事件名,data=>{}) 监听接收数据
slot内容分发:
用来获取组件中的元内容,就是组件标签中的内容;
获得指定标签内容可以给标签定义 slot="s1" 获取
14.vue-router 路由
使用vue.js 开发spa 单页面应用,根绝不同url地址,显示不同内容,但实现在统一页面红,称单页面应用。
bower info vue-router cnpm install vue-router -S
<p id="itany"> <p> <!-- 使用router-link组件来定义导航,to属性指定链接url --> <router-link to="/home">主页</router-link> <router-link to="/news">新闻</router-link> </p> <p> <!-- router-view用来显示路由内容 --> <router-view></router-view> </p> </p>
<script> //1.定义组件 var Home={ template:'<h3>我是主页</h3>' } var News={ template:'<h3>我是新闻</h3>' }
//2.配置路由 const routes=[ {path:'/home',component:Home}, {path:'/news/:username/:password'',component:News}, {path:'*',redirect:'/home'} //重定向 ]
//3.创建路由实例 const router=new VueRouter({ routes, //简写,相当于routes:routes // mode:'history', //更改模式 linkActiveClass:'active' //更新活动链接的class类名 });
//4.创建根实例并将路由挂载到Vue实例上 new Vue({ el:'#itany', router //注入路由 }); </script>
知识点: