nodejs モジュール + __dirname + 他の人が書いたアクセス サーバー メソッド

目次

__dirname とはどういう意味ですか?

1. システムモジュール: 最下層が付属しており、直接使用できます。

1.fs モジュールはファイル操作用です。

01. ファイルを読み取る fs.readFile()

02. ファイルの書き込み(ファイルの作成) fs.writeFile()

 03.fs.mkdir() はフォルダーを作成します

2.パスモジュール

1.パス.ディレクトリ名(パス)

01. 受信パスのパスはフォルダーで終わります

02. 入力パスのパスはファイルで終わります

2.パス.ベース名(パス);

01. 受信パスのパスはフォルダーで終わります

02. 入力パスのパスはファイルで終わります

3.httpモジュール

1. http モジュールを導入し、サーバー http.createServer() を作成します。

2. リスニングサーバー

 3.サーバーポートの設定

4.res.end() データ型は文字列またはバッファです

5. クライアントへの応答で文字化けしたコンテンツを回避する

 5.req.url ルーティング (ポート番号以降の部分がルーティング: req.url)

6. ブラウザのアドレスバーに入力したアドレスが異なり、要求元サーバーから要求したページが異なりますが、どのように記載すればよいですか?

6. ローカルに作成したサーバーにアクセスするにはどうすればよいですか?

2. サードパーティ モジュール: 他の人が作成したものであれば、直接使用できます。+ npm関連の命令

1.md5暗号化モジュールをダウンロードする必要があります

3. カスタムモジュール: 自分で書いた

4. サーバーを自分で作成することに加えて、他の人が作成したサーバーを使用することもできます: Apach、Nginx


Nodejs モジュールは主に、システム モジュール、サードパーティ モジュール、カスタム モジュールの 3 つのカテゴリに分類されます。

__dirname とはどういう意味ですか?

保存されるのは文字列、 つまり現在の js ファイルが配置されているディレクトリ (アドレス、文字列) です。

1. システムモジュール: 最下層が付属しており、直接使用できます。

1.fs モジュールはファイル操作用です。

01. ファイルを読み取る fs.readFile()

これは非同期です。

let fs = require('fs');
fs.readFile('./index.html',{encoding:'utf-8'},(err,data)=>{
    if(!err){
        console.log(data);
    }
});

分析: {encoding:'utf-8'} このパラメータは省略可能で、文字エンコーディングを意味します。 

02. ファイルの書き込み(ファイルの作成) fs.writeFile()

これは非同期です。

fs.writeFile(path,data,callback(err))ファイルが存在する場合は、このメソッドで書き込まれた内容で古いファイルの内容が上書きされ、ファイルが存在しない場合は、新しいファイルが作成されます。

注:以前のパラメータを上書きしたくない場合は、fs.writeFile の省略された 3 番目のパラメータを使用する必要があります。

let fs = require('fs');
fs.writeFile('./a.txt','你好啊',{flag:'a'},(err)=>{
    if (!err) {
        console.log(666);
    }
});

分析: パラメータ {flag:'a'} の意味は、前のパラメータを上書きするのではなく、前のパラメータの直後に書き込むことです。

例: 前の a.txt ファイルの内容は次のとおりです: Huahua は美しい女の子です。今:フワワは美しい女の子です。こんにちは。

 03.fs.mkdir() はフォルダーを作成します

これは非同期です。

注: 一度に作成できるフォルダーは 1 つだけです。複数のフォルダーを同時に作成するとエラーが発生します。

// 导入fs模块
let fs = require('fs');
fs.mkdir('./public/css',(err)=>{
    if(!err){
        console.log(666);
    }else{
        console.log('出错了');
    }
});

//出错了,一次性创建了两个文件夹 ./public/css   (public和css都没创建过)
// 导入fs模块
let fs = require('fs');
fs.mkdir('./public',(err)=>{
    if(!err){
        console.log('创建成功',666);
    }else{
        console.log('出错了');
    }
});
//创建成功 666

注:複数のディレクトリを一度に作成する場合は、fs.mkdir の省略された 2 番目のパラメーター {recursive:true} を使用します。

// 导入fs模块
let fs = require('fs');
fs.mkdir('./upload/hh',{recursive:true},(err)=>{
    if(!err){
        console.log('创建成功',666);
    }else{
        console.log('出错了');
    }
});
//创建成功 666

分析: fs.mkdir によって省略された 2 番目のパラメーター {recursive:true} により、複数のディレクトリを一度に作成できます。

04. fs.copyFileSync (コピーするファイル、新しいファイルパスにコピー); 

コピーするファイル: フロントエンドからバックエンドに送信されるファイル、およびフロントエンド コンピューターに保存されているファイル

バックエンド受信: clientData =  ctx.request.filesにする

新しいファイル パス (新しいファイルの名前を含む) にコピーします。

 let newimgpath = path.dirname(__dirname)+`/public/upload/${path.basename(clientData[0].filepath)}`
fs.copyFileSync(clientData[0].filepath,newimgpath);

2.パスモジュール

1.パス.ディレクトリ名(パス)

01. 受信パスのパスはフォルダーで終わります

区切り文字が \ の場合、現在のディスクが返されます (ほとんど意味がありません)

let path = require('path');
console.log(path.dirname('F:\A_class\node'));  //F:

 区切り文字が / の場合は、戻ります

//js文件中
let path = require('path');
console.log(path.dirname('F:/A_class/node'));  //F:/A_class

 分析: フォルダーで終わる、 path.dirname は、現在の js ファイルが配置されているフォルダーの前のフォルダーへのパスを返します。

例: この js ファイルが配置されているフォルダーはノード フォルダーであり、ノード フォルダーの前のフォルダーは A_class です。

