前端工程化-npm-gulp-webpack

題目1: 如何全局安裝一個(gè) node 應(yīng)用?

npm install -g xxx
//xxx為包名

如果下載速度比較慢,可以使用淘寶的鏡像

//先執(zhí)行下面命令
npm install -g cnpm --registry=https://registry.npm.taobao.org

//以后安裝就用 cnpm 代替 npm
cnpm install -g xxx

install 可以縮寫成 i

題目2: package.json 有什么作用?

命令行 npm init 可以初始化生成一個(gè)package.json

package.json 是一個(gè) json 格式的文件,用來(lái)記錄當(dāng)前的 npm 包的相關(guān)信息,如

  • name:包的名字
  • version:版本號(hào)
  • description:描述
  • main:包的入口文件
  • script: 運(yùn)行腳本命令的npm命令行縮寫
  • author: 作者
  • license: 版權(quán)信息
  • dependencies:項(xiàng)目運(yùn)行依賴,發(fā)布的時(shí)候,不需要發(fā)布依賴的包,只要發(fā)布其名字,別人下載的時(shí)候,會(huì)自動(dòng)下載依賴的包。
  • devDependencies:開發(fā)依賴,只有自己本地開發(fā)時(shí)候用的依賴包,發(fā)布以后別人用不到。
{
  "name": "packageName", 
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "cg",
  "license": "ISC",
  "dependencies": {},
  "devDependencies": {}
}

題目3: npm install --save app 與 npm install --save-dev app有什么區(qū)別?

  • npm install --save app
    項(xiàng)目運(yùn)行依賴:安裝名為 app 的包,并在 package.json 中添加到 dependencies 項(xiàng)目運(yùn)行依賴中去,發(fā)布以后別人會(huì)自動(dòng)下載 app 依賴
  • npm install --save-dev app
    開發(fā)依賴:安裝名為 app 的包,并在 package.json 中添加到 devDependencies 開發(fā)依賴中去,這個(gè) app 包依賴只有開發(fā)者自己使用,發(fā)布后別人用不到

題目4: nodule_modules 的查找路徑是怎樣的?

從文件所在目錄下的 nodule_modules 開始,逐級(jí)向上查找,直到找到根目錄,如果還找不到,就會(huì)報(bào)錯(cuò)。

查找路徑偽代碼

/e/饑人谷/senior/s5/webpack2-tutorial/node_modules
/e/饑人谷/senior/s5/node_modules
/e/饑人谷/senior/node_modules
/e/饑人谷/node_modules
/e/node_modules
/node_modules

題目5: npm3與 npm2相比有什么改進(jìn)?yarn和 npm 相比有什么優(yōu)勢(shì)? (選做題目)

npm2 把每個(gè)依賴的包放在自己的子目錄里
優(yōu)點(diǎn):目錄結(jié)構(gòu)清楚
缺點(diǎn):可能會(huì)有重復(fù)冗余的依賴包:如下面示意里 a1 ,重復(fù)下載了。

|- a          //包
|- |- a1         //依賴
|- |- a2         //依賴
|
|- b          //包            
|- |- a1         //依賴
|- |- b2         //依賴

npm3 把每個(gè)依賴的包放同級(jí)目錄下,這樣就可以減少包的重復(fù)下載

|— a        //包
|- a1          //依賴
|- a2          //依賴
|— b        //包
|- b2          //依賴
  • yarn和npm比較
  • npm安裝不夠快,不夠穩(wěn)定;npm安裝時(shí)運(yùn)行代碼,存在安全問題。
  • yarn使用yarn.lock(每當(dāng)有模塊被安裝都一定會(huì)更新)來(lái)保證,不同機(jī)子安裝程序時(shí)的版本一致。
  • yarn安裝速度比npm快。

題目6: webpack是什么?和其他同類型工具比有什么優(yōu)勢(shì)?

webpack 是一款模塊加載器兼打包工具,它能把各種資源 JS、CSS、圖片等都作為模塊來(lái)使用和處理。
優(yōu)勢(shì):

  • 用 commonJS 來(lái)書寫,對(duì) AMD/CMD 支持也很全面,
  • 方便其他模塊也兼容使用,擴(kuò)展性強(qiáng),插件機(jī)制完善,能被模塊化處理的資源多
  • 開發(fā)便捷,能替代部分 grunt/gulp 的工作,比如打包,壓縮。

題目7: npm script 是什么?如何使用

npm scriptpackage.json 里的一個(gè)屬性,可以自定義命令,用 npm run xxx來(lái)執(zhí)行
(如果 xxxteststart,則不用加 run,因?yàn)檫@是 npm 內(nèi)置的命令)

{
  "name": "npm-demo",
  "version": "1.0.0",
  "description": "第一個(gè)npm demo",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "mkdir": "mkdir test",
    "delete": "rm -r test"
  },
  "keywords": [
    "npm-demo"
  ],
  "author": "cg",
  "license": "ISC",
  "dependencies": {
    "marked": "^0.3.6"
  }
}
  • npm test 就能輸出里面的echo \"Error: no test specified\" && exit 1
  • npm run mkdir 創(chuàng)建了 test 文件夾
  • npm run mkdir 刪除了 test 文件夾

題目8: 使用 webpack 替換 入門-任務(wù)15中模塊化使用的 requriejs

效果
demo

重點(diǎn)
webpack.config.js 配置文件

//webpack.config.js

module.exports = {
  entry: './app.js',
  output: {
    path: __dirname,
    filename: 'bundle.js'
  }
}

app.js 入口文件

var $ = require("jquery")
var goTop = require("./js/com/gotop")
var carousel = require("./js/com/carousel")
var loadMore = require("./js/com/loadmore")
var lazy = require("./js/com/lazy")
var water = require("./js/com/waterfull")

new goTop($("body"))

carousel.init($(".carousel"))

loadMore.init($("#more"), $(".ct"))

lazy.init($(".ct img"))

$(".ct img").on("load", function(){
    water.init($(".ct"))
})
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容