ルーティングとは何ですか
- 平均的なウェブサイトのために、すべてのハイパーリンクは、サーバに対応するリソースの全てに対応するURLアドレス、URLアドレスです。
- HTTPリクエストは、関連するコンテンツハッシュを含んでいない。アプリケーションのため、単一のページを単一ページのアプリケーションのために、主にハッシュ機能、つつ、URLのハッシュの異なるページ(#番号)を切り替えることで実現メインページジャンプはハッシュを実装しました。
- ハッシュを変更することにより、ページを切り替えるには、このように単一ページのアプリケーションでは、ルート(後端異なる経路)のフロントエンドと呼ばれます。
VUEでVUE-ルータを使用します
ルートの基本的な使用は、以下のステップを含みます。
- はじめに
vue-router.js
、あなたもすることができますnpm
インストール後に再導入 - テンプレートオブジェクトを作成します。
- ルートオブジェクトを作成し、導入された場合に
vue-router
パケットの後、window
グローバルオブジェクトは、と呼ばれるルート・コンストラクタが存在するVueRouter
時に、new
ルート・オブジェクトの時間、コンストラクタが設定オブジェクトを渡すことができます。コンフィギュレーション・オブジェクトがroutes
表すルーティング・マッチング・ルールを、各ルーティングルール、2つの必須属性を持つオブジェクトは、このルールの目的です。path
これは、ルーティングリンクアドレスをリッスンを表し、component
彼は、ルートが前方に一致した場合と言っpath
、次に表示component
:注意、対応するコンポーネントのプロパティのcomponent
プロパティ値は、テンプレートオブジェクトのコンポーネントである必要があり、構成要素の名前を参照することができません。
router: routerObj
URLの変化を監視し、そして、対応する部品を表示するために使用されるルーティングルールオブジェクト、登録VMインスタンスrouter-view
されvue-router
、具体的プレースホルダとして使用される要素、コンポーネントルーティングルールに一致するように、将来的に一致するように、表示コンポーネントを提供し、これがために表示されますrouter-view
行きます
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="./lib/vue-2.4.0.js"></script>
<script src="./lib/vue-router-3.0.1.js"></script>
</head>
<body>
<div id="app">
<a href="#/login">登录</a>
<a href="#/register">注册</a>
<router-view></router-view>
</div>
<script>
var login = {
template: '<h3>登录组件</h3>'
}
var register = {
template: '<h3>注册组件</h3>'
}
var routerObj = new VueRouter({
routes: [
{ path: '/login', component: login },
{ path: '/register', component: register }
]
})
var vm = new Vue({
el: '#app',
router: routerObj
})
</script>
</body>
</html>
公式には、推奨router-link
するのではなく、<a>
コンポーネントのナビゲーションを行います
<router-link to="/login">登录</router-link>
<router-link to="/register">注册</router-link>
router-link
描画するデフォルトa
のラベル、あなたができるtag
属性は、レンダリングされる要素を指定します
<router-link to="/login" tag="span">登录</router-link>
あなたは、することができ/
、指定されたコンポーネントをログに記録するようにマッピングされました
{ path: '/', component: login }
推奨redirect
リダイレクション
{ path: '/', redirect: '/login' }
デフォルトルートが活性化され、アプリケーションのrouter-link-active
スタイル、スタイルの変更がハイライトに定義することができます
.router-link-active {
color: red;
text-decoration: underline;
}
デフォルトのスタイルを変更するには、コンストラクタは、属性によって再ルーティングすることができるlinkActiveClass
適用されるカスタムスタイルを指定します
var routerObj = new VueRouter({
routes: [
{ path: '/', redirect: '/login' },
{ path: '/login', component: login },
{ path: '/register', component: register }
],
linkActiveClass: 'myactive'
})
使用:アニメーション経路切り替えが提供されているtransition
ラベルを包みrouter-view
、と定義するv-enter, v-leave-to, v-enter-active, v-leave-active
ことで、スタイルをmode
プロパティスイッチングモードアニメーション
<transition mode="out-in">
<router-view></router-view>
</transition>
ルーティングルールにパラメータを渡します
- 1.1ルーティングに渡されたクエリ文字列パラメータを使用して、ルーティングを変更する必要はルール
path
のプロパティを
<router-link to="/login?id=10&name=zs">登录</router-link>
- 1.2サブアセンブリ
this.$route.query.属性名
収集パラメータ
var login = {
template: '<h1>登录 --- {{ $route.query.id }} --- {{ $route.query.name }}</h1>'
}
- 2.1
:
ルーティングルールにパラメータを渡すためのプレースホルダは、変換する必要があります
{ path: '/login/:id/:name', component: login }
- 2.2送信パラメータは、のように書くことができます。
<router-link to="/login/12/zs">登录</router-link>
- 2.3サブアセンブリ
this.$route.params.属性名
収集パラメータ
var login = {
template: '<h1>登录 --- {{ $route.params.id }} --- {{ $route.params.name }}</h1>'
}
使用するchildren
ネストされたプロパティは、ルーティングを実装
- 使用
children
サブルーティングを達成するためのプロパティ、副経路ながらpath
前に、取ることはありません/
、それ以外の場合は、ルート要求を開始します。
<div id="app">
<router-link to="/account">Account</router-link>
<router-view></router-view>
</div>
<template id='tmpl'>
<div>
<h3>Account组件</h3>
<router-link to="/account/login">登录</router-link>
<router-link to="/account/register">注册</router-link>
<router-view></router-view>
</div>
</template>
<script>
var account = {
template: '#tmpl'
}
var login = {
template: '<h4>登录组件</h4>'
}
var register = {
template: '<h4>注册组件</h4>'
}
var router = new VueRouter({
routes: [
{
path: '/account',
component: account,
children: [
{ path: 'login', component: login },
{ path: 'register', component: register }
]
}
]
})
var vm = new Vue({
el: '#app',
router
})
</script>
名前付きの古典的なレイアウトビューを達成
- ルートは以前のマッチルールを学んだ
{ path: '/', component: header }
一経路に嵌合したときにコンポーネント、およびルーティングおよびアセンブリを示す表さ。 - することで
components
、あなたの点に注意し、多くの関係ルーティングとアセンブリを指定することができますcomponents
代わりにcomponent
。タグの属性に未来を表すアセンブリのショー。何も存在しない場合、属性は、表示され、対応するコンポーネントのプロパティを。router-view
name
router-view
name
components
default
- htmlコードの構造:
<div id="app">
<router-view></router-view>
<div class="container">
<router-view name="left"></router-view>
<router-view name="main"></router-view>
</div>
</div>
- JSコード:
<script>
var header = {
template: '<h1 class="header">Header头部区域</h1>'
}
var leftBox = {
template: '<h1 class="left">Left侧边栏区域</h1>'
}
var mainBox = {
template: '<h1 class="main">mainBox主体区域</h1>'
}
var router = new VueRouter({
routes: [
{
path: '/', components: {
'default': header,
'left': leftBox,
'main': mainBox
}
}
]
})
var vm = new Vue({
el: '#app',
router
})
</script>
- CSSスタイル:
<style>
html,
body {
margin: 0;
padding: 0;
}
.header {
background-color: orange;
height: 80px;
}
h1 {
margin: 0;
padding: 0;
font-size: 16px;
}
.container {
display: flex;
height: 600px;
}
.left {
background-color: lightgreen;
flex: 2;
}
.main {
background-color: lightpink;
flex: 8;
}
</style>
watch
プロパティの使用
watch
物事はdata
指定されたデータに変更します
FIRSTNAMEを入力する最初のテキストボックス、LASTNAMEを入力するための第2のテキストボックス、第3の出力テキストボックスフルネーム、HTML以下の構造
<div id="app">
<input type="text" v-model="firstname"> +
<input type="text" v-model="lastname"> =
<input type="text" v-model="fullname">
</div>
使用するwatch
プロパティを監視することができdata
、データで指定された変更をした後、トリガーwatch
に対応するfunction
ハンドラを。
var vm = new Vue({
el: '#app',
data: {
firstname: '',
lastname: '',
fullname: ''
},
watch: {
'firstname': function () {
this.fullname = this.firstname + '-' + this.lastname
}
}
})
ことに注意してくださいwatch
場合はプロパティが無料で-
コンテンツがあれば、可能な単一引用符なしで-
次のように単一引用符であることを、この関数は省略することができます。
firstname() {
this.fullname = this.firstname + '-' + this.lastname
}
また、監視機能は、2つのパラメータ受け入れることができ(newValue, oldValue)
、それぞれ、そのため、変更後の値、および変更前の値にthis.firstname
することができnewValue
、使用しない場合、置換oldValue
パラメータを記述することができません、oldValue
firstname(newValue, oldValue) {
this.fullname = newValue + '-' + this.lastname
}
変更モニタルートオブジェクト
ルート変更の監視、実際には、それが監視することでthis.$route.path
特性の変化を
'$route.path': function(newValue, oldValue) {
if (newValue == '/login') {
console.log('欢迎进入登录页面')
} else {
console.log('欢迎进入注册页面')
}
}
computed
計算されたプロパティを使用します
computed
呼ばれているプロパティの数、で定義することができる計算財産、財産の性質計算方法ですが、私たちは、これらの計算の属性を使用する場合、その名前は、プロパティとして直接使用されるべきである。コンピューティング入れていません呼び出す方法としての性質は、あるため、もののdata
に含まれていないfullname
プロパティが、html
まだラベルを使用することができますv-model
バインディングcomputed
計算属性プロパティをfullname
- プロパティを計算するために参照する場合は、追加してはならない
()
十分な通常のようにそれを使用するプロパティに直接呼び出すこと - 限り計算属性として、この
function
いずれかの内部に、使用data
データが変更された、それはすぐにプロパティの計算値を再計算します。 - 属性の計算は、直接次の時間にキャッシュされている評価し、属性の計算方法は、任意のデータ参照が切り替わっていない場合、それは再計算特性評価ではありません。
var vm = new Vue({
el: '#app',
data: {
firstname: '',
lastname: ''
},
computed: {
'fullname': function(){
return this.firstname + '-' + this.lastname
}
}
})
- それは定義がある
getter
とsetter
の特性の計算を:
<div id="app">
<input type="text" v-model="firstName">
<input type="text" v-model="lastName">
<!-- 点击按钮重新为 计算属性 fullName 赋值 -->
<input type="button" value="修改fullName" @click="changeName">
<span>{{fullName}}</span>
</div>
<script>
// 创建 Vue 实例,得到 ViewModel
var vm = new Vue({
el: '#app',
data: {
firstName: 'jack',
lastName: 'chen'
},
methods: {
changeName() {
this.fullName = 'TOM - chen2';
}
},
computed: {
fullName: {
get: function () {
return this.firstName + ' - ' + this.lastName;
},
set: function (newVal) {
var parts = newVal.split(' - ');
this.firstName = parts[0];
this.lastName = parts[1];
}
}
}
});
</script>
watch
、computed
そしてmethods
間のコントラスト
computed
結果は、唯一の再計算に依存しない限り、属性の変更が応答属性が、キャッシュされています。使用する主なプロパティ。methods
この方法は、特定の操作、メイン書き込みのビジネスロジックを表します。watch
オブジェクトキーは、コールバック関数に対応する値を観察する必要性の表現です。主に、それによって特定のビジネスロジック動作を行う、データの特定の変化を監視するために使用され、それは考えることができcomputed
、およびmethods
それらの組み合わせ。