6 回答

TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個(gè)贊
命令npm install可以安裝package.json的依賴(lài)
npm install --save 可以安裝新的依賴(lài)

TA貢獻(xiàn)2019條經(jīng)驗(yàn) 獲得超9個(gè)贊
Nodejs
1.安裝nodejs
從nodejs官網(wǎng)下載最新版本的node,設(shè)置環(huán)境變量這樣就可以在cmd下直接用命令行操作npm
環(huán)境變量:path d:/nodejs
查看本機(jī)node及npm版本
2.從官網(wǎng)上直接拷一個(gè)小腳本:
nodeExample.js
可以通過(guò)控制臺(tái)直接運(yùn)行
打開(kāi)瀏覽器輸入http://127.0.0.1:3000/,頁(yè)面上出現(xiàn)Hello World
如果將Hello World改成Hello NodeJs,刷新瀏覽器發(fā)現(xiàn)頁(yè)面還是沒(méi)變,此時(shí)要再次在控制臺(tái)再次運(yùn)行該js文件,Ctrl+C結(jié)束上次活動(dòng)
3.關(guān)于node的npm
nodejs的npm就像java里的maven,是跟著nodejs一起安裝的包管理工具,沒(méi)有它就相當(dāng)于一切都沒(méi)有
npm的官方鏡像網(wǎng)站是 https://www.npmjs.com/
node包管理器是一個(gè)命令行實(shí)用程序,它可以讓你查找、安裝、刪除、發(fā)布以及做與node封裝模塊相關(guān)的很多事情
注:npm install命令沒(méi)有指定任何模塊,這是因?yàn)閚pm在默認(rèn)情況下會(huì)查找一個(gè)package.json文件,當(dāng)你需要額外的模塊式,將那些模塊添加進(jìn)依賴(lài)指令中,然后再次運(yùn)行npm install。依賴(lài)指令在package.json文件的dependencies里。
4.關(guān)于package.json
當(dāng)我們通過(guò)npm install下載相應(yīng)的插件時(shí),項(xiàng)目中就會(huì)自動(dòng)出現(xiàn)node_modules文件夾,如npm install gulp,我們就可以看到node_modules文件下的gulp文件夾的目錄結(jié)構(gòu)
注意以下這里的package.json,它是一個(gè)nodejs和npm都會(huì)自動(dòng)讀取的配置文件,它里面是個(gè)標(biāo)準(zhǔn)的JSON格式字符串。
如果我們?cè)谕獠縥s文件中直接require('slib'),nodejs會(huì)自動(dòng):
1)看它內(nèi)置模塊中是否有,如果有就優(yōu)先加載內(nèi)置模塊
2)如果沒(méi)有就看是否是“路徑級(jí)”的引用
3)以上都不是就會(huì)在node_modules尋找同名文件夾。首先會(huì)默認(rèn)尋找index.js,如果沒(méi)有則會(huì)查看是否在package.json中做了main定義
內(nèi)置模塊如require('http'),路徑級(jí)如require('./xxx.js'),注意這里的./代表的是當(dāng)前js文件所在的目錄,.js可寫(xiě)可不寫(xiě),在下載gulp時(shí)由于包跟包之間有引用,因此會(huì)下載其他一些插件。
我們也可以在node_modules里自定義插件,如在node_modules里新建一個(gè)文件夾,里面的js文件一定要定義成index.js,這樣當(dāng)我們引用這個(gè)js文件時(shí),node會(huì)自動(dòng)加載這個(gè)文件下的index.js
5.自定義插件
如果我們想在node_modules下自定義一個(gè)插件,被外部文件引用,而不通過(guò)index.js自動(dòng)加載的方式,那么該怎么定義呢
1)在node_modules下新建一個(gè)文件,examplejs,包括aaa.js和package.json
packeage.json只有一行:
{"main":"aaa.js"}
這里的main是指入口,注意:如果這里的aaa.js被命名為index.js,那么我們就不需要package.json了,node會(huì)自動(dòng)加載每個(gè)插件下的index.js文件
2)在項(xiàng)目中新建一個(gè)showName.js文件,引用上面的examplejs
var getlib=require('examplejs');getlib.showName();
3)執(zhí)行程序:
將它加入到html中
1)新建index.html,將js引進(jìn)來(lái)
2)啟動(dòng)瀏覽器,報(bào)錯(cuò)
瀏覽器不識(shí)別require,也就是說(shuō)目前網(wǎng)頁(yè)還不支持require這種寫(xiě)法
既然要通過(guò)require('examplejs')的方式獲取getlib,那么打印一下getlib,在showName.js里添加一行:console.log(getlib);查看結(jié)果:
得到的getlib就是一個(gè)對(duì)象
修改showName.js
var getlib=require('examplejs');for(var a in getlib){console.log(a+":"+getlib[a]);}
執(zhí)行結(jié)果:
showName.js已經(jīng)將getlib里的變量和函數(shù)都抽離出來(lái)了,這時(shí)候index.html就可以引用該js了

