NodeJS相關筆記(一)

1.前端與後端
◆前端:做靜態資源的
◆後端:操控服務器的硬件的



2.爲什麼學習node.js
◆就業有市場
◆有商業用途
◆本身技術是有價值
◆js開發
◆使用node.js最好使用雙數版本,單數版本不會長期維護,雙數版本都會長期支持,所以安裝node最好都安裝雙數版本,如4、6、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是一個事件
})
◆當前控制器給平級控制器傳參:給父容器傳參,父容器再給子容器傳參,這樣就能夠平級給平級傳參了。









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章