node簡單了解(1)

node開發(fā)

  • 為什么要學(xué)習(xí)服務(wù)器端開發(fā)基礎(chǔ)坝锰?

    • 能夠和后端程序員更加緊密配合
    • 網(wǎng)站業(yè)務(wù)邏輯前置笋额,學(xué)習(xí)前端技術(shù)需要后端技術(shù)支撐(AJAX)
    • 擴展知識視野淋纲,能夠站在更高的角度審視整個項目
  • 服務(wù)器端開發(fā)要做的事情

    • 實現(xiàn)網(wǎng)站的業(yè)務(wù)邏輯
    • 數(shù)據(jù)的增刪改查
  • 為什么選擇Node啄巧?

    • 使用JavaScript語法開發(fā)后端應(yīng)用
    • 一些公司要求前端工程師掌握Node開發(fā)
    • 生態(tài)系統(tǒng)活躍,有大量開源庫可以使用
    • 前端開發(fā)工具大多基于Node開發(fā)
  • Node是什么胸囱?

    • Node是一個ChromeV8引擎的JavaScript代碼運行環(huán)境
      • 瀏覽器(軟件):能夠運行JavaScript代碼祷舀,瀏覽器就是JavaScript代碼的運行環(huán)境
      • Node(軟件):能夠運行JavaScript代碼,Node就是JavaScript代碼的運行環(huán)境

Node.js運行環(huán)境安裝

官網(wǎng):https://node.js.org/en/

  • LTS = Long Term Support 長期支持版,穩(wěn)定版
  • Current

Node環(huán)境安裝失敗解決辦法

  • 錯誤代碼:2502裳扯、2503(失敗原因:系統(tǒng)賬戶權(quán)限不足)解決辦法:
    • 以管理員身份運行powershell命令工具
    • 輸入運行安裝包命令msiexec/package node安裝包位置\安裝包名稱
  • 執(zhí)行命令報錯(失敗原因:Node安裝目錄寫入環(huán)境變量失敗)
    • 解決辦法:將Node安裝目錄添加到環(huán)境變量中
  • 系統(tǒng)環(huán)境變量PATH的作用
    • 存儲系統(tǒng)中的目錄抛丽,在命令行中執(zhí)行命令的時候系統(tǒng)會自動去這些目錄中查找命令的位置

Node.js快速入門

  • JavaScript由三部分組成:ECMAScript、DOM饰豺、BOM
  • Node.js是由ECMAScript及Node環(huán)境提供的一些附加API組成的铺纽,包括文件、網(wǎng)絡(luò)哟忍、路徑等等一些更加強大的API

Node.js基礎(chǔ)語法:所有的ECMAScript語法在Node環(huán)境中都可以使用

Node.js模塊化開發(fā)

JavaScript開發(fā)弊端:JavaScript在使用時存在兩大問題,文件依賴命名沖突

  • 一個功能就是一個模塊陷寝,多個模塊可以組成完整的應(yīng)用锅很,抽離一個模塊不會影響其它功能的運行

Node.js模塊化開發(fā)規(guī)范:

  • Node.js規(guī)定一個JavaScript文件就是一個模塊,模塊內(nèi)部定義的變量和函數(shù)默認(rèn)情況下在外部無法得到
  • 模塊內(nèi)部可以使用exports對象進行成員導(dǎo)出凤跑,使用require方法導(dǎo)入其他模塊
/* 模塊成員進行導(dǎo)出 */
// a.js
// 在模塊內(nèi)部定義變量
let version = 1.0;
// 在模塊內(nèi)部定義方法
const sayHi = name => `你好,${name}`;
// 向模塊外部導(dǎo)出數(shù)據(jù)
exports.version = version;
exports.sayHi = sayHi;

/* 模塊成員進行導(dǎo)入 */
// b.js
// 在b.js模塊中導(dǎo)入模塊a
let a = require('./b.js');
// 輸出b模塊中的version變量
console.log(a.version);
// 調(diào)用b模塊中的sayHi方法爆安,并輸出其返回值
console.log(a.sayHi('張三'));

模塊導(dǎo)入時,后綴名是可以省略的

模塊成員導(dǎo)出的另一種方式:exportsmodule.exports的別名(地址引用關(guān)系)仔引,當(dāng)exports對象和module.exports對象指向的不是同一個對象時扔仓,導(dǎo)出對象是最終以module.exports為準(zhǔn)

module.exports.version = version;
module.exports.sayHi = sayHi;

系統(tǒng)模塊

Node運行環(huán)境提供的API,因為這些API都是以模塊化的方式進行開發(fā)的,所以我們又稱Node運行環(huán)境提供的API為系統(tǒng)模塊

  • 例如:文件模塊包含:讀取文件咖耘、寫入文件翘簇、創(chuàng)建文件夾

系統(tǒng)模塊fs文件操作

  • f:file文件
  • s:system系統(tǒng),文件操作系統(tǒng)

讀取文件操作

const fs = require('fs');

