npm的安裝和使用?

參考: http://www.cnblogs.com/chyingp/p/npm.htmljavascript

在css中使用變量, 採用less或sass來編譯cssphp

改變網頁網站開發和構建的方式, 除了用emmet(zen-coding) 來改變書寫代碼的方式外, 主要就是用 不少框架, 架構, 來構建css和js的 方式

使用 grunt.js gruntcli: grunt: 咕嚕, 發出咕嚕咕嚕的聲音...
基於nodejs, node.js的一種自動化工具.
npm則是nodejs 的 package manager包管理器, 包括: npm install/uninstall/ls, info/update/search 等命令和管理內容.
npm help查看npm的幫助信息...css

關於grunt, 參考: http://www.html-js.com/article/1647
使用 package.json來安裝npm的依賴包: 主要的幾個"字段"是3個: 包的name, version, 和 devDependencies, 其餘還能夠有: author, private,html

{
    "name": "...",
    "ersion":"....",
    "author": "...",
    "private": true,
    "devDependencies ????": {
            "depend_name" : "depend_pack_version"
        }

}

ember: 灰燼 , 餘輝, ember.js
angular: adj. 有棱角的, 瘦骨嶙峋的, 有尖角度 , 有棱角的, 它是angle(角度, 角) 的形容詞.
AngularJS是前端數據庫 框架js.
而node.js是後端 服務器端js框架, 它有不少的 擴展, 組件, 有不少基於node.js的開發的plugin, 如同jquery有不少基於jquery開發的插件同樣. 可是 node.js能夠把 這些基於node.js的不少 的插件, 有機的結合組織起來, 造成一個開發web程序的有機的工具, 這個就是npm, 這個npm能夠很方便的 下載/更新/管理這些nodejs的插件.前端

node.js的優劣: 參考:http://kb.cnblogs.com/page/200929/java

Node 公開宣稱的目標是 「旨在提供一種簡單的構建可伸縮網絡程序的方法」。當前的服務器程序有什麼問題?咱們來作個數學題。

在 Java™ 和 PHP 這類語言中,**每一個鏈接都會生成一個新線程,每一個新線程可能須要 2 MB 的配套內存。**

在一個擁有 8 GB RAM 的系統上,理論上最大的併發鏈接數量是 4,000 個用戶。隨着您的客戶羣的增加,若是但願您的 Web 應用程序支持更多用戶,那麼,您必須添加更多服務器。固然,這會增長服務器成本、流量成本和人工成本等成本。除這些成本上升外,還有一個潛在技術問題,即用戶可能針對每一個請求使用不一樣的服務器,所以,任何共享資源都必須在全部服務器之間共享。鑑於上述全部緣由,整個 Web 應用程序架構(包括流量、處理器速度和內存速度)中的瓶頸是:服務器可以處理的併發鏈接的最大數量。
瓶頸在於服務器可以處理的併發鏈接的最大數量。
Node.js解決這個問題的方法是:更改鏈接到服務器的方式。每一個鏈接發射一個在Node.js引擎的進程中運行的事件,而不是爲每一個鏈接生成一個新的OS線程(併爲其分配一些配套內存)。
Node.js不會死鎖,由於它根本不容許使用鎖,它不會直接阻塞 I/O 調用。Node.js還宣稱,運行它的服務器能支持數萬個併發鏈接。

nodejs主要適合: cpu使用率較低,可是io使用率較高的web程序應用....

Node.js輕量高效,能夠認爲是數據密集型分佈式部署環境下的實時應用系統的完美解決方案。

### Node很是適合以下狀況:在響應客戶端以前,您預計可能有很高的流量, 但所需的服務器端邏輯和處理 (cpu負載) 不必定不少。

node.js 是基於 v8 javascript的 google的js框架, 使用modules化設計. 總之, nodejs是一種 相似於php和java的服務器端動態腳本. 採用模塊化設計的...

npm是跟隨着node.js安裝的時候, 安裝的, 即在安裝node的時候, 就已經把npm安裝好了, 如同php安裝的時候, 就把pear給安裝了. (pear就至關於php的插件的包管理器). 它的位置在: c:\program files\nodejs\node_modules\npm\中, 可執行 "批處理" 命令是: bin/npm.cmd

npm自己的官網地址是: www.npmjs.com 注意, 不是 npm.com, npm.com是美國納斯達克證券的官網.node

