1、如何全局安裝一個(gè) node 應(yīng)用?
使用命令:npm install -g app
其中 -g 代表global,即全局安裝。
2、package.json 有什么作用?
每個(gè)npm項(xiàng)目的根目錄下,都會(huì)有一個(gè)package.json文件。它包含了對(duì)這個(gè)項(xiàng)目的各種基本信息的描述,如項(xiàng)目名稱(必須)、版本號(hào)(必須)、項(xiàng)目描述(可選)、關(guān)鍵字(可選)、項(xiàng)目鏈接/地址(可選)等等,相當(dāng)于這個(gè)項(xiàng)目的基本說(shuō)明。
另外,它還包含了這個(gè)項(xiàng)目運(yùn)行所需的其它項(xiàng)目依賴(如有)。這樣一來(lái),用戶在搭建項(xiàng)目環(huán)境的過(guò)程中,npm install命令就會(huì)根據(jù)這個(gè)配置文件,自動(dòng)下載所需的項(xiàng)目依賴,也就是配置項(xiàng)目所需的運(yùn)行和開(kāi)發(fā)環(huán)境。
3、npm install --save app 與 npm install --save-dev app有什么區(qū)別?
npm install --save app是將項(xiàng)目運(yùn)行所需的依賴信息添加到package.json文件中。我們?cè)谝脛e人的項(xiàng)目前,npm會(huì)自動(dòng)下載它所需這些的依賴模塊,以保證項(xiàng)目能夠正常運(yùn)行。
npm install --save-dev app是將項(xiàng)目開(kāi)發(fā)過(guò)程中所需的依賴信息添加到package.json文件中。這些依賴模塊會(huì)在項(xiàng)目開(kāi)發(fā)過(guò)程中被調(diào)用,但項(xiàng)目實(shí)際運(yùn)行時(shí)是不必要的。
4、node_modules的查找路徑是怎樣的?
先從當(dāng)前目錄下開(kāi)始查找,如果找不到相應(yīng)的文件,則依次向上級(jí)目錄中查找,直到系統(tǒng)根目錄下,如果還是沒(méi)有找到,則會(huì)報(bào)錯(cuò)。
6、webpack 是什么?和其他同類型工具比有什么優(yōu)勢(shì)?
webpack 可以看作是一個(gè)“模塊打包機(jī)”。它所做的事情是:分析你的項(xiàng)目結(jié)構(gòu),找到JavaScript模塊以及其它的一些瀏覽器不能直接運(yùn)行的拓展語(yǔ)言(Scss,TypeScript等),并將其轉(zhuǎn)換和打包為合適的格式以供瀏覽器使用。
和其他同類型的工具相比,webpack 具有以下幾點(diǎn)優(yōu)勢(shì):
- 代碼拆分:webpack 有兩種組織模塊依賴的方式:同步和異步。異步依賴作為分割點(diǎn),形成一個(gè)新的塊。在優(yōu)化了依賴樹(shù)后,每一個(gè)異步區(qū)塊都作為一個(gè)文件被打包;
- Loader:webpack 本身只能處理原生的 JavaScript 模塊,但是 loader 轉(zhuǎn)換器可以將各種類型的資源轉(zhuǎn)換成 JavaScript 模塊。也就是說(shuō),任何資源都能夠成為 webpack 可以處理的模塊;
- 智能解析:webpack 有一個(gè)智能解析器,幾乎可以處理任何第三方庫(kù),無(wú)論它們的模塊形式是 CommonJS、 AMD 還是普通的 JS 文件;
- 插件系統(tǒng):webpack 擁有一個(gè)功能豐富的插件系統(tǒng),大多數(shù)內(nèi)容功能都是基于這個(gè)插件系統(tǒng)運(yùn)行的。另外我們還可以開(kāi)發(fā)和使用開(kāi)源的 webpack 插件,來(lái)滿足各式各樣的需求;
- 快速運(yùn)行:webpack 使用異步 I/O 和多級(jí)緩存提高運(yùn)行效率,極大地加快了它進(jìn)行增量編譯的速度。
7、npm script是什么?如何使用?
npm script是package.json文件中的一個(gè)可選字段,我們可以通過(guò)它來(lái)定義一些常用的腳本命令,然后在需要調(diào)用時(shí),通過(guò)npm+命令名稱來(lái)實(shí)現(xiàn),從而避免了重復(fù)鍵入一些較常用的命令。
在使用過(guò)程中需要注意的是:1.如果命令名稱不是npm內(nèi)置的字符,則需要使用npm run+命令名稱的方式來(lái)實(shí)現(xiàn);2.同一條命令下可以同時(shí)定義多項(xiàng)操作,這使得一些較為復(fù)雜的指令得以輕易地被實(shí)現(xiàn)。
8、使用 webpack 替換 入門-任務(wù)15 中模塊化使用的 requriejs。
代碼鏈接:https://github.com/Jeff12138/Task5
9、gulp是什么?使用 gulp 實(shí)現(xiàn)圖片壓縮、CSS 壓縮合并、JS 壓縮合并。
gulp是我們?cè)谇岸碎_(kāi)發(fā)過(guò)程中對(duì)代碼進(jìn)行自動(dòng)化構(gòu)建的一款工具。它能夠根據(jù)我們的需求自動(dòng)地完成 javascript/coffee/sass/less/html/image/css 等文件的的測(cè)試、檢查、合并、壓縮、格式化、瀏覽器自動(dòng)刷新、部署文件生成等命令,并監(jiān)聽(tīng)文件在改動(dòng)后重復(fù)指定的這些步驟。總而言之,在開(kāi)發(fā)過(guò)程中很多重復(fù)的任務(wù)都能夠通過(guò)gulp來(lái)使用正確的工具自動(dòng)完成,從而大大提高我們的工作效率。
var gulp = require('gulp');
//引入組件
var imagemin = require('gulp-imagemin'); //圖片壓縮
var minifycss = require('gulp-minify-css'); //CSS壓縮
var uglify = require('gulp-uglify'); //JS壓縮
var concat = require('gulp-concat'); //文件合并
//圖片壓縮
gulp.task('img',function(argument) {
gulp.src('src/imgs/*')
.pipe(imagemin())
.pipe(gulp.dest('dist/imgs'))
})
//CSS壓縮合并
gulp.task('css',function(argument) {
gulp.src('src/css/*.css')
.pipe(minifycss())
.pipie(concat('merge.min.css'))
.pipe(gulp.dest('dist/css/'))
})
//JS壓縮合并
gulp.task('js',function(argument) {
gulp.src('src/js/*.js')
.pipe(uglify())
.pipie(concat('merge.js'))
.pipe(gulp.dest('dist/js/'))
})