質問編集履歴

5

コードの誤りを修正

2016/11/18 06:45

投稿

hojo
hojo

スコア195

test CHANGED
File without changes
test CHANGED
@@ -26,7 +26,7 @@
26
26
 
27
27
  // this.redirect('/login') // 1.リダイレクトならうまくいくが使いたくない
28
28
 
29
- // this.url = '/login' // 2.これは期待した動作はしてくれない
29
+ // this.path = '/login' // 2.これは期待した動作はしてくれない
30
30
 
31
31
  // this.body = 'this is login page.' // 3.これは期待した動作に近いが出力結果が同じだけで切り替わったわけではない
32
32
 

4

細かい部分を修正

2016/11/18 06:45

投稿

hojo
hojo

スコア195

test CHANGED
File without changes
test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
 
12
12
 
13
- つまり以下のようなことがしたいのですが可能でしょうか?
13
+ つまり以下のようなことがしたいのですがどのようにすれば可能でしょうか?
14
14
 
15
15
 
16
16
 

3

読みにくかったので修正

2016/11/18 06:42

投稿

hojo
hojo

スコア195

test CHANGED
File without changes
test CHANGED
@@ -64,25 +64,23 @@
64
64
 
65
65
 
66
66
 
67
- リダイレクトはブラウザのリクエスト先を変更するための強力な手法ですが、リダイレクトを何も考えずに行うと、リクエストが無駄に発生してしまうためにサーバ負荷とユーザビリティ(レスポンス速度)の面で良い結果を生まない...
67
+ > リダイレクトはブラウザのリクエスト先を変更するための強力な手法が、リダイレクトを何も考えずに行うと、リクエストが無駄に発生してしまうためにサーバ負荷とユーザビリティ(レスポンス速度)の面で良い結果を生まない...
68
68
 
69
+ >
69
70
 
71
+ > そこでリダイレクトを行わずにリダイレクト先の結果を返してあげればリダイレクトを行った時と同じような結果を得られるのではないか?と思い実際に試してみる。
70
72
 
71
- そこでリダイレクトを行わずにリダイレクト先の結果を返してあげればリダイレクトを行った時と同じような結果を得られるのではないか?と思い実際に試してみる。
73
+ >
72
74
 
75
+ > その時は出力結果を変えるという手法をとり、routerに登録した関数を切り替えることはせずに、出力するHTMLを切り替えることで実現。(つまりコメントアウトの3番目)
73
76
 
77
+ >
74
78
 
75
- 時は上記は別の手法をとりまして、routerに登録した関数切り替えることはせずに、出力するHTMLを切り替えること実現(つまりコメントアウト3番目)
79
+ > しかし、こ方法だと繊維先ジで必要としている処理実行することはできない具体的には`/login`方に記述された`this.hoge = 1`は実行されない...
76
80
 
81
+ >
77
82
 
78
-
79
- しかし、この方法では、繊維先のページで必要としている処理を実行することはできません。具体的には`/login`の方に記述された`this.hoge = 1`は実行されない...
80
-
81
-
82
-
83
- `this.jump()`のようなメソッドがあれば実現できるのに...
83
+ > `this.jump()`のようなメソッドがあれば実現できるのに...
84
-
85
-
86
84
 
87
85
 
88
86
 

2

文章が未完成だったので修正島sチア。

2016/11/18 06:39

投稿

hojo
hojo

スコア195

test CHANGED
File without changes
test CHANGED
@@ -24,11 +24,13 @@
24
24
 
25
25
  router.get('/', function*(){
26
26
 
27
- // this.redirect('/login') // リダイレクトならうまくいくが使いたくない
27
+ // this.redirect('/login') // 1.リダイレクトならうまくいくが使いたくない
28
28
 
29
- // this.url = '/login' // これは期待した動作はしてくれない
29
+ // this.url = '/login' // 2.これは期待した動作はしてくれない
30
30
 
31
- // this.body = 'this is login page.' // これは期待した動作に近いが出力結果が同じだけで切り替わったわけではない
31
+ // this.body = 'this is login page.' // 3.これは期待した動作に近いが出力結果が同じだけで切り替わったわけではない
32
+
33
+ this.jump('/login') // このようなことができれば嬉しいのだが...
32
34
 
33
35
  })
34
36
 
@@ -58,20 +60,38 @@
58
60
 
59
61
 
60
62
 
61
- 何故このようなことがしたいか、というを念のためしておきます。
63
+ 何故このようなことがしたいか、という経緯を念のため記載しておきます。
62
64
 
63
65
 
64
66
 
65
- リダイレクトはブラウザのリクエスト先を変更するための強力な手法ですが、リダイレクトを何も考えずに行うと、リクエストが無駄に発生してしまうためにサーバ負荷とユーザビリティ(レスポンス速度)の面で良い結果を生まないと思っています。
67
+ リダイレクトはブラウザのリクエスト先を変更するための強力な手法ですが、リダイレクトを何も考えずに行うと、リクエストが無駄に発生してしまうためにサーバ負荷とユーザビリティ(レスポンス速度)の面で良い結果を生まない...
66
68
 
67
69
 
68
70
 
69
- そこでリダイレクトを行わずにリダイレクト先の結果を返してあげればリダイレクトを行った時と同じような結果を得られるのではないか?と思い実際に試してみました
71
+ そこでリダイレクトを行わずにリダイレクト先の結果を返してあげればリダイレクトを行った時と同じような結果を得られるのではないか?と思い実際に試してみ
70
72
 
71
73
 
72
74
 
73
- その時は上記のコードとは別の手法をとりまして、routerに登録した関数を切り替えることはせずに、出力するHTMLを切り替えることで実現しました。(つまり上記ードに例えるならば`router.get('/', function*(){ ...})`末尾に`this.body = 'this is login page.'`を書いて`/login`と同じHTMLを返すことであたかも異なるrouterが実行されたかのようにしたということです
75
+ その時は上記のコードとは別の手法をとりまして、routerに登録した関数を切り替えることはせずに、出力するHTMLを切り替えることで実現。(つまりコメントアウト3番目
74
76
 
75
77
 
76
78
 
77
- しかし、この方法では、繊維先のページで必要としている処理を実行することはできません。`/login`の方に記述された`this.hoge = 1`は実行されないのです。
79
+ しかし、この方法では、繊維先のページで必要としている処理を実行することはできません。具体的には`/login`の方に記述された`this.hoge = 1`は実行されない...
80
+
81
+
82
+
83
+ `this.jump()`のようなメソッドがあれば実現できるのに...
84
+
85
+
86
+
87
+
88
+
89
+ 経緯としては上記のような具合です。
90
+
91
+
92
+
93
+ また、リクエストがあったpathと表示結果が異なるため、リフレッシュをかけた時におかしなことになってしまうという問題が発生しそうですが、今はこの問題は気にしないでいただきたいです(histry.replaceStateでurl書き換えようと思っています。)
94
+
95
+
96
+
97
+ どうかよろしくお願いいたします。

1

タイトルがわかりにくいので省略しました。

2016/11/18 06:35

投稿

hojo
hojo

スコア195

test CHANGED
@@ -1 +1 @@
1
- koa-routerでリダイレクトせずにrouterに登録した他の関数に切り替えることはできますか?
1
+ koa-routerでリダイレクトせずにrouter切り替えることはできますか?
test CHANGED
File without changes