react学習ノート二----nodejsサーバー構築及び異常処理
2378 ワード
受けの部分
react学習ノート一-----react先端フレームの初歩的な構築
説明今回の学習ノートはreactと関係がないかもしれませんが、完全な練習をするためには、サーバーが必要です。 この練習で採用したnodejs+mysqlはサーバーとデータベースとして、なぜphp、javaを採用しないですか?ハハ、面倒くさいです。 環境の説明
1、mac os(10.13.6(17 G 65))2、mysq 5.7、nodejs+express 4
nodejs+express 4環境構築
これは詳しい手順を書かなくてもいいですよね?ネット上の教程は山ほどあって、同じくとても簡単です。
新規プロジェクト
nodejs環境構築自体は比較的簡単なので、環境構築に重点を置かない。
nodejs異常によるサービス崩壊の問題
説明:
Nodejsの最大のハイライトは、イベント駆動にあり、I/Oモデルをブロックしないことで、Nodejsは強力な同時処理能力を持ち、ネットワークアプリケーションの作成に非常に適しています。NodejsのほとんどのI/O動作は非同期であり、つまりI/Oを扱う作業結果は基本的にコールバック関数で処理する必要があります。
処理モードネット上にはいろんな方法があります。domain、es 6、clusterなどがあります。 説明:domainは使用を勧めません。メンテナンスを放棄したようです。 私はclusterを採用しています。もし使う上で問題があったり、書いたりしたら、ご指摘ください。 以上の処理方式を使用して、nodejsは異常を取得できないためにサービスがキャンセルされることはありません。 切替:やはりtry…catchを覚えてください。 githubアドレス
https://github.com/522011796/nodeApi
react学習ノート一-----react先端フレームの初歩的な構築
説明
1、mac os(10.13.6(17 G 65))2、mysq 5.7、nodejs+express 4
nodejs+express 4環境構築
これは詳しい手順を書かなくてもいいですよね?ネット上の教程は山ほどあって、同じくとても簡単です。
新規プロジェクト
ejs , ,
express -e ejs nodeApi
環境構築の取り組みnodejs環境構築自体は比較的簡単なので、環境構築に重点を置かない。
nodejs異常によるサービス崩壊の問題
説明:
Nodejsの最大のハイライトは、イベント駆動にあり、I/Oモデルをブロックしないことで、Nodejsは強力な同時処理能力を持ち、ネットワークアプリケーションの作成に非常に適しています。NodejsのほとんどのI/O動作は非同期であり、つまりI/Oを扱う作業結果は基本的にコールバック関数で処理する必要があります。
, ,
router.get('/', function(req, res, next) {
run();
});
function async_error() {
setTimeout(function(){
throw new Error("Error");
},10)
}
function run() {
try {
async_error();
} catch (err) {
console.log(err);
}
}
上のdemoはasyncにあります。errot関数では、非同期のために異常を捉えることができません。直接nodejsサービスを切ってしまうことになります。もちろんtry...catchを使って捕獲してもいいですが、これはあまりにも面倒で複雑です。処理モード
: :bin\www
// try catch app.use(errorhandler) ,
// nodejs , try catch ,
// uncaughtException i/o ,
// , ,
// cluster
// cluster
// (The cluster module allows you to easily create a network of processes that all share server ports),
// socket,
// accept connection , ,cluster
var cluster = require('cluster');
var numCPUs = require('os').cpus().length;
if (cluster.isMaster) {
//
for (var i = 0; i < numCPUs * 2; i++){
cluster.fork();
}
// ,
cluster.on('exit', function(worker, code, signal) {
console.log('worker ' + worker.process.pid + ' died and start a new worker ');
cluster.fork();
});
}else{
server.listen(port);
}
締めくくりをつけるhttps://github.com/522011796/nodeApi