タイプ判定から始めるJavaScript では変数の型チェックが非常に面倒です。単純に 以下に簡単な例をいくつか挙げます。 console.log(typeof null) // 'オブジェクト' console.log(typeof new Array) // 'オブジェクト' console.log(typeof new String) // 'オブジェクト' その後、 const getTypeString = obj => Object.prototype.toString.call(obj) getTypeString(null) // '[オブジェクト Null]' getTypeString('string') //'[オブジェクト文字列]' getTypeString(新しい文字列) //'[オブジェクト文字列]' 定数 getTypeString = obj => { Object.prototype.toString.call(obj) を返します。 } 定数isType = 型 => { 戻り値: getTypeString(obj) === `[オブジェクト ${type}]` を返します } } const isArray = isType('Array') // このメソッドは通常 Array.isArray に置き換えられます const isNull = isType('Null') 定数isObject = isType('オブジェクト') 定数isRegExp = isType('RegExp') const isFunction = isType('関数') const isAsyncFunction = isType('AsyncFunction') isNull(null) // 真 isObject({}) // 真 isRegExp(/\w/) // 真 isFunction(() => {}) // 真 isAsyncFunction(async () => {}) // 真 しかし、Node.js には、変数の型を決定するための API セットが実際に存在します。そして、非常に豊富な機能を持っています。基本的な型の判定に加え、Promiseオブジェクト、Dateオブジェクト、各種ArrayBuffersの判定もサポートしています。 const 型 = require('util/types') types.isDate(新しい日付) // true types.isPromise(新しいPromise(() => {})) // true types.isArrayBuffer(新しいArrayBuffer(16)) // 真 厳格な平等JavaScript では、オブジェクト、配列、その他の変数の等価性を判断するときに const util = require('util') const val1 = { 名前: 'shenfq' } const val2 = { 名前: 'shenfq' } console.log('val1 === val2', val1 === val2) // false console.log('isDeepStrictEqual', util.isDeepStrictEqual(val1, val2)) // true このメソッドは、配列が厳密に等しいかどうかを判断するためにも使用できます。 const util = require('util') 定数arr1 = [1, 3, 5] 定数arr2 = [1, 3, 5] console.log('arr1 === arr2', arr1 === arr2) // false console.log('isDeepStrictEqual', util.isDeepStrictEqual(arr1, arr2)) // 真 エラーファーストと約束初期の Node API はすべて // 以下はファイルの読み取り例です。const fs = require('fs') fs.readFile('nginx.log', (エラー、データ) => { if (エラー) { // ファイルの読み取りに失敗しました console.error(error) 戻る } // ファイルを正常に読み取り、結果を出力します console.log(data) }) Node 8 がリリースされると、 定数 fs = require('fs') const util = require('util') const readFile = util.promisify(fs.readFile) ファイルの読み取り('./2021-11-11.log'、{エンコーディング: 'utf-8' }) .then(テキスト => console.log(テキスト)) .catch(エラー => console.error(エラー)) しかし、その後、多くの人が、これらのネイティブ API が Promise をサポートする方法は面倒すぎると感じ、各 API を個別の const fs = require('fs').promises fs.readFile('./2021-11-11.log', { エンコーディング: 'utf-8' }) .then(テキスト => console.log(テキスト)) .catch(エラー => console.error(エラー)) 注: Node 14 以降では、パッケージ名を変更してインポートするという、 const fs = require('fs/promises') fs.readFile('./2021-11-11.log', { エンコーディング: 'utf-8' }) .then(テキスト => console.log(テキスト)) .catch(エラー => console.error(エラー)) 次に、 const fs = require('fs/promises') const util = require('util') const readFile = util.callbackify(fs.readFile) readFile('./2021-11-12.log', { エンコーディング: 'utf-8' }, (エラー、テキスト) => { if (エラー) { コンソール.エラー(エラー) 戻る } console.log(テキスト) }) デバッグと出力Node サービスを開発している場合は、コンソールでより明確なデバッグ情報を確認できる const デバッグ = require('デバッグ') 定数ログ = デバッグ('app') const ユーザー = { 名前: 'shenfq' } log('現在のユーザー: %o', ユーザー) 実際、 const デバッグ = require('デバッグ') 定数ログ = デバッグ('app') const ユーザー = { 名前: 'shenfq' } log('現在のユーザー: %o', ユーザー) 起動時に 上記のコードをよく見ると、 const { format } = require('util') コンソール.log( format('現在のユーザー: %o', { 名前: 'shenfq'、年齢: 25 }) )
JavaScript のオブジェクトは非常に複雑です。 const { 検査 } = require('util') 定数ユーザー = { 年齢: 25歳 名前: 'shenfq', 仕事: 名前: 'コーディング', 勤続年数: 5 } } console.log(検査(ユーザー)) どうやら、 もちろん、上記は設定の一部にすぎません。より詳細な設定については、ノードのドキュメントを参照してください。以下にいくつか例を挙げてみましょう。 すべてのプロパティは改行内に表示されます。 検査(ユーザー、{ コンパクト: false }) オブジェクトの最初のレベルの値のみをフォーマットします。 検査(ユーザー、{ 深さ: 0, コンパクト: false }) キー値のエンコードに従って逆順に出力します。 検査(ユーザー、{ コンパクト: false、 ソート済み: (a, b) => a < b ? 1 : -1 }) 上記は、node.js の Util モジュールのチュートリアル例の詳細内容です。node.js の Util モジュールの詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
>>: ページを更新せずにフォームを送信するには iframe を使用します
目次導入ステップ1ステップ2: アイデアで動的Webプロジェクトを作成するステップ3: Tomcat...
インデックスとは何ですか?なぜインデックスを作成するのですか?インデックスは、列に特定の値を持つ行を...
導入MySQL は、私たちが日常業務で使用する非常に一般的なデータベースです。MySQL は現在 O...
mysqlはブール型を返します最初のケースでは、直接戻ります select id='22a...
1. CSS その他のアイコンアイコンを作成するには 3 つの方法があります。写真css (小さな矢...
今日の午後からVS2019をMySQLで使えるのではないかと思い、いろいろ環境構築を始めました。プロ...
目次1. Bootstrap グリッドレイアウト2. 垂直方向の配置2.1 行タグの垂直方向の配置を...
目次1. 観察可能2. 高階関数3. エクスプレスボックスモデル3.1. エクスプレスボックスモデル...
今日、問題が発生しました。ブラウザのアドレスバーにURLアドレスを入力する際、ページを正常にアクセス...
目次1. はじめに2. オンデマンド属性モード3. 乱雑な遅延読み込み属性パターン4. クラスの唯一...
操作前に必ずお読みください:注意:管理に rancher を使用する場合は、k8s クラスターが構築...
目次導入1. 事例の概要2. 環境の展開3. Nginxホストのインストール4. Tomcatのイン...
目次意味構造例カスタムショートカットキー元に戻すとやり直し録音と再生マクロ要約する意味リクエストをオ...
必要な環境をインストールする1. gccのインストールnginx をインストールするには、公式サイト...
目次1. docker-maven-pluginの紹介2. 環境とソフトウェアの準備3. デモ例3....