成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

NPM你真的會嗎?(一)

Little_XM / 2441人閱讀

摘要:是生命周期中的事件,是要執(zhí)行的命令。全局安裝將安裝包放在下或者你的安裝目錄可以直接在命令行里使用卸載模塊既然可以安裝那么也會有卸載模塊的方式,卸載完以后查看一下該模塊是否存在更新模塊更多知識我們會在你真的會嗎二中來講解大家敬請期待。

什么是NPM

npm是什么東東?npm其實是Node.js的包管理工具(package manager)。
為啥我們需要一個包管理工具呢?因為我們在Node.js上開發(fā)時,會用到很多別人寫的JavaScript代碼。如果我們要使用別人寫的某個包,每次都根據(jù)名稱搜索一下官方網(wǎng)站,下載代碼,解壓,script 引入,非常繁瑣。于是一個集中管理的工具應(yīng)運而生:大家都把自己開發(fā)的模塊打包后放到npm官網(wǎng)上,如果要使用,直接通過npm安裝就可以直接用,不用管代碼存在哪,應(yīng)該從哪下載。
更重要的是,如果我們要使用模塊A,而模塊A又依賴于模塊B,模塊B又依賴于模塊X和模塊Y,npm可以根據(jù)依賴關(guān)系,把所有依賴的包都下載下來并管理起來。否則,靠我們自己手動管理,肯定既麻煩又容易出錯。

npm的歷史

在沒有npm的年代,你要去獲取一個模塊,或者一個框架你的方式是什么?

獲取->JQ

獲取->Boottrap

獲取->Underscore


我們的GitHub

當(dāng)然當(dāng)時也是一個jQuery可以走天下的時代

我們程序員當(dāng)然不能接受這種古老而且低效率的事情,我們需要更加高效更加合理的代碼管理方式。
想想其他語言

語言 包管理工具
Java maven
Python distribute、setuptools、distutils、easy_install、pip
PHP Composer

前端居然沒有!不能容忍!在這個時候有個人站了出來
Isaac Z. Schlueter GitHub 下面簡稱(Issac)

大致的實現(xiàn)思路

找一個云服務(wù)把所有的代碼都管理起來

然后通知 jQuery、Bootstrap、等等這些框架的坐著作者使用 npm publish 把代碼提交到云服務(wù)上,

社區(qū)里的其他人如果想使用這些代碼,就可以通過npm install 來下載這些代碼了。

下載完的代碼出現(xiàn)在 node_modules 目錄里,就可以通過require引入進行使用了。

后續(xù)發(fā)展

Isaaz 通知 jQuery 作者 John Resig,他會答應(yīng)嗎?不一定這還是個未知數(shù),但是還是要去做。
只有前端開發(fā)工程師人人都知道有這個東西了才會認可它對不對。
那npm是怎么迅速在前端社區(qū)火爆起來的呢?
npm 的發(fā)展是跟 Node.js 的發(fā)展相輔相成的。
Node.js 是由一個在德國工作的美國程序員 Ryan Dahl github地址 寫的。他寫了 Node.js,但是 Node.js 當(dāng)時缺少一個包管理器,于是他和 Isaaz 一拍即合、,最終 Node.js內(nèi)置了npm。
后來的事情大家都知道,Node.js 火了。

package.json

當(dāng)我們在一個空文件 npm init 初始化的時候這個文件就誕生了,

我這里找了express 的 package.json

{
  "name": "express", // 包名
  "description": "Fast, unopinionated, minimalist web framework", // 包的描述
  "version": "4.13.3", // 包的版本號
  "author": { // 包的作者姓名
    "name": "TJ Holowaychuk",
    "email": "[email protected]"
  },
  "contributors": [ // 包的其他貢獻者姓名
    {
      "name": "Aaron Heckmann",
      "email": "[email protected]"
    }
    // ...
  ],
  "license": "MIT", // 你應(yīng)該為你的模塊制定一個協(xié)議,讓用戶知道他們有何權(quán)限來使用你的模塊,以及使用該模塊有哪些限制。
  "repository": { // 包代碼存放的地方的類型,可以是 git 或 svn,git 可在 Github 上。
    "type": "git",
    "url": "git+https://github.com/strongloop/express.git"
  },
  "homepage": "http://expressjs.com/", // 包的官網(wǎng) url
  "keywords": [ // 關(guān)鍵字
    "express",
    "framework",
    "sinatra",
    "web",
    "rest",
    "restful",
    "router",
    "app",
    "api"
  ],
  "dependencies": { // 依賴包列表。如果依賴包沒有安裝,npm 會自動將依賴包安裝在 node_module 目錄下
    "accepts": "~1.2.12",
    // ...
  },
  "devDependencies": { // 開發(fā)環(huán)境的依賴包
    "after": "0.8.1",
    // ...
  },
  "engines": { // node版本范圍
    "node": ">= 0.10.0"
  },
  "files": [
    "LICENSE",
    "History.md",
    "Readme.md",
    "index.js",
    "lib/"
  ],
  "scripts": { // 項目的生命周期個各個環(huán)節(jié)需要執(zhí)行的命令。key是生命周期中的事件,value是要執(zhí)行的命令。
    "test": "mocha --require test/support/env --reporter spec --bail --check-leaks test/ test/acceptance/",
    "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --require test/support/env --reporter spec --check-leaks test/ test/acceptance/",
    "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --require test/support/env --reporter dot --check-leaks test/ test/acceptance/",
    "test-tap": "mocha --require test/support/env --reporter tap --check-leaks test/ test/acceptance/"
  },
  "gitHead": "ef7ad681b245fba023843ce94f6bcb8e275bbb8e",
  "bugs": {
    "url": "https://github.com/strongloop/express/issues"
  },
  "_id": "[email protected]",
  "_shasum": "ddb2f1fb4502bf33598d2b032b037960ca6c80a3",
  "_from": "express@*",
  "_npmVersion": "1.4.28",
  "_npmUser": {
    "name": "dougwilson",
    "email": "[email protected]"
  },
  "maintainers": [
    {
      "name": "tjholowaychuk",
      "email": "[email protected]"
    }
    // ...
  ],
  "dist": {
    "shasum": "ddb2f1fb4502bf33598d2b032b037960ca6c80a3",
    "tarball": "http://registry.npmjs.org/express/-/express-4.13.3.tgz"
  },
  "directories": {},
  "_resolved": "https://registry.npmjs.org/express/-/express-4.13.3.tgz",
  "readme": "ERROR: No README data found!"
}

