1. 程式人生 > >node.js 安裝 基礎知識 執行

node.js 安裝 基礎知識 執行

1..node.js安裝

①詳細見:http://www.runoob.com/nodejs/nodejs-install-setup.html

2.node.js 簡介 common.js require

(1)介紹

  • ①Node.js是在伺服器端跑的javaScript
  • ②Node.js 是一個基於 Chrome V8 引擎的 JavaScript 執行環境。 
  • ③Node.js 使用了一個事件驅動(如js中的onclick)、非阻塞式 I/O 的模型,使其輕量又高效。 
  • ④阻塞:  I/O時程序休眠,等待I/O完成後進行下一步(電腦程式大部分都是使用這個,慢)
  • ⑤非阻塞:  I/O時函式立即返回,程序不需要等待I/O完成(節約時間,快);
  • ⑥高併發:  同一時間段執行多種程式
  • ⑦,程序:  在計算機中的程式關於某資料集合上的一次執行活動,是系統進行資源分配和排程的基本單位
  • ⑧多程序:  啟動多個程序,多個程序可以一塊執行多個程式
  • ⑨執行緒:  程序內一個相對獨立的,可排程的執行單元,與同屬一個 程序的執行緒共享的資源
  • ⑩多執行緒:啟動一個程序,在一個程序內啟動多個執行緒,這樣,多個執行緒也可以一塊執行多個任務

(2)commonjs(nodejs規則)

  • ①每個檔案是一個模組,有自己的作用域(函式)
  • ②在模組內部module變數代表模組本身(每個模組一個檔案)
  • ③module.exports屬性代表模組對外介面(輸出)

(3)require 規則(當載入一個模組時,模組裡的所有語句都會被執行當你不想exports輸出,就寫在function或私密的環境中和js一樣)

  • ①/表示絕對路徑,./表示相對於當前檔案的
  • ②支援js,json,node等字尾名,當不寫字尾名時依次嘗試
  • ③不寫路徑則認為是nodejs自己帶build-in模組或者各級node_modules內的第三方模組(npm安裝)
  • ④特性:a、module被載入的時候執行,之後第二次用就在快取中讀取

    b、一旦出現某個模組被迴圈載入(for example 模組a中引用模組b,同樣模組b中引用模組a),就只輸出已經執行的部分,還未執行的部分不會輸出

3.node.js  執行規則,輸出等(node.js安裝目錄D:\nodejs,fileName目錄D:\nodejs\nodejs)

①第一個程式

 

②執行chrome

 

 4.基礎語法

(1)例項一

  ①01_cousmod.js(定義一個模組)

console.log("this is a module");

//定義一個變數
const testvar = 100;

function test(){
    //函式中引用變數
    console.log(testvar);
}

module.exports.testvar = testvar;  //輸出變數
module.exports.fun    = test(); //輸出函式

  ②03_require.js(呼叫模組)

//呼叫模組
const mod = require('./01_cousmod');
console.log(mod.testvar);
console.log(mod.fun());

  ③執行(在nodejs環境下執行 命令必須是node 後下檔名可用Tab填充)

  ④注意(//第二次執行模組,模組不會輸出 會直接在讀取快取)04_cache.js

require('./01_cousmod');
require('./01_cousmod');//第二次不會輸出 直接在讀取快取

(2)例項二  (建立兩個模組05_moda.js和 05_modb.js 還有一個引用模組05_main.js) (驗證模組的載入順序    複雜  )

  ①05_moda.js

module.exports.test = "A";   //執行模組後首要執行取名為 1

const modB = require('./05_modb');   // 執行到這又發現需要載入05_modb模組,於是就去載入 取名  2
console.log('moda: '+ modB.test)    //這時候輸出moda:BB   取名為 5

module.exports.test ="AA";

  ②05_modb.js

module.exports.test = "B";  //執行模組    取名3

const modA = require('./05_moda');  //執行到這發現又需要載入05_moda,而nodejs會預設載入05_moda已經載入的部分也就是2,然後繼續載入05_modb,   取名3
console.log('modb ',modA.test);  //modb:A  取名為 4
module.exports.test
='BB';

  ③05_main.js

const modA =require('./05_moda');  //輸出A
const modB =require('./05_modb');  //輸出BB

console.log(modA);     //輸出AA
console.log(modB);     //輸出BB

  ④執行輸出

5.內建模組 第三方模組引用

(1)自帶模組

   ①fs 內建模組    06_fs.js

const fs = require('fs');//引用內建模組
const result=fs.readFile('./06_fs.js',(err,data)=>{ //操作二進位制
    if(err){
        console.log(err);
    }else{
        console.log(data.toString());
    }
    
});//檔名,回撥(err,data)(回撥是非同步操作)

console.log(result);
//首先執行 再執行err,data等,這是一個非同步操作

  ② 執行輸出

(2)第三方模組 引入 載入 chalk(模組)

  ①映入 命令 npm install chalk(模組)

  ② 07_chalk.js

//第三方模組
const chalk = require('chalk')
console.log(chalk.green('我的這段文字是綠色的'));

  ③ 執行 管理

 

 

①②③④⑤⑥⑦⑧