1.前端與後端 ◆前端:作靜態資源的 ◆後端:操控服務器的硬件的 ◆ 2.爲何學習node.js ◆就業有市場 ◆有商業用途 ◆自己技術是有價值 ◆js開發 ◆使用node.js最好使用雙數版本,單數版本不會長期維護,雙數版本都會長期支持,因此安裝node最好都安裝雙數版本,如四、六、8這樣的。 3.js引擎 ◆汽車引擎:轉化的做用,就像汽油柴油等等通過轉化以後變成動能 ◆js引擎:模板和數據轉化爲頁面 ◆瀏覽器引擎:將js代碼轉化爲機器碼\字節碼 ◆ 4.nodejs就是將js引擎套一個殼子,寫js代碼傳給js引擎,而後操做硬件。 ◆nodejs是一門技術,它使用的語言叫js。 ◆nodejs是靠V8引擎去解析js的。 ◆nodejs優勢:事件驅動、無阻塞IO、輕量級運行速度快 ◆npm是世界上最大的一個包管理網站,裝了nodejs就自帶npm。 ◆V8引擎底層仍是用的是C++,使用了libuv,libuv是c++的一個庫。 ◆nodejs定義了不少全局的對象,這些全局對象至關於nodejs內置的API,至關於瀏覽器裏面也有內置不少API、如bom、dom、location、history、window等等。 ◆nodejs和seajs同樣也是模塊兒的,好比它們都用require來引入其它模塊兒,也用module.exports來向外暴露屬性或者方法。 ◆ 5.不一樣瀏覽器對javascript實現的方式 ◆Firefox(火狐):SpiderMonkey引擎 ◆IE:JScript引擎 ◆Safari:JavaScriptCore引擎 ◆Chrome:V8引擎 ◆Microsoft Edge:ChakraCore引擎 6.nvm(nodejs 版本管理工具)、npm(nodejs 程序管理工具)、nrm(npm的數據源管理工具),3m安裝法 ◆nvm安裝(window)【 ◇首先在https://github.com/coreybutler/nvm-windows/releases下載安裝包 ◇安裝一路肯定便可,途中指向的nodejs要選擇你nodejs目錄。 ◇實際上不須要你配置環境變量,固然你也能夠本身配置 ◇點擊個人電腦,右鍵選擇屬性,再選擇高級系統設置,找到環境變量按鈕並點擊。 ◇看到用戶變量以後,看看有沒有NVM_HOME和NVM_SYMLINK,若是沒有,就本身新建,NVM_HOME的值就是你nvm文件夾,NVM_SYMLINK的值就是你nodejs文件夾 ◇弄好以上兩個以後,在PATH中加上;%NVM_HOME%;%NVM_SYMLINK%;,就能夠了,否則你加上兩個變量的絕對路徑也行,是同樣的。 ◇配置完畢開始使用。 】 ◆nrm安裝:npm install -g nrm ◆ ◆ 7.nvm命令 ◆nvm install 版本號 :下載指定版本的nodejs,將nodejs須要的文件下載到nvm文件夾目錄中去 ◆nvm uninstall 版本號:卸載已經下載的指定版本的nodejs,在nvm文件夾目中去刪除 ◆nvm -h :幫助文檔(help) ◆nvm list 或者nvm ls:顯示你安裝的一系列nodejs的版本 ◆nvm use 6.10.3(nodejs版本號):切換到已經安裝的nodejs版本 ★nodejs的版本能夠到https://nodejs.org/en/download/releases/中去找 ◆相關的命令等解釋能夠到https://segmentfault.com/a/1190000007612011中去找。 ◆ 8.cmd命令(windows操做系統命令行) ★文件或者文件夾自動補全,輸入文件或者文件夾部分名稱而後使用tab鍵,最後就會自動補全,多按幾下tab或不停的切換匹配到的名稱。 ◆cd 文件夾名稱:進入到文件夾或者切換目錄 ◆D:、E:、F:、C::表示切換到指定的盤中。 ◆mkdir 文件夾名或者 md 文件夾名:(make directory) 建立一個文件夾 ◆rd 文件夾名:(remove directory) 刪除文件夾 ◆del 文件名:(delete) 刪除指定文件 ◆dir:列出當前目錄中全部的內容 ◆ren 原文件名 新文件名:(rename) 改變文件名 ◆cls|clear:(clear screen)清屏,清除命令行界面全部舊的命令 ★其它命令能夠參考:https://jingyan.baidu.com/article/f0e83a25f2659a22e59101b5.html ◆ 9.雲服務器 ◆私人的電腦爲何不可以做爲服務器,由於你只有內網的ip,並無外網的ip,因此別人請求不到你這裏。 ◆DNS域名解析,解析以後獲得的是一個外網的ip,不能解析到內網的ip ◆阿里雲->產品->彈性計算->雲服務器ECS ◆計費方式選擇包年包月->地域選擇華東1->架構選擇x86計算->分類選擇入門級->選擇90-200之間的一臺服務器->鏡像選擇ubuntu或者CoreOS->版本64位->而後選擇購買市場一個月或者幾個月->點擊下一步->.... ◆而後去下載一個鏈接服務器的工具,如xshell,以後就能夠操做服務器了。 ◆ 10.全局安裝後,能夠全局調用的原理 ◆個人電腦->屬性->高級系統配置->環境變量 ◆修改用戶變量裏的PATH,添加文件目錄路徑 ◆而後你經過命令來調用你安裝的軟件的時候 ◆先去命令行當前目錄中去找,若是找到就執行 ◆若是沒有找到就去環境變量裏配置的用戶變量,在PATH中字符串寫的那些文件目錄去找對應的軟件執行程序,若是找到了就調用 ◆若是仍是沒有找到,那麼就會去環境變量裏配置的系統變量,也是PATH中字符串寫的那些文件目錄中去找對應的執行程序,如qq、node等等,若是找到了就調用,系統變量表示全部的用戶都可以使用,用戶變量是說只有這個用戶纔可以使用。 ◆若是三個地方都沒有找到,那麼就不找了,最後就沒法調用,命令行中會返回該命令不存在的提示信息。 ◆就算你沒有使用全局安裝,可是若是本身配置全局的環境變量,那麼也可以作到全局調用。 11.REPL(Read-eval-print-loop) 運行環境 ◆用來測試一下代碼的,repl和chrome的控制檯很像 ◆經過在控制檯中輸入node敲回車就能夠進入REPL 運行環境了。 ◆經過在REPL運行環境中 連續按兩下Ctrl+C就能夠退出 REPL 運行環境。 ◆能夠看成是谷歌瀏覽器的控制檯 ◆ 12.nodejs的使用 ◆node code\hello.js:直接執行code目錄下的hello.js文件。 ◆nodejs裏有一個global對象,至關於瀏覽器裏面的window對象,可是區別是global並不僅屬於某一個js文件,至關於C#裏的Application對象同樣,並不僅屬於一個網頁,全部網頁均可以用,可是不建議那麼去用,global.a=123;和a=123的定義是一致的。 ◆console.assert();斷言,通常用於調試【 var foo=123; //一千行邏輯代碼 console.assert(foo==123,"邏輯錯誤,foo!=123"); 】,若是foo==123就直接經過,加入foo不等於123了,那麼沒有經過就會直接報錯,而後給出console.assert中的提示語,谷歌瀏覽器中也可以使用。 ◆console.time('標記名');console.timeEnd('標記名');,必須成對出現,用於記錄代碼運行的時間,用於測試性能【 console.time('test'); var sum=0; for(var i=0;i<100;i++) { sum+=i; } console.timeEnd('test'); 】,谷歌瀏覽器中也可以使用。 ◆__dirname:表示獲取當前文件所在的路徑(不包括文件名) ◆__filename:表示獲取當前文件所在的路徑而且加上文件的名稱(文件的絕對路徑) ◆在nodejs中每個js文件就是一個模塊兒,至關於在seajs中define一個模塊兒同樣,向外暴露也是和seajs中同樣,使用module.exports或者exports來向外暴露屬性或者方法,也是經過賦值的方式。 ◆在nodejs中引入其它的模塊兒,方式也是和seajs同樣,經過require('./add.js');來進行引入,會返回一個對象,你接收一下就能夠了。 ◆process是一個全局可用對象,是用來與當前正在啓動的node進行交互的【 ◇process.version取版本號在控制檯作標準輸出 ◇process.stdout.write(`123123`); ◇process.pid:當前進程的進程號。 ◇process.version:Node的版本,好比v0.10.18。 ◇process.platform:當前系統平臺,好比Linux。 ◇process.env:指向當前shell的環境變量,好比◇process.env.HOME,能夠看到你配置的全部環境變量。 ◇process.stdout:指向標準輸出。 ◇process.stdin:指向標準輸入。 ◇process.stderr:指向標準錯誤。 】 ◆nodejs官網裏的文檔中的globals有不少全局對象。 ◆ ◆ 13.高級API工具,開發人員的標配 ◆Zeal:離線的狀況下也能夠查資料,window操做系統下也可以使用。 ◆Dash:在mac操做系統使用 ◆Velocity:離線的狀況下也能夠查資料,window操做系統下也可以使用。 ◆ ◆ 14.面試階段 ◆第一階段:你說它聽,而後它順便看看你的簡歷。 ◆第二階段:它問你答,這個階段是你能夠控制的地方,它會先問你的長項,你要製造一個長項出來,要把長項突出出來,而後會追着你的短項一直問,可是你的短項你也得說,短項你也能夠準備。 ◆第三階段:你問他答,把你擅長的再突出出來,彌補以前的不足 ◆第一份簡歷什麼都要寫上去,而後針對不一樣的公司進行刪改,要有針對性,若是它公司有些技術你不會,那麼你能夠花十分鐘瞭解一下這門技術有哪些優點劣勢等等信息,這樣你簡歷上就能夠寫了解或者說使用過,作過哪些demo。 ◆記住天龍八部裏面的小無相功,其實並無真正去學少林七十二絕技,可是小無相功也是一種速成法,小無相功是針對少林七十二絕技。 ◆ ◆ ◆ 15.nodejs的Module對象和require方法 ◆Module是在運行的時候分配一個對象給它,用來記錄一些信息。 ◆require方法操做的時候實際上是去硬盤中去讀js文件,而後放入module對象裏,因此當去讀相同的js文件時,會直接去緩存中拿以前的Module.exports,不會再去執行那個相同的js文件中的其它代碼了,也正是由於如此,因此nodejs才高效。 ◆Module是一個對象,當一個模塊兒引入其餘模塊兒的時候,那麼這個模塊兒就是根,id是一個小點兒。 ◆每個Module都有 id、exports、parent、filename、loaded、children、paths這幾個屬性【 ◇id:表示入口文件,若是是根入口,那麼就會用一個.來表示 ◇exports:表示向外暴露的屬性或者方法 ◇parent:表示父級模塊兒,誰引入當前這個模塊兒,那麼父級模塊兒就指向誰,沒誰引入值爲null ◇filename:表示當前模塊兒對應的文件 ◇loaded:當前模塊兒是否加載完畢 ◇children:表示子模塊兒集合 ◇paths:表示全部node_module的路徑,用於系統核心模塊兒使用的時候進行查找,或者文件模塊兒的包查找 ◇ ◇ 】 16.傳智播客老師寫的工具,能夠在npm中搜索到,能夠去官網搜。 ◆fast-init:是一個快速初始化模板的工具,首先你寫一個模板文件,而後f -i 文件名@自定義標識名,這樣你就添加了一個模板,你能夠經過f -u 自定義標識名來下載這個模板到當前目錄中,f -l 能夠查看全部的已經添加的模板,f -d 自定義標識名 能夠刪除你添加的模板。 ◆express-generator:是一個自動生成項目的工具,可是項目是空的,就是給你準備了一些基本的目錄和文件,npm install -g express-generator是安裝,而後使用express,就可以自動生成到當前目錄中去。 ◆ 17.angularjs控制器之間相互傳參 ◆子控制器給父控制器傳參:子控制器經過$scope.$emit('to-parent','要傳的內容');//$emit叫事件發射器,很像事件冒泡的原理,父控制器經過$scope.$on('to-parent',function(event,data){ console.log(data);//data就是子控制器傳遞過來的數據,to-parent是一個事件。 }) ◆父控制器給子控制器傳參:父控制器經過$scope.$broadcast('to-child','要傳的內容');//$broadcast叫作向下廣播,向它的兒子發送數據,子控制器經過$scope.$on('to-child',function(event,data){ console.log(data);//data就是父控制器傳遞過來的數據,tochild是一個事件 }) ◆當前控制器給平級控制器傳參:給父容器傳參,父容器再給子容器傳參,這樣就可以平級給平級傳參了。 ◆ ◆ ◆