Tommy
優點
缺點
優點
缺點
nvm for windows
nvm install 10.0.0
nvm use 10.0.0
個人偏好使用 vs code
當然你要用記事本也是可以的啦
但Node.js沒有瀏覽器
所以你不能操作DOM和BOM
號稱地表最快的JavaScript引擎
交互式命令(類似開發人員工具的console介面)
C:\>node demo
var a = 100;
function run() {
console.log(this.a);
}
run();
ex: C:\>node demo
但是function內的this仍然還是global
所以this !== global 很合理
如果隨便加一個變數可以就掛載到全域其實還蠻可怕的!!!
new (function(exports, require, module, __filename, __dirname) {
//=====================
console.log(require);
console.log(this);
function run () {
console.log(this);
}
run();
//=====================
})({},function() {
// require
},{},"xxx","yyy");
C:\>node
> this === global
true
>
Node.js所提供的全域操作屬性和方法
瀏覽器沒有喔
載入模組(Node.js內建模組)
載入套件(從npm下載的套件)
載入自訂模組(自己寫的模組)
var fs = require("fs");
var data = fs.readFileSync("abc.txt");
console.log(data);
C:\>npm install colors
...安裝過程(略)
C:\>dir/w
[.] [..] [node_modules] package-lock.json
C:\>node
>var colors = require("colors");
undefined
>console.log("text".red);
text
undefined
>
專案設定檔
透過問答產生package.json
或是全部直接預設npm init -y
從npm 5.0開始會自動產生
module.exports 指向 exports
但require 看的是 module.exports
大部分的人都聽過"傳值參考"和"傳址參考"吧!
var a = {name: "John"};
var b = a;
b.name = "Mark";
console.log(a.name); //?
var a = {name: "John"};
var b = a;
b = null;
console.log(a); //?
var exports = {};
var module = {};
module.exports = exports;
exports = function() {
//...
}
console.log(module.exports); //?
打造一個純靜態檔案的網頁伺服器