チュートリアル(等特性、低知識、NPMの使用、明示足場を、nodejs)のNode.js

免責事項:この記事はブロガーオリジナル記事ですが、許可ブロガーなく再生してはなりません。https://blog.csdn.net/a5252145/article/details/85294895

チュートリアル(等特性、低知識、NPMの使用、明示足場を、nodejs)のNode.js

ディレクトリ

  1. 第1章はじめ、三つの特徴(長所と短所)
  2. 章ウェアハウス・プロジェクトファイル作成したプロファイルは、文字列の解析(シリアライズ)とデシリアライズだけでなく、いくつかの小さな知識
  3. 第III章NPMの使用
  4. 第IV章特急足場

まず、基本的な事柄第一章

要約:

nodejsは、サーバーのオペレーティング環境JS GoogleのV8エンジンの開発に基づいています。


1.可以解析js代码,还没有一些安全级别的限制
2.提供了一些系统级别的API
	文件的读写
	进程的管理
	网络通信

三つの特徴:

図1に示すように、シングルスレッド:

サーバー側の言語のJava、PHPや.NETなどでは、各クライアント接続のための新しいスレッドを作成します。そして、各スレッドは、メモリの2メガバイトほどかかります。これは、理論的には、8GBのサーバーは、同時に最大ユーザー数は約4,000で接続することができています。Webアプリケーションは、より多くのユーザーをサポートするためにしてみましょう、私たちは、当然のことながら、上昇中のWebアプリケーションをサーバ、およびハードウェアのコストの数を増やす必要があります。

Node.jsのは、新しいスレッドが、唯一つのスレッドを作成するために、各クライアントに接続されていません。ユーザが接続されている場合、マクロプログラムのNode.jsも平行するように、それは、非ブロッキングI / O、イベント駆動型機構を介して、内部イベントをトリガします。Node.jsの、40,000人以上の同時ユーザー接続を処理できる8GBのメモリサーバを使用してください。また、シングルスレッドだけでなく、オペレーティングシステムの利点は、もはや完全にスレッドの作成、破壊時のオーバーヘッドはありません。害がユーザスレッドの崩壊によって引き起こされ、全体のサービスは、他の人が崩壊した、崩壊しました。

マルチスレッド、シングルスレッドの比較:

シングルスレッドでも、マクロの「同時性」を引き起こす可能性があり、見ることができます。

2、非ブロックI / O、ノンブロッキングI / O:

例えば、取得したデータがデータベースにアクセスするとき、それはいくつかの時間がかかります。伝統的なシングルスレッド処理機構では、データベースにアクセスするためのコードを実装した後、全体のスレッドが一時停止し、背後にあるコードを実行するために結果を返すためにデータベースを待ちます。換言すれば、I / O大幅プログラムの実装の効率を低下させるコードの実行を阻止します。

Node.jsの非ブロッキングI / O機構の後に採用されているので、データベースへのコードのアクセスが直ちにコードの後ろに、実行されているので代わりに実行され、データベースがそれによって向上、コールバック関数に処理コードの結果を返しますプログラムの効率。

I / Oが終了すると、フォームは、このイベントの実行I / O操作とスレッドコールバック関数のイベント通知スレッドになります。非同期Iを処理するために/ O、スレッドはイベントループを持っている必要があり、常にチェック順番に対処すべき保留中のイベントは、存在しません。

ブロッキングモード、スレッドは、マルチスレッドにする必要があり、スループットを向上させるために、一つのタスクを扱うことができます。非ブロッキングモードでは、スレッドは常に計算操作を実行する、スレッドCPUコア使用率は常に100%です。だから、これは特に哲学的なソリューションです。その人たちが、アイドル多くの人々を、あなたの人生は、人を好き働く子どもを殺していません。

2、イベント駆動型イベント駆動型:

ノードでは、クライアントの要求は、データと他の行為を提出し、接続を確立するために、対応するイベントがトリガされます。ノードでは、一瞬で、あなただけのコールバックイベントを実行することができますが、イベントのコールバック関数は、あなたが、(例えば、別の新しいユーザーが接続されている)他のイベントに回すことができる途中で実行してから、元のイベントを継続して戻ります「イベントループ」機構として知られているコールバック関数は、この処理機構。

Node.jsのは、基礎となるC ++(V8はC ++で書かれている)です。コードを根底に、半分近くのイベントキューは、コールバックキューを構築しています。悪魔を考えているタスクを完了するためにイベントドリブンスケジューリングサーバ。スレッドに、先端の上で踊って、タスクの多くに対処するためのミッションを取ります。

总结:

  1. シングルスレッド、シングルスレッド、低減メモリオーバーヘッド、オペレーティング・システム、メモリ・ページングの利点。一つのことは、入力した場合は、しかし、I / Oがブロックされたので、このスレッドがブロックされています。
  2. ノンブロッキングI / Oを、Shadeng I / O文は終了しますが、続く文を実行しますありません。非ブロッキングはまだ問題を解決することができるのだろうか?例えば、赤、ビジネス、実装プロセスの実装は、この時点では剛のI / O完了コールバックは、どのように行うには?
  3. イベントメカニズム、イベントループは、新しいユーザの要求、または古いユーザーI / O完了するかどうか、イベントに参加するすべての方法は、スケジュールされるのを待って、イベントループになります。
  4. 3つの機能は、実際には、誰を残すために、彼らがプレイするまで有効にしないではない、機能であると述べました。けちレストラン経営者のようなNode.jsのは、単に多くの人々にサービスを提供、ウェイターを雇います。その結果、効率は多くの参加者よりも高くなっています。Node.jsのすべてのI / Oは非同期コールバック、コールバック関数のセットです。

第二に、第II章プロジェクト

倉庫の作成プロセス

  1. 環境NPM
    NPMのinit -y
  2. githubのサイトには、何かを示して
    新しいファイルを作成README.md
  3. .gitignoreファイルは無視何かを表し

文字列シリアライゼーション:()解析
)querystring.stringify({ "": "暁"、クール:[ 'NiHao'、 'ハロー']、フォーム名}の
終了を解析した後:

'name=xiaoming&cour=nihao&cour=hello&form='

&コネクタとしてデフォルト。
例えば:

 querystring.stringify({name:"xiaoming",cour:['nihao','hello'],form:""},',')

変換後:

'name=xiaoming,cour=nihao,cour=hello,form='

:必要に応じて接続すれば、その後、追加します。

デシリアライズ

querystring.parse('name=xiaoming,cour=nihao,cour=hello,form=')

逆シリアル化の後に後:

{ name: 'xiaoming,cour=nihao,cour=hello,form=' }

特に面白いが、絵の画像

第三に、第III章NPMの使用

npm安装模块

【npm install xxx】利用 npm 安装xxx模块到当前命令行所在目录;
【npm install -g xxx】利用npm安装全局模块xxx;

本地安装时将模块写入package.json中:

【npm install xxx】安装但不写入package.json;
【npm install xxx --save】 安装并写入package.json的"dependencies"中;
【npm install xxx --save-dev】安装并写入package.json的"devDependencies"中。

npm 删除模块

【npm uninstall xxx】删除xxx模块;
【npm uninstall -g xxx】删除全局模块xxx;

四、足場の使用を表現

インストール

  1. グローバルエクスプレスジェネレータ搭載足場
    エクスプレスジェネレータ-gをインストールcnpm

  2. そしてVUE-cliの足場は、あなたが簡単なコマンドを使用してプロジェクトを作成することができ、うまく表現しています。
    まず、適切なディレクトリに移動し、次のコードcmdを実行(デモプロジェクト名は、他人に置き換えることができます)

    express demo
    

    この時点では、新しいディレクトリのフォルダのデモ以上のものを見ることができます

  3. ステップ3:インストール頼る
    デモフォルダにCDのデモを
    インストールcnpm

  4. NPMの実行開始プロジェクトを開始
    成功URLのノード./bin/wwwを表示されます:HTTP:// localhostを:3000 /

bin:项目核心文件夹,内部有一个www文件,用于创建express实例(修改端口在这里);
node_modules:模块文件夹,本项目用到的全部依赖都在里面,相当于一个个的插件(自动生成,不用修改);
public:静态资源文件夹,主要存放css、html、js和图片等(基本不用);
routes:路由文件夹,放路由逻辑,这是我们核心部分;
views:视图文件夹,主要是一些视图文件(基本不用);
app.js:入口文件,相当于vue和react下的main.js,这也是我们的核心部分(和www文件类似,一个是逻辑入口,一个是物理入口,只不过www文件我们一般不用改,而app.js则是经常变动);
package.json:项目文件,存放项目信息;

bin/www文件主要是创建并启动http服务,一般来说我们是不用修改代码的。但是如果端口冲突无法正常启动,那就需要来稍微修改一下了。该项目的默认端口是3000,如果冲突,直接在第15行修改成其他端口就可以了

app.js下:

// 引入路由
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');

// 配置路由
app.use('/', indexRouter);
app.use('/users', usersRouter);

app.js可以理解成入口文件,里面主要是加载创建express实例,然后配置路由(其实还有更重要的拦截器、也可以叫过滤器,后面再说.

配置路由那两句话表示:

我的路径是http:localhost:3000/,那么我使用indexRouter路由;
如果我的路径是http:localhost:3000/users,那么我使用usesRouter路由

index.js

/* indexRouter路由具体API*/
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});

