題目1:如何全局安裝一個 node 應用?
npm install -global webpack
題目2: package.json 有什么作用?
每個項目的根目錄下面,一般都有一個package.json文件,定義了這個項目所需要的各種模塊,以及項目的配置信息(比如名稱、版本、許可證等元數據)。npm install命令根據這個配置文件,自動下載所需的模塊,也就是配置項目所需的運行和開發環境。
下面是一個最簡單的package.json文件,只定義兩項元數據:項目名稱和項目版本。
{
"name" : "xxx",
"version" : "0.0.0",
}
package.json文件就是一個JSON對象,該對象的每一個成員就是當前項目的一項設置。比如name就是項目名稱,version是版本(遵守“大版本.次要版本.小版本”的格式)。
下面是一個更完整的package.json文件。
{
"name": "Hello World",
"version": "0.0.1",
"author": "張三",
"description": "第一個node.js程序",
"keywords":["node.js","javascript"],
"repository": {
"type": "git",
"url": "https://path/to/url"
},
"license":"MIT",
"engines": {"node": "0.10.x"},
"bugs":{"url":"http://path/to/bug","email":"bug@example.com"},
"contributors":[{"name":"李四","email":"lisi@example.com"}],
"scripts": {
"start": "node index.js"
},
"dependencies": {
"express": "latest",
"mongoose": "~3.8.3",
"handlebars-runtime": "~1.0.12",
"express3-handlebars": "~0.5.0",
"MD5": "~1.2.0"
},
"devDependencies": {
"bower": "~1.2.8",
"grunt": "~0.4.1",
"grunt-contrib-concat": "~0.3.0",
"grunt-contrib-jshint": "~0.7.2",
"grunt-contrib-uglify": "~0.2.7",
"grunt-contrib-clean": "~0.5.0",
"browserify": "2.36.1",
"grunt-browserify": "~1.3.0",
}
}
題目3: npm install --save app 與 npm install --save-dev app有什么區別?
- pm install 在安裝 npm 包時,有兩種方式把依賴包信息寫入 package.json 文件,一種是npm install --save,會把依賴包 dependencies,另一個是 npm install --save-dev,則寫進devDependencies
- --save-dev 是你開發時候依賴的東西,--save 是你發布之后還依賴的東西
題目4: node_modules的查找路徑是怎樣的?
從當前目錄開始逐級向上查找node_modules
題目5: npm3與 npm2相比有什么改進?yarn和 npm 相比有什么優勢? (選做題目)
npm3在安裝模塊時就按字母序安裝在node_modules的第一級目錄
當后續包有重復依賴時就不需要重新安裝
yarn是優化了的npm,速度更快。
題目6:webpack是什么?和其他同類型工具比有什么優勢?
WebPack可以看做是模塊打包機:它做的事情是,分析你的項目結構,找到JavaScript模塊以及其它的一些瀏覽器不能直接運行的拓展語言(Scss,TypeScript等),并將其打包為合適的格式以供瀏覽器使用。
-
WebPack和Grunt以及Gulp相比有什么特性
Grunt和Gulp的工作方式是:在一個配置文件中,指明對某些文件進行類似編譯,組合,壓縮等任務的具體步驟,這個工具之后可以自動替你完成這些任務。
Webpack的工作方式是:把你的項目當做一個整體,通過一個給定的主文件(如:index.js),Webpack將從這個文件開始找到你的項目的所有依賴文件,使用loaders處理它們,最后打包為一個瀏覽器可識別的JavaScript文件。
Webpack的處理速度更快更直接,能打包更多不同類型的文件。
題目7:npm script是什么?如何使用?
npm 允許在package.json文件里面,使用scripts字段定義腳本命令。
{
// ...
"scripts": {
"build": "node build.js"
}
}
上面代碼是package.json文件的一個片段,里面的scripts字段是一個對象。它的每一個屬性,對應一段腳本。比如,build命令對應的腳本是node build.js。
命令行下使用npm run命令,就可以執行這段腳本。
$ npm run build
等同于執行
$ node build.js
這些定義在package.json里面的腳本,就稱為 npm 腳本。它的優點很多。
項目的相關腳本,可以集中在一個地方。
不同項目的腳本命令,只要功能相同,就可以有同樣的對外接口。用戶不需要知道怎么測試你的項目,只要運行npm run test即可。
可以利用 npm 提供的很多輔助功能。
查看當前項目的所有 npm 腳本命令,可以使用不帶任何參數的npm run命令。
$ npm run
題目8:使用 webpack 替換 入門-任務15中模塊化使用的 requriejs
代碼
題目9:gulp是什么?使用 gulp 實現圖片壓縮、CSS 壓縮合并、JS 壓縮合并
- gulp是前端開發過程中對代碼進行構建的工具,是自動化項目的構建利器;她不僅能對網站資源進行優化,而且在開發過程中很多重復的任務能夠使用正確的工具自動完成;使用她,我們不僅可以很愉快的編寫代碼,而且大大提高我們的工作效率
- 壓縮
var gulp = require('gulp') //導入gulp
var cssnano = require('gulp-cssnano') //導入css壓縮包
var concat = require('gulp-concat') //導入文件合并包
var jsmin = require('gulp-uglify') //導入JS壓縮包
var imgmin = require('gulp-imagemin') //導入圖片壓縮包
gulp.task('build:img',function(){ //圖片壓縮任務
gulp.src('./images/*.jpg')
.pipe(imgmin())
.pipe(gulp.dest('./dist/img/'))
})
gulp.task('build:css',function(){ //css合并壓縮任務
gulp.src('./css/*.css')
.pipe(concat('all.css'))
.pipe(cssnano())
.pipe(gulp.dest('./dist/css/'))
})
gulp.task('build:js',function(){ //js合并壓縮任務
gulp.src('./js/**/*.js')
.pipe(concat('all.js'))
.pipe(jsmin())
.pipe(gulp.dest('./dist/js/'))
})
gulp.task('default',['build:img','build:css','build:js'])
題目10: 開發一個 node 命令行天氣應用用于查詢用戶當前所在城市的天氣,發布到 npm 上去。可以通過如下方式安裝使用(可使用api.jirengu.com里提供的查詢天氣接口) (選做題目)
npm install hunger-weather -g
weather