react-redux-express非同期前後端データインタラクション(初心者向け、上級者は入らない)
3744 ワード
非常に小さな問題を解決するのに丸3日かかりましたお菓子の体験を記録したいです.まず問題の提出:フロントエンドがreactであれば、バックエンドがexpressであり、どのようにデータのインタラクションを行うか.
以前は
だから
現在得る比較的よい方法は、フロントエンドajaxによって要求が発行され、バックエンドが要求を受信処理し、対応するデータが戻る(ここではサーバレンダリングについては説明しない).ここでの
次に、非常に簡単な例を切り口として、
ajaxをすべて
次のコードはサーバからリストを取得する.その中の
POSTの方法はGETと大同小異であるが、serverがコードを書くときは
具体的なコードは以下の通りである:POST方法は比較的複雑である.
これらのコードはすべて公式サイトのAsyncのコードによって変更された.だからredux、公式サイトのドキュメントと例を本当にマスターするには熟読しなければなりません...
デバッグについて私は何も共有する価値がありません(私も比較的に便利なデバッグ方法TATを探して、ひざまずいて推薦を求めます!!)、しかし、ここ数日、「肉眼debug」の考え方をまとめたのは、データがどのように流れ、どこから要求に合わなくなるかを見ることだ.前に書いた時に
个人的には「前后端を通じる」(少なくとも理解しましょう)という感じで、
△初めて文章を書きましたが、私は白です.何か悪いことがあったら、ありがとうございます.
1.全体的な考え方
以前は
express
に触れたときにフロントエンドテンプレートがejs
であったが、そのときは少し理解できない点があった.最も理解できないいくつかの問題は、フロントエンドとバックエンドがどのように協力しているのかということです.特に先端が複雑な場合は、やはりテンプレートを全部使うのでしょうか.フロントエンドにフレームを使ったら?これらの問題は大部分の開発者あるいは非初級学習者にとって問題ではないが、初心者にとって、これらの概念とデータの流れの方式を完全に知ることができなければ、学ぶと少し「心虚」になる.だから
express
とreact
に接触した後、私は両者がどのようにデータのインタラクションを行うのかを強く知りたいと思っています.私が欲しい技術スタックはreact-redux-webpack-express
です.Googleとgithubで長い間探しても適切なものが見つからず、最後に発見されましたが、実は公式サイトのそれはすでに最高の例Asyncです.現在得る比較的よい方法は、フロントエンドajaxによって要求が発行され、バックエンドが要求を受信処理し、対応するデータが戻る(ここではサーバレンダリングについては説明しない).ここでの
ajax
はjqを導入すると重く見えるので、公式サイトの方法でisomorphic-fetch
を使いますredux
が導入するので、ajax
をどこに書くかが問題となる.google
になってみると、action
に書いたほうがいいと思っているので(公式サイトでもそうしています)、そのままやりましょう.(公式サイトについて間違いありません)次に、非常に簡単な例を切り口として、
input
とbutton
があり、input
に入力、ボタンをクリックし、input
のコンテンツをサーバにアップロードする(POST
).同時に以下に、サーバからデータを取得するreact
でレンダリングするリストがある(GET
).とても簡単です.2.GET方法
ajaxをすべて
action
に書き、非同期action
は中間部品を使用する必要がある.ミドルウェアに関する最高の文章はこれだと思います.applyMiddleware
の実現原理と例を話しています(実はロシアの子供のように、元のdispatch
を徐々に強化しています.例えば、logger
にログを加えてbug
を探すことができます).ここではthunk
というミドルウェアを使います(実現原理は簡潔で、自分で探すことができます).次のコードはサーバからリストを取得する.その中の
fetch
の用法はここを見ることができて、ここでもpromise
の対象を使って非同期事件を処理して、これはチェン一峰大神のこの文章を見ることができます.export const fetchList = () => {
return dispatch => {
dispatch({ type:"REQUEST_LIST" })
return fetch(`/list`, {
header: {
"dataType": "json"
}
})
.then(response => {
return response.json()
})
.then(json => {
dispatch(receiveList(json.items))
}
)
}
}
3.POST方法
POSTの方法はGETと大同小異であるが、serverがコードを書くときは
body-parser
を使う、そうでないとundefinedになる可能性がある、書き方はこうである.具体的なコードは以下の通りである:POST方法は比較的複雑である.
export const postAddItem = (text) => {
return dispatch => {
dispatch({type: "loadAddItem", text})
fetch('/send', {
method: 'POST',
headers: {
'Content-Type': "application/json",
'Accept': "application/json",
'Content-Type': "application/json"
},
body: JSON.stringify({ item: text })
}).then(res => {
if(res.ok) {
dispatch({ type: "ADD_ITEM", text })
console.log("POST SUCCESS");
}
}, e => {
dispatch({type: "loadAddItem", text})
alert("POST ERROR");
})
}
}
これらのコードはすべて公式サイトのAsyncのコードによって変更された.だからredux、公式サイトのドキュメントと例を本当にマスターするには熟読しなければなりません...
4.デバッグについて
デバッグについて私は何も共有する価値がありません(私も比較的に便利なデバッグ方法TATを探して、ひざまずいて推薦を求めます!!)、しかし、ここ数日、「肉眼debug」の考え方をまとめたのは、データがどのように流れ、どこから要求に合わなくなるかを見ることだ.前に書いた時に
connect
だったところから問題があり、結局なぜレンダリングできないのか分からなかった...logger
でデータを取得したのを見たのに...5.まとめ
个人的には「前后端を通じる」(少なくとも理解しましょう)という感じで、
redux
、基本概念、非同期、ミドルウェア(公式サイト全体の内容が豊富で、多く読む)を真剣に理解しなければなりません.でも基礎も大切!最も基本的なes6
、ajax
などは必ず...自分で書いた粗い例コードはここにあります△初めて文章を書きましたが、私は白です.何か悪いことがあったら、ありがとうございます.