node.js 安裝 基礎知識 執行
阿新 • • 發佈:2018-12-06
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('我的這段文字是綠色的'));
③ 執行 管理
①②③④⑤⑥⑦⑧