NodeJs でよく使用される組み込みモジュール

目次

1. パスモジュール

2.fsモジュール

2.1. fs はファイルを同期的に読み取ります fs.readFileSync()

2.2. fs はファイルを非同期で読み取ります fs.readFile()

2.3. ファイル内容の非同期書き込み fs.writeFile()

3.HTTPモジュール

4. モジュール化

4.1. CommonJ のインポートとエクスポート

4.2. ES6のインポートとエクスポート

5. グローバルとこれを理解する

6. Sort() アプリケーション (配列のソート)

序文:

cmd ウィンドウを開き、node -vを使用してノードのバージョン (できれば 13 以降) を確認します。

cmd または統合ターミナルでプロジェクトを実行します:ノード xx.js

公式 Web サイトのドキュメント: https://nodejs.cn/api-v16/fs.html

1. パスモジュール

__dirnameは Node によって提供される特別な変数です。現在のファイルのパスを取得できます。

path.join() : 完全なパスを結合します

const path=require('path');//引入path模块,引入后才能使用对应的功能
console.log(__dirname);//__dirname是Node提供的特殊变量:可获取当前文件所在路径
//输出:C:\Users\hp\Desktop\node
let ret=path.join(__dirname,'hello.txt');//拼接出文件的完整路径(含文件名)
console.log(ret);
//输出:C:\Users\hp\Desktop\node\hello.txt
let ret2=path.join(__dirname,'modules','m1.js');//获取m1.js的路径
console.log(ret2);
//输出:C:\Users\hp\Desktop\node\modules\m1.js

2.fsモジュール

2.1. fs はファイルを同期的に読み取ります fs.readFileSync()

const fs=require('fs');//fs 文件操作系统
const path=require('path');
let filePath=path.join(__dirname,'hello.txt')
let content =fs.readFileSync(filePath,'utf8');//fs.readFileSync(文件路径)
// 输出:<Buffer e8 bf 99...>   Buffer是Node在内存暂存数据的方式,需要加‘utf8’转码/结果.toString()
// 转码后输出:这是一个文本文件(hello.txt的内容)
console.log(content);
console.log('END--------');

2.2. fs はファイルを非同期で読み取ります fs.readFile()

const fs=require('fs');//fs 文件操作系统
const path=require('path');
let filePath=path.join(__dirname,'hello.txt')
fs.readFile(filePath,'utf8',(err,data)=>{
    if(err){
        console.log("err错误",err);
        return
    }
    console.log("读取到的内容",data);//最后执行
    // 输出:读取到的内容 这是一个文本文件
})
console.log('END--------');//先执行

2.3. ファイル内容の非同期書き込み fs.writeFile()

// 元々存在しない場合は追加、存在する場合は修正します。

fs.writeFile(filePath,'コンテンツの変更','utf8',err=>{

    console.log("書き込みに成功しました!");// 操作が成功した後、ここでコードを実行します。

})

共有:

Sync: 同期 Async: 非同期

// 同期コード: 順番に実行されます

// 非同期コード:同期より遅い. 実行時は、順序に関係なく、速い方が最初に実行されます。

3.HTTPモジュール

これは、get、post などのバックエンド インターフェイスを作成するのと似ています。代わりに、より便利な Express バックエンド フレームワークを使用することもできます。

次のように: WEB サーバー プログラムを作成します。

const http=require('http');//1.引入http模块
// 2.定义一个端口号
const PORT=8081;
// 3.创建服务器对象,处理请求
// request:请求对象  response:响应对象
let server=http.createServer((request,response)=>{
    console.log("有请求过来了!");//在浏览器端访问localhost:8081  会执行这里
    response.setHeader('Content-Type','text/html;charset=utf-8');//设置响应头,防中文乱码
    response.write("hello 朋友们!");//给浏览器作出响应
    response.end();//结束本次响应
})
// 4.启动服务器,开启监听
server.listen(PORT,err=>{
    console.log(`服务器已经启动在了${PORT}端口上`);
    // 输出:服务器已经启动在了8081端口上
})

