Nodejs
1.安裝nodejs
從nodejs官網下載最新版本的node,設置環境變量這樣就可以在cmd下直接用命令行操作npm
環境變量:path d:/nodejs
查看本機node及npm版本

2.從官網上直接拷一個小腳本:
nodeExample.js
const http = require('http'); const hostname = '127.0.0.1'; const port = 3000; const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello World\n'); }); server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); });
可以通過控制台直接運行:


打開瀏覽器輸入http://127.0.0.1:3000/,頁面上出現Hello World
如果將Hello World改成Hello NodeJs,刷新瀏覽器發現頁面還是沒變,此時要再次在控制台再次運行該js文件,Ctrl+C結束上次活動
3.關於node的npm
nodejs的npm就像java里的maven,是跟着nodejs一起安裝的包管理工具,沒有它就相當於一切都沒有
npm的官方鏡像網站是 https://www.npmjs.com/
node包管理器是一個命令行實用程序,它可以讓你查找、安裝、刪除、發布以及做與node封裝模塊相關的很多事情,這里列出一些常用的命令行選項:
version 該命令可以查看Node npm V8等一系列的版本 npm version
search 在存儲庫中查找模塊包 npm search express
install 使用在存儲庫或本地位置上的一個package.json文件來安裝包 npm install express
install -g 在全局可訪問的位置安裝一個包 npm install express -g
remove 刪除一個模塊 npm remove express
pack 把在一個package.json文件中定義的模塊封裝成.tgz文件 npm pack
view 顯示模塊的詳細信息 npm view express
publish 把在一個package.json文件中定義的模塊發布到注冊表 npm publish
unpublish 取消發布你已發布的一個模塊 npm unpublish myModule
owner 允許你在存儲庫中添加、刪除包和列出包的所有者 npm add ownerName myModule /npm rm ownerName myModule / npm ls myModule
注意,npm install命令沒有指定任何模塊,這是因為npm在默認情況下會查找一個package.json文件,當你需要額外的模塊式,將那些模塊添加進依賴指令中,然后再次運行npm install。依賴指令在package.json文件的dependencies里。
4.關於package.json
當我們通過npm install下載相應的插件時,項目中就會自動出現node_modules文件夾,如npm install gulp,我們就可以看到node_modules文件下的gulp文件夾的目錄結構:

注意以下這里的package.json,它是一個nodejs和npm都會自動讀取的配置文件,它里面是個標准的JSON格式字符串。
如果我們在外部js文件中直接require('slib'),nodejs會自動:
1)看它內置模塊中是否有,如果有就優先加載內置模塊
2)如果沒有就看是否是“路徑級”的引用
3)以上都不是就會在node_modules尋找同名文件夾。首先會默認尋找index.js,如果沒有則會查看是否在package.json中做了main定義
內置模塊如require('http'),路徑級如require('./xxx.js'),注意這里的./代表的是當前js文件所在的目錄,.js可寫可不寫,在下載gulp時由於包跟包之間有引用,因此會下載其他一些插件。
我們也可以在node_modules里自定義插件,如在node_modules里新建一個文件夾,里面的js文件一定要定義成index.js,這樣當我們引用這個js文件時,node會自動加載這個文件下的index.js,舉個例子:

5.自定義插件
如果我們想在node_modules下自定義一個插件,被外部文件引用,而不通過index.js自動加載的方式,那么該怎么定義呢
1)在node_modules下新建一個文件,examplejs,包括aaa.js和package.json
packeage.json只有一行:
{ "main":"aaa.js" }
這里的main是指入口,注意:如果這里的aaa.js被命名為index.js,那么我們就不需要package.json了,node會自動加載每個插件下的index.js文件
2)在項目中新建一個showName.js文件,引用上面的examplejs
var getlib=require('examplejs'); getlib.showName();
3)執行程序:
那么如何將它加入到html中呢
1)新建index.html,將js引進來
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <script src="showName.js"></script> </body> </html>
2)啟動瀏覽器,報錯:
瀏覽器不識別require,也就是說目前網頁還不支持require這種寫法
既然要通過require('examplejs')的方式獲取getlib,那么打印一下getlib,在showName.js里添加一行:
console.log(getlib);
查看結果:
發現得到的getlib就是一個對象
修改showName.js
var getlib=require('examplejs'); for(var a in getlib){ console.log(a+":"+getlib[a]); }
執行結果:
可以發現,showName.js已經將getlib里的變量和函數都抽離出來了,這時候index.html就可以引用該js了