那么你下次如果有這個package.json 你就可以直接下載安裝這些依賴包。包文件就會出現(xiàn)在node_modules里面。

經(jīng)常使用的命令

全局安裝與本地安裝
很多朋友一開始并不知道 npm install -g 和不帶-g的區(qū)別,npm 的包安裝分為本地安裝(local)、全局安裝(global)兩種

npm install express          # 本地安裝
npm install express -g       # 全局安裝

本地安裝
1、將安裝包放在./node_modules 下(運行 npm 命令時所在的目錄),如果沒有 node_modules 目錄,會在當(dāng)前執(zhí)行 npm 命令的目錄下生成 node_modules 目錄
2、可以通過 require() 來引入本地安裝的包。
全局安裝
1、將安裝包放在 /usr/local 下或者你 node 的安裝目錄
2、可以直接在命令行里使用

卸載模塊
既然可以安裝那么也會有卸載模塊的方式,

npm uninstall express

卸載完以后查看一下該模塊是否存在

npm ls

更新模塊

npm update express

更多知識我們會在NPM你真的會嗎?(二)中來講解大家敬請期待。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/104755.html

相關(guān)文章

  • Java基礎(chǔ)語法知識真的會嗎?

    摘要:而所有的數(shù)據(jù)運算都是采用補碼進行的。補碼解決負數(shù)加法運算正負零問題,彌補了反碼的不足。通過使用訪問修飾符可以使實例變量對子類可見暫時在學(xué)習(xí)基礎(chǔ)語法知識的時候可以暫時忽略實例變量這部分內(nèi)容,這部分內(nèi)容主要被使用在面向?qū)ο蟮牟糠?,但是極其重要。 showImg(https://segmentfault.com/img/remote/1460000019264541?w=600&h=242)...

    DirtyMind 評論0 收藏0
  • Python這些問題會嗎?

    摘要:因此,對于里包含的對象如果都是可以比較的,也就是說實現(xiàn)了函數(shù),那么對調(diào)用函數(shù)是沒問題的。 Python這些問題你會嗎? final作用域的代碼一定會被執(zhí)行嗎? 正常的情況下,finally作用域的代碼一定會被執(zhí)行的,不管是否發(fā)生異常。哪怕是調(diào)用了sys.exit函數(shù),finally也是會被執(zhí)行的,那怎么樣才能讓finally代碼不執(zhí)行了。 import time choice = Tr...

    freecode 評論0 收藏0
  • 26自學(xué)轉(zhuǎn)行前端(寫給和1年前樣迷茫的我的

    摘要:轉(zhuǎn)行前端有哪些疑慮在人生的抉擇處,尋求一些別人的經(jīng)驗和總結(jié),無可厚非,但是決定了就一定要堅定的走下去,謹慎是為了更好的堅持,而不是放棄的理由。寫在前面這里前后端指的是開發(fā)的前后端。 轉(zhuǎn)行前端有哪些疑慮? 在人生的抉擇處,尋求一些別人的經(jīng)驗和總結(jié),無可厚非,但是決定了就一定要堅定的走下去,謹慎是為了更好的堅持,而不是放棄的理由。寫在前面:這里前后端指的是web開發(fā)的前后端。1、前端崗位需...

    番茄西紅柿 評論0 收藏2637
  • 26自學(xué)轉(zhuǎn)行前端(寫給和1年前樣迷茫的我的

    摘要:轉(zhuǎn)行前端有哪些疑慮在人生的抉擇處,尋求一些別人的經(jīng)驗和總結(jié),無可厚非,但是決定了就一定要堅定的走下去,謹慎是為了更好的堅持,而不是放棄的理由。寫在前面這里前后端指的是開發(fā)的前后端。 轉(zhuǎn)行前端有哪些疑慮? 在人生的抉擇處,尋求一些別人的經(jīng)驗和總結(jié),無可厚非,但是決定了就一定要堅定的走下去,謹慎是為了更好的堅持,而不是放棄的理由。寫在前面:這里前后端指的是web開發(fā)的前后端。1、前端崗位需...

    番茄西紅柿 評論0 收藏2577
  • 26自學(xué)轉(zhuǎn)行前端(寫給和1年前樣迷茫的我的

    摘要:轉(zhuǎn)行前端有哪些疑慮在人生的抉擇處,尋求一些別人的經(jīng)驗和總結(jié),無可厚非,但是決定了就一定要堅定的走下去,謹慎是為了更好的堅持,而不是放棄的理由。寫在前面這里前后端指的是開發(fā)的前后端。 轉(zhuǎn)行前端有哪些疑慮? 在人生的抉擇處,尋求一些別人的經(jīng)驗和總結(jié),無可厚非,但是決定了就一定要堅定的走下去,謹慎是為了更好的堅持,而不是放棄的理由。寫在前面:這里前后端指的是web開發(fā)的前后端。1、前端崗位需...

    番茄西紅柿 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<