一直想在服務器端使用一種語言,ruby、phthon和php也都學過,對於我來講使用這三種語言須要必定的上下文切換成本。正在我糾結的時 候,NodeJs出現了,並且我自信對Javascript仍是比較熟悉的,所以就準備學習一下NodeJs。這樣個人語言組合爲:C#、 Javascript和NodeJs,全是C Style,幾乎沒有切換成本。php
網上關於NodeJs的論述不少,此處很少說。我的認爲,NodeJs的編程思想和客戶端Javascript保持了一種理念,沒有什麼變化,只是增長了「require()」函數,所以只要學好require函數,剩下的問題就是如何更好的使用API了。html
require(路徑.擴展名):node
若是 路徑.擴展名 存在編程
執行加載 並 返回json
不然api
拋出異常ruby
require(路徑):服務器
若是 路徑.js 存在函數
執行加載 並 返回post
若是 路徑.node 存在
執行加載 並 返回
若是 路徑/package.json 存在
執行加載(package.json 中 main屬性對應的路徑) 並 返回
若是 路徑/index.js 存在
執行加載 並 返回
若是 路徑/index.node 存在
執行加載 並 返回
拋出異常
require(模塊名字):
若是 模塊名字是系統模塊
執行加載 並 返回
若是 require(./node_modules/模塊名字) 能加載到模塊 //參考require(路徑)的介紹
執行加載 並 返回
若是 require(../node_modules/模塊名字) 能加載到模塊 //參考require(路徑)的介紹
執行加載 並 返回
沿着目錄向上逐級執行require(上級目錄/node_modules/模塊名字),若是能加載到模塊 //參考require(路徑)的介紹
執行加載 並 返回
拋出異常
文件結果
require_study.js中的代碼
1 require('module_1_1.js'); 2 require('module_1_2'); 3 require('../node_modules/module_2_1.js'); 4 require('../node_modules/module_2_2'); 5 require('../package_2_1'); 6 require('package_3_1'); 7 require('./node_modules/package_3_2'); 8 require('module_3_1'); 9 require('/node_study/level1/level2/level3/node_modules/module_3_1'); 10 require('module_3_2'); 11 require('/node_study/level1/level2/level3/package_3_3'); 12 require('./package_3_4'); 13 require('./module_3_3'); 14 require('same_name_module'); 15 require('same_name_package'); 16 require('same_name_module_and_package');
輸出結果
1 module_1_1.js 2 module_1_2.js 3 module_2_1.js 4 module_2_2.js 5 package_2_1 6 package_3_1 7 package_3_2 8 module_3_1.js 9 module_3_2.js 10 package_3_3 11 package_3_4 12 module_3_3.js 13 same_name_module.js in leaf 14 same_name_package in leaf 15 same_name_module_and_package.js in leaf module
代碼下載:http://yunpan.cn/QWIiPxdZdW8RG
剛接觸NodeJs,尚未深刻學習其API,包括我對require的理解,也不必定正確,歡迎批評和指正。關於require(模塊名字),應該有一個全局查找路徑,今晚我再查查資料。
這篇文章說的更詳細,早知官方有文章,我就不寫了,文章地址:http://nodejs.org/api/modules.html。