TA貢獻(xiàn)1934條經(jīng)驗(yàn) 獲得超2個(gè)贊
安裝requirejs
requirejs官方提供了一個(gè)可用于node的適配器 r.js
。有兩種方法可以在項(xiàng)目里面加入此庫(kù)。
1. npm
在具體項(xiàng)目目錄下使用如下命令來(lái)引入requirejs:
npm install requirejs
windows環(huán)境下安裝需要注意不要加上 -g
全局開(kāi)關(guān),否則不能正常安裝。
安裝完成后,可使用 require('requirejs')
來(lái)加載requirejs。
2. 下載r.js
如果不想使用npm,也可以直接下載r.js,并把它放到項(xiàng)目中達(dá)到同樣的目的。
點(diǎn)擊下載。
在項(xiàng)目中通過(guò) require('/path/to/r.js')
來(lái)加載requirejs。
配置
配置requirejs
var requirejs=require('requirejs');
requirejs.config({
//把node自身的require方法傳遞給requirejs
nodeRequire: require
});
requirejs(["foo","bar"],function(foo,bar){});
在需要使用requirejs的地方可以用上面的代碼來(lái)配置requirejs。首先加載requirejs模塊,命名為 requirejs
(可以為其他命名)。然后對(duì) requirejs
進(jìn)行配置。配置的方法和參數(shù)可以參照瀏覽器版本的requirejs的 配置說(shuō)明
。不過(guò)有一點(diǎn)不同,如代碼所示,我們需要把node的 require
方法引進(jìn)來(lái)。最后一行是簡(jiǎn)單地加載模塊的示例,requirejs會(huì)嘗試把 foo
和 bar
兩個(gè)模塊當(dāng)成AMD模塊來(lái)加載,如果失敗,則會(huì)調(diào)用node的 requie
方法來(lái)把它們當(dāng)作commonjs模塊加載。為了實(shí)現(xiàn)這樣的適應(yīng)性,所以我們需要配置node的 require
方法。但實(shí)際測(cè)試并不盡如人意,保險(xiǎn)起見(jiàn),還是對(duì)AMD模塊使用 requirejs
加載,對(duì)commonjs模塊使用 require
加載。
構(gòu)造AMD格式的node模塊
在node中定義的模塊是commonjs模塊,如果想要構(gòu)造AMD模塊,我們需要 amdefine
這個(gè)包。
安裝amdefine
同樣,可以使用npm進(jìn)行安裝,在項(xiàng)目目錄下執(zhí)行:
npm install amdefine
在windows下也存在無(wú)法全局安裝的問(wèn)題,需要對(duì)項(xiàng)目單獨(dú)安裝。
定義define方法
if(typeof define !== 'function'){
var define=require('amdefine')(module);
}
amdefine提供了包裝AMD模塊的 define
方法。不過(guò)上面代碼中對(duì)于node中是否包含define方法的檢測(cè)判斷請(qǐng)保留,最好原封不動(dòng)地將這幾行拷貝到自己的項(xiàng)目中。這樣,我們就可以像使用前端requirejs一樣,定義和使用AMD模塊。
將node自己的common模塊轉(zhuǎn)換為AMD模塊
原本想通過(guò)引用`amdefine`包來(lái)實(shí)現(xiàn)node端AMD模塊的定義,不過(guò)requirejs本身定義了`define`方法,不必額外引入其他包。
- 6 回答
- 0 關(guān)注
- 617 瀏覽
添加回答
舉報(bào)