1.如何全局安裝一個 node 應用?
npm install -g kuma-weather
2.package.json 有什么作用?
- npm init 會在當前目錄下生成package.json的文件
- package.json用于配置模塊包的基本信息、依賴管理、使用方式、可執行文件地址、主程序入口等。
"main": "index.js"
main字段指定了加載的入口文件,require('moduleName')就會加載這個文件。這個字段的默認值是模塊根目錄下面的index.js。
"bin": {
"weather": "./index.js"
}
bin參數是{ 命令名:文件名 }的格式,bin即代表二進制。bin參數指定了各個內部命令對應的可執行文件的位置,相當于在/user/local/bin下創建了內部命令的快捷方式。執行weather相當于加載index.js。index.js文件的頭部要寫上#!/usr/bin/env node, 表示以node運行這個二進制文件
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "git add .; git commit -am 'update'; git push",
"creatfile": "touch 1.js",
"delete": "rm -rf 1.js"
}
可將開發中一系列復雜或者繁瑣的操作一次編輯完并給其指定一個代號(keyName),在執行環境下只要直接輸入對應的 npm run keyName即可批處理執行,提高開發效率。
3.npm install --save app 與 npm install --save-dev app有什么區別?
- npm install -save xxx會將依賴xxx模塊安裝在局部,同時將xxx保存到package.json中的dependencies字段中。在package.json文件夾下執行npm install時會自動下載這些項目依賴。
- npm install -save-dev xxx會將依賴xxx安裝在局部,同時將xxx保存到package.json中的devDependencies字段中。通過npm install命令不會自動下載這些依賴,必須通過手動下載。
4.nodule_modules的查找路徑是怎樣的?
- require的內容以./或者../開頭的按照正常的查找路徑。
- require內容不加./或者../查找的js文件(非核心模塊)。先從當前目錄下的nodule_modules查找,不存在就依次向上遞歸查找,到上級目錄的nodule_modules中查找,直到系統根目錄。
5.npm3與 npm2相比有什么改進?yarn和 npm 相比有什么優勢? (選做題目)
- npm3在npm2簡單直接安裝依賴包(樹形結構下載)的基礎上加了些算法。它會按照package.json里的依賴順序依次解析,遇到新的包就把它放在第一級目錄,后面如果遇到一級目錄已存在的包則先判斷版本,版本一致則忽略,否則按照npm2的方式依次掛在依賴包目錄下。
- yarn的優勢:
- 多平臺精準校準,只要將yarn.lock保存到源碼庫,任何地方安裝,版本都不會出現偏差。
- 速度快,節約時間。
- 支持clean命令,可以快速清理包文件。
- 一個單獨的請求不會導致整個安裝失敗,可以反復重試直到鏈接恢復正常。
6.webpack是什么?和其他同類型工具比有什么優勢?
- Webpack 是當下最熱門的前端資源模塊化管理和打包工具。它可以將許多松散的模塊按照依賴和規則打包成符合生產環境部署的前端資源。還可以將按需加載的模塊進行代碼分隔,等到實際需要的時候再異步加載。通過 loader 的轉換,任何形式的資源都可以視作模塊,比如 CommonJs 模塊、 AMD 模塊、 ES6 模塊、CSS、圖片、 JSON、Coffeescript、 LESS 等。
- 優勢:
- 對 CommonJS 、 AMD 、ES6的語法做了兼容
- 對js、css、圖片等資源文件都支持打包
- 串聯式模塊加載器以及插件機制,讓其具有更好的靈活性和擴展性,例如提供對CoffeeScript、ES6的支持
- 有獨立的配置文件webpack.config.js
- 可以將代碼切割成不同的chunk,實現按需加載,降低了初始化時間
- 支持 SourceUrls 和 SourceMaps,易于調試
- 具有強大的Plugin接口,大多是內部插件,使用起來比較靈活
- webpack 使用異步 IO 并具有多級緩存。這使得 webpack 很快且在增量編譯上更加快
7.npm script是什么?如何使用?
"scripts": {
"test": "echo "Error: no test specified" && exit 1",
"start": "git add .; git commit -am 'update'; git push",
"creatfile": "touch 1.js",
"delete": "rm -rf 1.js"
}
可將開發中一系列復雜或者繁瑣的操作一次編輯完并給其指定一個代號(keyName),在執行環境下只要直接輸入對應的 npm run keyName即可批處理執行,提高開發效率。
### 8.使用 webpack 替換 入門-任務15中模塊化使用的 requriejs
[效果](https://kumabearplus.github.io/27/)
[代碼](https://github.com/kumabearplus/27)
### 9.gulp是什么?使用 gulp 實現圖片壓縮、CSS 壓縮合并、JS 壓縮合并
> gulp是一種開源自動化構建工具,基于node.js構建,API易于學習,插件質量高
[效果](https://kumabearplus.github.io/28/)
[代碼](https://github.com/kumabearplus/28)
### 10.開發一個 node 命令行天氣應用用于查詢用戶當前所在城市的天氣,發布到 npm 上去。可以通過如下方式安裝使用(可使用api.jirengu.com里提供的查詢天氣接口) (選做題目)
安裝:
npm install -g kuma-weather
運行:
weather city
// city is optional