NodeJs基礎配置、核心概念與學習路線回顧

Nodejs把前端開發帶入一個全新的階段,他使得js能夠跑在服務端上,大大強化了js這門語言的可塑性。
OK,環境配置不提,配置好了以後,直接來跑一些簡單的demo

以前一直沒搞懂nodejs複雜的目錄(其實是不懂linux),老把文件目錄和運行時的目錄搞錯。

在gitbash下,先進入對應的目錄,例如我的js文件在 D:\node\nodejs下,那麼應該:

$ cd d:
$ cd node/nodejs

這樣就OK啦,如果想跟IDE進行配合也不是不行,步驟如下:
1.在node.exe同級下建立project,命名爲 nodejs :
這裏寫圖片描述
2.在IDE中添加新建項目,添加剛纔的文件夾路徑:
這裏寫圖片描述
歐~~尅!
接着,在IDE裏面新建幾個js文件,然後在我們的Node上面跑一跑(CreateServer那個DEMO就不做了)。
建立第一個文件:hello.js (null文件)
建立第二個文件:world.js(null文件)
兩個文件可以在同級目錄,也可以不在。

將下列代碼填入hello.js:

function hello(){
    console.log("hello")
}
exports.hello =hello();

打開gitBash,找到IDE中工程的目錄(最好把js文件放在工程目錄下即可,或者單獨建一個js文件夾):
然後輸入:$ node hello.js

這裏寫圖片描述

然後將下列代碼填入 world.js :

var world = require("./hello.js");
world.hello

運行之,得出下圖:

這裏寫圖片描述
可以看到,兩次的運行結果一樣。hello.js的運行結果爲hello不足爲奇,那麼world.js爲什麼也輸出hello呢?

這是因爲在hello.js中,打包出來一個公共模塊,exports.hello =function(){....}
而在world.js中,引入了這個模塊,並且賦值給變量world:

var world = require('./hello.js') /*引入【hello.js裏面打包的

模塊】*/

/*此時,world相當於擁有共有模塊的所有屬性和方法了,那麼此時,這個

world有一個方法爲hello,我們調用這個hello方法,world.hello ,自然

而然輸出hello*/


如果將hello.js改進一下,

var i=0 ; 
function hello(){
++i;
console.log("hello for " + i)
};

運行 node hello.js 輸出: //hello for 1

同時更改world.js:

var world = require('./hello.js')
var world1 = require('./hello.js')
world.hello
world1.hello

運行 $node world.js 輸出//hello for 1甭管運行幾次,都是這個結果

這說明,引入模塊時,只有第一次引入時會初始化模塊。

模塊的集合:包(package)
所謂的包,就是內部集成了好多模塊,主要使用一個入口文件作爲包的入口,該文件的導出對象作爲包的公有模塊:

   ---nodejs
|一   ----js
   |       -----main.js
   |       ------head.js
   |       ------body.js
   |       ------footer.js
|一   ------package.json

此時,main.js是包的入口和導出對象模塊,在main.js中,很有可能引入了head.js、body.js、footer.js的導出模塊,然後寫入一些功能和方法,最後導出一個公有方法,供其他的包或者模塊使用。

當模塊的文件名是index.js,加載模塊時可以使用模塊所在目錄的路徑代替模塊文件路徑,因此接着上例,以下兩條語句等價。

當引用包的入口文件時,require(‘./node/nodejs/main.js’)這樣給人感覺彷彿在引用一個模塊,而不是整個包。
解決方法是,將Main.js命名爲index.js,這樣,在引入包的入口文件時,直接填寫包入口文件的路徑:

var cat = require('./js/index.js');
var cat = require('/js');

//上面兩條語句等價

這樣處理後,就只需要把包目錄路徑傳遞給require函數,感覺上整個目錄被當作單個模塊使用,更有整體感。

也可以用json文件來聲明入口:

'main':'./main.js'

這樣,在引入包的入口文件時 require(‘./node/nodejs’)時,會優先查找json文件,並從中讀取入口配置,注意,此時的json一定要在引用的路徑之下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章