3.1. 中国語文字化け問題の解決

 response.setHeader('Content-Type','text/html;charset=utf-8') ;//中国語の文字化けを防ぐためのレスポンスヘッダーを設定します

3.2. リクエストパスに従ってコンテンツをブラウザに返す

const http=require('http');
const fs=require('fs');
const path=require('path');

const PORT=8081;
let server=http.createServer((request,response)=>{
    console.log("有请求过来了!",request.url);//首页的值为  /
    response.setHeader('Content-Type','text/html;charset=utf-8');
    if(request.url==='/'){  //http://localhost:8081
        let filePath=path.join(__dirname,'html',"index.html");
        let content=fs.readFileSync(filePath);
        response.write(content);
    }else if(request.url==='/list'){  //http://localhost:8081/list
        let filePath=path.join(__dirname,'html',"list.html");
        let content=fs.readFileSync(filePath);
        response.write(content);
    }else{
        response.write("404页面!");
    }
    response.end();
})
server.listen(PORT,err=>{
    console.log(`服务器已经启动在了${PORT}端口上`);
})

4. モジュール化

プロジェクトの下に新しいモジュールフォルダーを作成し、その中にエクスポートするモジュールファイルを書き込みます。

4.1. CommonJ のインポートとエクスポート

// データをエクスポートする (最初の構文)

輸出。a=a;

輸出。合計=合計;

輸出。Animal=動物。

// データをエクスポートする (2 番目の構文)

module.exports={a,sum,Animal};

インポート構文: const m1=require('./modules/m1') //モジュールをインポート 

4.2. ES6のインポートとエクスポート

ES6の最初のエクスポート構文(定義しながらエクスポート、複数可)

オンデマンドでインポート: 'xx.mjs' から {} をインポートします

// ES6 の 2 番目のエクスポート構文 (1 つだけありえます)

デフォルトをエクスポート{

    a、合計、動物

}

2 番目のインポートのタイプ: import m2 from './modules/m2.mjs'

知らせ:

Node が ES6 を使用してモジュールをインポートする場合、バージョンは 13,2+ である必要があります。

// サフィックス名を.mjsに変更する必要があります==>ノード xx.mjsを実行するだけです

5. グローバルとこれを理解する

グローバル: グローバルを通じて定義されたオブジェクトに直接アクセスできます。

this: 対話モード (cmd) では、this===global(true)

ノードインタープリターは、js コードを解釈するために使用されます (js はインタープリター言語です)。

ノード エンジンで js ファイルを解釈する場合、これはグローバル オブジェクトではなく、エクスポート オブジェクトを指します。

let a=10;
// console.log(window);//报错
// console.log(global);//全局对象global
// console.log(global.a);//undefined 全局下定义变量,并不会挂载到全局对象下
// global.b=20;
console.log(b);//20  通过global定义对象,可以直接访问
console.log(this===global);//false

// 了解this
console.log(this);//{}
exports.a=a;
console.log(this);//{a:10}
console.log(this===exports);//true

6. Sort() アプリケーション (配列のソート)

 arr.sort(fn)、パラメーター サイズの並べ替え関数を追加しない場合、このメソッドはデフォルトで最初の要素のみをランク付けします。たとえば、100 は 2 の前にランク付けされます。

    let arr = [100, 2, 4, 65, 3, 7, 8, 64];
    let brr = [{ name: '11', age: 19 }, { name: '22', age: 17 }, { name: '33', age: 21 }]
    console.log(arr.sort());//输出:[100, 2, 3, 4, 64, 65, 7, 8](只按第一位排序)
    function fn(a, b) {
        return a - b;//从小到大排序,反之也可
    }
    console.log(arr.sort(fn));//输出:[2, 3, 4, 7, 8, 64, 65, 100]
    function fn2(a, b) {
        return a.age - b.age;
    }
    console.log(brr.sort(fn2));//将数组里的每个对象排序

おすすめ

転載: blog.csdn.net/qq_44930306/article/details/130016743