// 讀取文件內(nèi)容
fs.reaFile('文件路徑/文件名稱'[,'文件編碼'],callBack);

========================
讀取文件語法示例

// 讀取上一級CSS目錄中的base.css
fs.readFile('../css/base.css','utf-8'(err,doc) => {
    // 如果文件讀取發(fā)生錯誤 err的值為一個對象 包含錯誤信息
    // 如果文件讀取正確 err為null
    // doc參數(shù)為文件內(nèi)容
    if(err==null){
        // 在控制臺中輸出文件內(nèi)容
        console.log(doc);
    }
});

寫入文件內(nèi)容

fs.writeFile('文件路徑/文件名稱','數(shù)據(jù)',callBack);

========================
寫入文件示例

const content = '<h3>正確使用fs.writeFile寫入文件內(nèi)容</h3>';
// 如果要寫入的文件不存在儿倒,會自動創(chuàng)建此文件
fs.writeFile('../index.html',content,err => {
    if(err !== null) {
        console.log(err);
        return;
    }
    console.log('文件寫入成功');
});

系統(tǒng)模塊path 路徑操作

  • 為什么要進行路徑拼接版保?
    • 不同的操作系統(tǒng)的路徑分隔符不統(tǒng)一
    • Windows是/\
    • Linux是/
path.join('路徑','路徑',...)

/* 示例: */
// 導(dǎo)入path模塊
const path = require('path');
// 路徑拼接
let finialPath = path.join('itcast','a','b','c.css');
console.log(finialPath); // 輸出結(jié)果 itcast\a\b\c.css

相對路徑&&絕對路徑

  • 大多數(shù)情況下使用絕對路徑,因為相對路徑有時候相對的是命令行工具的當(dāng)前工作目錄
  • 在讀取文件或者設(shè)置文件路徑時都會選擇絕對路徑
  • 使用__dirname獲取當(dāng)前文件所在的絕對路徑

第三方模塊

別人寫好的夫否,具有特定的功能的彻犁,我們能夠直接使用的模塊即第三方模塊。由于第三方模塊通常都是由多個文件組成并且被放置在一個文件夾中凰慈,所以又名

第三方模塊有兩種存在形式

  • 以js文件形式存在汞幢,提供實現(xiàn)項目具體功能的api接口
  • 以命令行工具形式存在,輔助項目開發(fā)
  • 獲取第三方模塊
    • npmjs.com:第三方模塊的存儲和分發(fā)倉庫
    • npm(mode package manager):node的第三方模塊管理工具
    • 下載:npm install 模塊名稱
    • 卸載:`npm uninstall package 模塊名稱
  • 全局安裝與本地安裝
    • 命令行工具:全局安裝
    • 庫文件:本地安裝

第三方模塊 nodemon

nodemon是一個命令行工具微谓,用以輔助項目開發(fā)

  • 在Node.js中森篷,每次修改文件都要在命令行工具中重新執(zhí)行該文件,非常繁瑣
  • nodemon使用步驟
    • 使用npm install nodemon -g 下載它(-g代表全局安裝)
    • 在命令行工具中使用nodemon命令替代node命令執(zhí)行文件

第三方模塊 nrm

nrm(npm registry manager):npm下載地址切換工具

  • npm默認(rèn)的下載地址在國外豺型,國內(nèi)下載速度慢
  • 使用步驟
    • 使用npm install nrm -g 下載它
    • 查詢可下載的地址列表 nrm ls
    • 切換npm下載地址 nrm use 下載地址名稱
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末疾宏,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子触创,更是在濱河造成了極大的恐慌坎藐,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異岩馍,居然都是意外死亡碉咆,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門蛀恩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來疫铜,“玉大人,你說我怎么就攤上這事双谆】枪荆” “怎么了?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵顽馋,是天一觀的道長谓厘。 經(jīng)常有香客問我,道長寸谜,這世上最難降的妖魔是什么竟稳? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮熊痴,結(jié)果婚禮上他爸,老公的妹妹穿的比我還像新娘。我一直安慰自己果善,他們只是感情好诊笤,可當(dāng)我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著巾陕,像睡著了一般盏混。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上惜论,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天许赃,我揣著相機與錄音,去河邊找鬼馆类。 笑死混聊,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的乾巧。 我是一名探鬼主播句喜,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼沟于!你這毒婦竟也來了咳胃?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤旷太,失蹤者是張志新(化名)和其女友劉穎展懈,沒想到半個月后销睁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡存崖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年冻记,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片来惧。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡冗栗,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出供搀,到底是詐尸還是另有隱情隅居,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布葛虐,位于F島的核電站胎源,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏挡闰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一掰盘、第九天 我趴在偏房一處隱蔽的房頂上張望摄悯。 院中可真熱鬧,春花似錦愧捕、人聲如沸奢驯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瘪阁。三九已至,卻和暖如春邮偎,著一層夾襖步出監(jiān)牢的瞬間管跺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工禾进, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留豁跑,地道東北人。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓泻云,卻偏偏與公主長得像艇拍,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子宠纯,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,697評論 2 351