export: ['eksp2:t] ex- 的發音是eks, 跟exercise同樣的發音.jquery

學習任何一門語言, 確定要花費大量的時間精力, 還有各類坑, 各類第三方的bug, 各類不靠譜, 因此有的東西, 適合"嘗試"一下, 瞭解一下仍是能夠的, 真的是用在項目中, 則要仔細權衡和思考了.linux

nodejs的第三方庫仍是很豐富的,不過穩定性和強壯性於JAVA比起來就弱了不少,
開發過程當中各類蛋疼,第三方庫的各類bug,
各類坑讓你去踩,
若是遇到線上產品緊張的時候,你就悲劇了……
好處是,踩坑的過程當中,你會學到不少。

前端和後端都會/精通的工程師, 叫 "全端"工程師. PayPal從java遷移到node.js , 因爲java的愈來愈封閉/複雜/收費jvm, 使得"去java化", 剛開始使用node.js作了一些demo用的原型程序... 一方面,node調用的都是c++編譯後的模塊,其次V8的引擎執行的速度也不是蓋的。我的感受nodejs開發web應用有純自然的優點,不過開發大型項目的話,缺點仍是蠻多的。c++

underline和underscore的區別:
underline是比較長的那種線, 而underscore是比較短的那種下劃線 如: mbstring_module.dll這種裏面的下劃線就是underscore, 而像word中, 給一句話加上下劃線那種的就叫underline.
另外: underscore還有"底線, 作事的底線"的意思, 而underline, 還有下期節目預告.

npm支持命令的簡寫, 如npm install 能夠簡寫爲npm i underscore.js


理解node.js文件的執行方式: 當在命令行, 執行 node foo.js腳本的時候

  1. js腳本中的 console.log 會立刻執行.
  2. var server = http.createServer(...); //是建立一個變量; 而 server.listen(9000); 是偵聽9000端口, 這個語句的命令是 : node.js "進程"/服務器, 會監聽這個端口, 當使用curl, firefox等request請求這個端口時, 就會 執行 createServer中的回調函數, 發送request, response等...

  3. 因此, 若是有 listen的話, cmd命令行是一直在那裏等待, 運行的, 並無退出. 直到你執行ctrl-c的時候, 才退出, 這就是 listen的做用!

下載的npm包....

默認的時候, 是放在當前目錄下的 node_modules, 要想在任意目錄均可以使用你npm下載安裝的包, 則 在安裝的時候, 就要使用: npm i your_package_name -g
注意, 縮寫也不是任意的, 要看npm 幫助中, 確實有的 "單字母"命令, 你才能使用.

上傳到git repository的時候, 不要上傳你本地的 npm包, 而只須要上傳你的 package.json 文件就行了. 而後, 其餘使用你的項目的用戶, 只須要在他的本地機器上, 執行 npm a 命令就行了.


npm popular 是一個npm最流行的包

npm i npm_package_name --save(--save是自動將npm的包加入到 package.json中),
--dev表示只是在開發階段 , 不會上傳到git 倉庫中.

若是你是要開發web app, 要使用node.js的擴展包, 那麼 就直接在當前目錄下, 使用npm 去下載...管理這些包. 而後在你的項目中去
引入你須要的前端 js包就能夠了, 好比:<script src="./node_modules/jquery/dist/jquery.js">, 一般目錄結構是: ./node_modules/package_name/..../*.js

在寫a超連接的地址時, 能夠寫絕對路徑: 即從 "/" 開始寫起:
同時在用ff調試的時候, 若是是 "寬屏/ 或者顯示的內容不多, 寬度很小的 時候", 能夠將f12的調試窗口放到頁面的 "水平右邊, 靠右"

命令:npm init -y 能夠生成package.json文件嗎? 是的, 它會在當前目錄下生成 package.json 文件!


幾個容易混淆的英文?

  • solution: 兩個意思, 解決方案, 解決; 另外一個是溶液, 溶解的意思.
  • resolution: 兩個意思: 分辨率; 決議, 決定; 決心!
  • revolution: r-evolution 跟evolution比較, 多一個r-字母. rev-olution <-> res-olution比較, 不一樣的是一個v, 表示革命的,
  • evolution: n. 進化, 演變, 發展, evolutionary: 進化的, 逐漸的, at some point in their evolutionary history. the human evolutionary process.

npm install package-name --save
npm install package-name --save-dev
主要是不用手動去修改 package.json文件. 而會自動添加到json文件中. --save是產品依賴包, 添加到 dependencies節中, 而--save-dev是開發依賴包, 添加到"devdependencies"節中.

nrm是管理npm的註冊的:
先安裝nrm: npm i nrm -g, 而後使用nrm進行管理, 包括: nrm ls, nrm current等命令:

在windows的 c:\users\administrator\目錄, 就至關於在linux中的 ~, 用戶家目錄
npm的註冊配置文件, 就是在 ~/administrator/.npmrc這個家目錄下的 .npmrc. 裏面的內容是: registry=http://r.cnpmjs.org/

nrm ls 列出當前可使用的註冊鏡像,
nrm use 則是指定使用的nodejs鏡像地址. 此時.npmrc的內容也會相應的改變 注意是nrm, 不是npm: nrm: npm registry manager.


nrm是npm鏡像源的管理器, 母的是:

cnpmjs.org和最近推出的淘寶 npm 兩個 NPM 鏡像。除此以外,還有一些國外的 NPM 鏡像。不一樣地區訪問不一樣的鏡像速度可能有差別,而後各個鏡像各自均可能有少數包暫時沒有同步,所以,有時候須要切換 NPM 鏡像。相比每次切換時都手動指定相應參數,使用nrm 要方便的多。

添加鏡像源, 主要是企業內部本身的私有源, 能夠根據cnpmjs來本身定製: nrm add ... refer to(see also, for your information: ): http://www.javashuo.com/article/p-cyixmyaf-t.html


firefox如何設置多個主頁?
主頁: alt+home鍵
有多種方法: 一是, 直接在主頁設置框中, 輸入多個url地址, 中間用 管道 | 隔開, 二是使用書籤文件夾, 這樣書籤文件夾中的多個書籤會依次打開. 三是, 事先打開多個頁面, 而後單擊"使用當前打開的網頁".
可是, 更有意義的是, 在"firefox打開時" 選擇option: 打開上次打開的窗口和標籤, 這個能夠快速的恢復 "上次工做沒有完成, 中斷了的頁面~~" 感受很是好用!! 這樣就不用擔憂中途須要中斷 關機時 再從新去找哪些是打開的標籤 了.

nodejs包括兩種模塊, 一種是原生模塊, 一種是文件模塊...
require成功後, 返回的是一個 原生的模塊對象, 就可使用對象的api進行操做了.


npm的下載, 就像yum的同樣 , 在他的站點中, 就有各類 nodejs的插件/模塊, 只要你使用 npm install module-name -g npm就會自動的從他的站點上下載下來.

使用npm的站點是: www.npmjs.com, 注意是 npmjs不是npm, npm是納斯達克的站點.
npm install安裝的是 當前目錄(即 當前命令提示符所在的位置目錄).

使用npmjs, nodejs模塊的方法是:

  1. 下載
  2. require("module-name"), 會返回這個模塊對象, 如 var = require('http'); 而後就可使用這個對象的 類 方法/成員變量等了.
  3. 若是require不寫 "./module-name.js", 則默認的是從當前的node-modules目錄中去加載, 入口文件是 packages.json

package.json文件? 是用來管理依賴包的: 由於每一個官方的依賴包, 都是在npmjs上下載的, 每一個人, 每臺電腦均可以去下載, 所以, 當咱們共享/拷貝項目(代碼)的時候, 除了那些html, js文件外, 從npmjs站點上下載下來的實體包, 實際上是不用傳遞的. 由於這些包一塊兒打包/傳遞, 實際上是沒有意義的, 由於他們自己能夠本身去下載的. 所以, 你只須要告訴別人, 個人項目中, 須要哪些nodejs模塊, 須要哪些依賴包就能夠了, 而後 ,你把項目拷貝給別人後, 他本身利用 npm install命令就行了, 就能夠根據package.json所須要的依賴包, 去本身下載了. 這就是package.json的意義!

  • 建立json文件, 的命令是; npm init (初始化). walk you through creating a package.json file. 其中的entry point就是json文件中的main: index.js入口文件.
  • 安裝json所描述指定的依賴包: npm install .

"dependencies": {
    "express": "^4.15.2"
  },

其中的, 4.15.2前面的脫字符, 表示這個版本數字是固定的, 脫字符只管跟他直接相鄰的那個數字, 若是要固定全部的數字, 則用: ^4.^15.^2

npm的依賴包, 多是 遞歸的 依賴. 即一個包a, 依賴另外一個包b, 而包b又可能 依賴其餘一些包. 因此 npm, nodejs的哲學, 就是" 人人爲我, 我爲人人"的 最淋漓盡致的表現, 也是unix/linux哲學的又一體現.

相關文章
相關標籤/搜索