routes/index.js是路由的具体实现,这个文件最终导出一个express.router实例,这里面的代码意思是说,在当前路由下,如果路径是“/”,那么返回index视图。其中req为请求,res为响应,通过req可以拿到请求参数和请求头等信息,通过res可以执行响应。
在本系统下,基本不会用到视图,上面的res.render()一般改成res.send()。如routes/user.js

res.send('index', { title: 'Express' });

、app.jsで、新しいルーティングAPIを作成し、インポートルート、ルーティングを設定し、test.jsでルートを作成するには

//app.js下
// 引入路由
var testRouter = require('./routes/test');
// 配置路由
app.use('/test', testRouter);


//test.js下
var express = require('express');
var router = express.Router();

router.get('/', function(req, res, next) {
  res.send("你好,我是测试!");
});
module.exports = router;

このようなブラウザは、httpを開くには:// localhostを:3000 /テストは、あなたがリターン見ることができる「こんにちは、私はテストしていましたの!」
私はあなたを伝えるために申し訳ありませんが、特急・ジェネレータは、ホットロードをサポートしていない、あなたはそれを再起動する必要があります。

熱負荷モジュール取付nodemon

ステップ1:nodemonをインストールします。

cnpm install nodemon --save-dev

プラス-save-devのか-saveが、プロジェクト設計文書でプロジェクトの状況に依存することができます良い習慣、タイムシェアのプロジェクトはpackage.json提供します。

ステップ2:設定nodemon

スクリプトノードのプロジェクトでそれを独自のコマンドを追加する方法?実際には、あなたはそれにpackage.jsonにスクリプトを変更することは非常に簡単な必要があります(他の足場で同じ、普遍的である)、私たちは、次のコマンドを追加します。

"dev": "nodemon ./bin/www"
"scripts": {
    "start": "node ./bin/www",
    "dev": "nodemon ./bin/www"
  },

今回の実行NPMはDEVコンソール入力NPMの実行に気づくとDEVに開始run'll

だから、私たちのページは意志とコード同期、および手動で起動するたびにサーバーをシャットダウンする必要はありません。

プロジェクト、参照のブログを開発する方法:

https://www.jianshu.com/p/ebef9ffb7851

おすすめ

転載: blog.csdn.net/a5252145/article/details/85294895