F: /A_クラス

02. 入力パスのパスはファイルで終わります

let path = require('path');
console.log(path.dirname('F:/A_class/node/fs.js'));  //F:\A_class\node

分析:返される結果は、現在のファイルが存在するフォルダーのパスです。 

2.パス.ベース名(パス);

01. 受信パスのパスはフォルダーで終わります

let path = require('path');
console.log(path.basename('F:/A_class/node'));  //node

分析:取得されるのは最後のフォルダー名です。

02. 入力パスのパスはファイルで終わります

let path = require('path');
console.log(path.basename('F:/A_class/node/fs.js'));  //fs.js

分析:取得されるのは最後のファイル名です。 

3.httpモジュール

1. http モジュールを導入し、サーバー http.createServer() を作成します。

//引入http模块
let http = require('http');
//创建自己的服务器 (返回的是一个对象)
let server = http.createServer();

2. リスニングサーバー

//监听服务器 (对象调on方法)
server.on('request',(req,res)=>{      //req-->request:请求   res-->response:响应
    res.end('响应给客户端的内容');
})

分析: クライアントはリクエストを開始するとすぐに (req, res) => { } 関数を呼び出し、res.end() を通じてデータをクライアントに応答します。

 3.サーバーポートの設定

注:同じコンピュータ上で複数のサーバーを起動できますが、各サーバーのポート番号は同じであってはなりません

//设置服务器端口,如果服务器启动,执行回调函数(该函数可省略)
server.listen(8080,()=>{
    console.log('服务器启动成功。。。');
});
//总的模板就是这样
let http = require('http');
let server = http.createServer();
server.on('request',(req,res)=>{    
    res.end('响应给客户端的内容');
})
server.listen(8080,()=>{
    console.log('服务器启动成功。。。');
});

4.res.end() データ型は文字列またはバッファです

クライアントが文字列形式で受信したい場合。JSON.stringify():を使用して、オブジェクトを JSON タイプの文字列に変換できます。

        res.end(JSON.stringify({
            code: 1,
            data: '登录成功'
        }))

5. クライアントへの応答で文字化けしたコンテンツを回避する

01. クライアントに応答するデータが JSON 型文字列の場合、中国語の文字化けを回避するには:

res.writeHead(200, {'Content-Type': 'application/json'});

 02. クライアントに応答するデータが html ファイルの場合、中国語の文字化けを回避するには:

res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'});

 5.req.url ルーティング (ポート番号以降の部分がルーティング: req.url)

6. ブラウザのアドレスバーに入力したアドレスが異なり、要求元サーバーから要求したページが異なりますが、どのように記載すればよいですか?

req.url == で設定されたルートを使用して、ユーザーがリクエストしたいページ、つまりクライアントに返されるページを決定します。

server.on('request', (req, res) => {
    if (req.url == '/') {
        res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'});
        fs.readFile('./index.html', (err, data) => {
            if (!err) {
                res.end(data);
            }
        });
    } else if (req.url == '/login') {
        res.writeHead(200, {'Content-Type': 'application/json'});
        res.end(JSON.stringify({
            code: 1,
            data: '登录成功'
        }));
    }else{
        res.end('111');
    }
})

6. ローカルに作成したサーバーにアクセスするにはどうすればよいですか?

注: 127.0.0.1/localhost: local01.http
://127.0.0.1:8080

02.http://localhost:8080

03.http://192.168.12.158:8080 

合計コードは次のとおりです。

let fs = require('fs');
let http = require('http');
let server = http.createServer();
server.on('request', (req, res) => {
    if (req.url == '/') {
        res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'});
        fs.readFile('./index.html', (err, data) => {
            if (!err) {
                res.end(data);
            }
        });
    } else if (req.url == '/login') {
        res.writeHead(200, {'Content-Type': 'application/json'});
        res.end(JSON.stringify({
            code: 1,
            data: '登录成功'
        }));
    }else{
        res.end('111');
    }
})
server.listen(8080, () => {
    console.log('服务器启动成功。。。');
});

2. サードパーティ モジュール: 他の人が作成したものであれば、直接使用できます。+ npm関連の命令

1.md5暗号化モジュールをダウンロードする必要があります

npm:node パッケージ マネージャーは ノード パッケージ マネージャー  とも呼ばれます

npm init --> プロジェクトを初期化すると、構成ファイルが生成されます: package.json

npm install md5 --save または npm i md5 download md5 モジュール

特定のバージョンをダウンロードしたい場合:

npm install md5@バージョン番号 --save

npm uninstall module: モジュールをアンインストールします

npm undate module: モジュールを更新する

let md5 = require('md5');
console.log(md5('message')); //传什么就对什么进行加密

3. カスタムモジュール: 自分で書いた

輸出:

let info = {
    stuname:'花花',
    age:20,
    sayname(){
        return this.stuname;
    }
}
module.exports = info;

輸入: 

let info = require('./md5.js');
console.log(info);          //{ stuname: '花花', age: 20, sayname: [Function: sayname] }
console.log(info.sayname());//花花

4. サーバーを自分で作成することに加えて、他の人が作成したサーバーを使用することもできます: Apach、Nginx

 

両方のサーバーのデフォルトのポート番号は 80 です。 

知らせ:

http プロトコル: デフォルトのポート番号は 80 です。

https プロトコル: デフォルトのポート番号は 443 です。

デフォルトのポート番号が使用されている場合、ブラウザはポート番号を適切に解析するときに自動的にポート番号を省略します。

上記 2 つのサーバーのいずれかを起動した後、次の操作を行います。

 WWW 下の他のフォルダーにアクセスすることもできます。

おすすめ

転載: blog.csdn.net/weixin_47075145/article/details/126590110