Node.js初心者ノート


Node.js概要
node.jsはChrome v 8エンジン上に構築されたjavascript実行環境です.
nodeとChromeは同じイベント駆動の非同期アーキテクチャです.Chromeはイベントのインタラクションに基づいているが、nodeはイベントに基づくI/Oである.
nodeにはHTML、Webkit、グラフィックカードドライバなどのUI技術サポートがありません.
運転使用nodejs
コンソールで現在のフォルダに入ることを実現します.node+ファイル名を車に戻して実行します.
ファイルのインポート
現在のフォルダの下にindex.jsと2.js.jsに変数aが含まれている場合(let a=1)
//2.js
let a=1
global.b=ouyang; //   global   ,node    global  window

//index.js
const obj=require("./2.js"); //require     module.exports   
console.log(obj.a); //  2.js  a    
console.log(global.b); //ouyang        
nodeは実行する時コードを再びコンパイルして、コンパイルする時コードを文字列に包んで1つの関数の中に入れてコンパイルして、だから直接大域のvarあるいはlet声明の変数で大域を通じて(通って)直接呼び出せません!
モジュール
//02.js
module.exports=function(){
    console.log("666")
};  //   
module.exports=123123123; //     
// module.exports.num=123;  //         

//index.js
const obj=require("./2.js");  //    ./                 ,           
console.log(obj); //123123123
リダイレクト
//2.js
exports=module.exports
exprots.fn=function(){
    
};   // exports    ,       fn,  index.js require  ;
nodeはすべての抽象を事件にしました.node実行時、同期同期の違いは以下の通りです.
//   
process.nextTick(()=>{ 
    console.log("1")    //2
})
process.nextTick(()=>{
    console.log("2")    //3
})
//  
setImmediate(()=>{
    console.log("3")    //6
    process.nextTick(()=>{
        console.log("4")//8
    }
})
setImmediate(()=>{
    console.log("5")    //7
})
setTimeout(function(){
    console.log("8")    //5
},0)
//  
process.nextTick(()=>{
    console.log("7")    //4
})
console.log("6")        //1
node出力結果6 1 2 7 8 5
イベントキュー、自動整列
node実行初期に無限ループwhile(true){1.scipt(全コード)を実行します.同期同期同期が発生しました.2.scriptを実行した後、micro-taskのキューの中のイベントを全部実行します.3.macro-taskのキューの中の第二層scriptを再実行して、第二層のmicro-taskの4を生成します.続いてmicro-taskの中で新たに発生したイベントキューを最背面層のmacro-taskコードに作成しました.
node原生モジュール
イベントモジュールevents
const events=require("events"); //           “.EventEmitter”   events        , new    

const eventEmitter=require("events").EventEmitter;
const myEmitter=new EventEmitter();

//       
setTimeout(()=>{
    //       
},2000);

myEmitter.on("someEvents",()=>{
    console.log("             ")
}
パスモジュール
const path=require('path')
console.log(path.join("a","b"))//       a/b

console.log(__dirname); //       
console.log(__filename); //      ,     
console.log(path.resolve(__dirname,"test"); //        

console.log(path.parse(__filename));  //            

/*
{
    root:'/',
    dir:'',
    base:'',
    name:''
}
*/
URLモジュール
const {URL} = require("url"); //    .URL,   node       
const myUrl=new URL("https://www.baidu.com");
console.log(myUrl); //     url        json  

//search:''      
//URLsearchParams:''        map   

//   parse   
const myUrl2=url.parse("https://www.baidu.com");
ファイル操作
const js = require('fs')

fs.readFile('  ',(err,data)=>{
    if(err) threw err;
    console.log(data);
}); // Sync        ,   Sync       ,    err         ;
//      ,err  json  ,  null,    ,  ,      

//   data    buffer  ,         (    ),   data         , UTF-8
1/非同期読出しconst js=require(‘fs’)
const fn=async()=>{
      
    const data =await new Promise((resolve,reject)=>{
        fs.readFile("./1.txt","utf8",(err,data)=>{
            if(err) return reject(err)
            resolve(data)
        }
    }
    console.log(data); //   
}
2
// 
const js = require('fs');
const data="fengyu";
fs.writeFile("./2.txt",data,'utf8',err=>{
    if(err) throw err;
    console.log("    ");
}) //utf8       
サーバのインスタンスを作成
const http=require('http')
const fs=require('fs')
const server=http.createServer((req,res)=>{
    res.writeHead(200,{
    "Content-Type:"text/plain;charset=utf-8"
    "}); //   ,text/plain     ,charset      
    res.write("        "); //    ,   
    res.end()l//    
}); //req requeset, res response
//     ^C,    ,      npm    nodemon
server.listen(3000); //    1024  




//    

if(req.method==="GET"){
    res.writeHead(200,{"Content-Type":"text/html;charset=utf-8"})
    switch(req.url){
        case "/":
        res.write(fs.redFileSync("index.html","utf8"));
        
        
    }
    
}
...
const http=require('http')
const server=http.createServer((req,res)=>{
    const obj={
        a:1,
        b:2
    }
    res.write(JSON.stringfy(obj)
})
server.listen(3000,()=>{
    console.log("      localhost:3000")
})