Node.js使用大全

先回顧一下我們前端的主要工作:

1、寫頁面 --- HTML
2低零、美化頁面 ----- CSS
3壶谒、調(diào)用后臺(tái)接口API去請(qǐng)求數(shù)據(jù)或 提交數(shù)據(jù) ----- JS
例如:
  前端核心之一技能:Ajax --> XHR、JQuery础米、$.agax()分苇、$.get、$.post
        其中 JQuery 更多的是操作 DOM 方面的屁桑。
4医寿、HTML5 和 CSS3  新語法、新特效
      例如:
            動(dòng)畫蘑斧、移動(dòng)web的屏幕適配(媒體查詢)
5靖秩、Angular  ---- 單頁面應(yīng)用程序
6、Vue  ---- 基于Node
7竖瘾、微信小程序 --- 官網(wǎng)
8沟突、React Native  --- ios、Android 混合開發(fā)
准浴。事扭。。

后端主要工作:

1乐横、主要進(jìn)行業(yè)務(wù)邏輯的操作
2、例如: 數(shù)據(jù)的增加今野、刪除葡公、修改、查詢条霜、操作數(shù)據(jù)庫
3催什、對(duì)外暴露API 接口 ---- (API后臺(tái)的靈魂)

前端(PC、IOS宰睡、Android等)和 后端 的協(xié)作流程蒲凶?

同時(shí)進(jìn)行開發(fā):
1、前端寫頁面拆内,調(diào)用后臺(tái)的接口旋圆;(調(diào)用API)
2、后臺(tái)接受前端發(fā)送過來的請(qǐng)求麸恍,進(jìn)行業(yè)務(wù)處理灵巧,處理結(jié)果返回給前端。(提供API)

1抹沪、學(xué)習(xí)Node首先要學(xué)習(xí)如何使用 npm 包管理器

區(qū)別 NPM刻肄、Github、Git
  • npm包管理器 和iOS 的 CocoaPods 很相似融欧,里面托管了各種各樣的包敏弃,主要是方便管理和維護(hù)。
  • Github噪馏、碼云 代碼托管平臺(tái)(托管了各種各樣的代碼倉庫)
  • Git是用來對(duì)代碼進(jìn)行分支版本管理
安裝包
  • 第一次使用 先初始化(在當(dāng)前文件打開終端) npm init -y 麦到,你會(huì)看到工程里有個(gè) package.json虹茶,將來所有安裝的包,都會(huì)記錄到這個(gè)文件中

  • 使用 npm install 包名 --save/--save-dev 去安裝包隅要;其中蝴罪,install 可以簡(jiǎn)寫成 i ;

  • --save 表示把包安裝到部署依賴中(在開發(fā)和部署上線都需要使用的包)--save可以簡(jiǎn)寫成 -S,
    save-dev 表示安裝到開發(fā)依賴(只在項(xiàng)目開發(fā)階段需要用到的包)--save-dev可以簡(jiǎn)寫成 -D;

  • npm i 包名 -g ,其中,-g 表示全局安裝某些包步清,通過-g安裝的包都在C:\Users\用戶名\AppData\Roaming\npm下面

卸載包
  • npm uninstall 包名 --save/--save-dev或者npm remove 包名 --save/--save-dev

yarn

- yarn和npm的作用完全一樣要门,都是用來管理項(xiàng)目中的第三方依賴包的!
- yarn是Facebook公司推出來的一套包管理工具廓啊!
【React欢搜,尤其是ReactNative,默認(rèn)就是用Yarn去裝包的】
- yarn會(huì)緩存曾經(jīng)安裝過的包谴轮;但是npm也會(huì)緩存炒瘟,但是效果不如yarn明顯;

學(xué)習(xí)當(dāng)然離不開 nodejs文檔.

Node它是什么第步?

Node.js 是一個(gè)基于 Chrome V8 引擎的 JavaScript 運(yùn)行環(huán)境疮装。
Node.js 使用了一個(gè)事件驅(qū)動(dòng)、非阻塞式 I/O 的模型粘都,使其輕量又高效廓推。
Node.js 的包管理器 npm,是全球最大的開源庫生態(tài)系統(tǒng)翩隧。

Node可以做什么樊展?

  • node屬性中后端。
  • Node可以作為前端的一個(gè)工具去使用堆生,通過NPM安裝好用的工具专缠;Node可以開發(fā)一些前端的工具【i5ting_toc】
  • Node能做服務(wù)器
  • Node還可以操作數(shù)據(jù)庫并對(duì)外提供數(shù)據(jù)接口
  • Node能做即時(shí)聊天(到時(shí)會(huì)分享怎么做!J缙汀@酝瘛)

總結(jié):Node.js 就是一個(gè)Javascript的服務(wù)端運(yùn)行環(huán)境(依賴于Chrome 的V8引擎),為Javascript提供了服務(wù)器端編程的能力糯景!

怎么運(yùn)行第一文件嘁圈?

  • 直接在命令行中輸入 node 空格文件名,回車蟀淮。

下面是講解 常用的模塊化

模塊化

概念:
把一些功能類似的代碼最住,封裝到一個(gè)單獨(dú)的文件中去,這些單獨(dú)抽離出來的代碼文件怠惶,就能夠提供各種各樣好用的功能涨缚;這種通過代碼功能分割文件的方式,叫做程序中的模塊化。

  • 個(gè)人認(rèn)為模塊化這是它的亮點(diǎn)之一(高性能脓魏、異步操作等都是哈兰吟!)。
  • Node的模塊化好處是:
  • 一個(gè) js 文件就是一個(gè)功能模塊茂翔;保證了每個(gè)文件的功能(職能)單一混蔼;
  • 需要什么特定的功能,直接調(diào)用某一個(gè)特定的模塊珊燎;

怎么模塊化惭嚣?

  • request: Node要求使用內(nèi)置或第三方的模塊時(shí),要引用 request('xxxxx')
  • module: 它就是一個(gè)模塊悔政。(node里一個(gè)js 文件就是一個(gè)模塊M硗獭!D惫)
  • exports: 在Node的模塊中槽地,如果這個(gè)模塊需要向外暴露一些成員,供其他JS模塊使用??? 怎么辦芦瘾?捌蚊?? ----- 使用 exports.暴露的成員

exports 和 module.exports 的區(qū)別

  • 通過 module.exports 可以使用 " . " 點(diǎn) 的形式追加屬性旅急,也可以使用 " = "等號(hào) 直接賦值的形式導(dǎo)出成員逢勾;
  • exports 只能通過 " . " 點(diǎn)的形式追加屬性;不能 使用 “=”等號(hào) 直接賦值的形式藐吮!
注意:

在一個(gè) module 中,最終向外暴露的成員逃贝,以 module.exports 指向的對(duì)象為準(zhǔn)谣辞!

模塊加載規(guī)則

  1. 優(yōu)先從緩存中加載
  2. 加載核心模塊:優(yōu)先從緩存中加載;如果緩存中沒有的話沐扳,再去執(zhí)行加載核心模塊泥从!
  3. 自己的模塊:優(yōu)先從緩存中加載;如果緩存中沒有的話沪摄,再去執(zhí)行加載用戶模塊躯嫉!
用戶模塊的查找規(guī)則:
如果不寫后綴名,則先嚴(yán)格按照給定的文件名去查找模塊并加載執(zhí)行杨拐;
index   ->  index.js  ->   index.json    ->  index.node

模塊化

  1. node中的模塊化基于commonJS:最顯著的特點(diǎn)所有依賴項(xiàng)都是同步加載的F聿汀!哄陶!
  2. commonJS由于是一個(gè)同步加載規(guī)范帆阳,所以不適合瀏覽器端使用;于是屋吨,瀏覽器端需要使用異步的模塊加載機(jī)制
由于 node是具有中后臺(tái)的能力蜒谤,所以后臺(tái)就經(jīng)常使用到文件操作:(異步的山宾,注意坑!)

解決異步的坑:

1鳍徽、嵌套 2资锰、創(chuàng)建一個(gè)計(jì)數(shù)器count,然后判斷是否加載完畢 3阶祭、promise
  // forEach 的使用
  data.forEach((value, index) => {}

1绷杜、node常見的文件操作

fs.Stats 對(duì)象提供了一個(gè)文件的信息。

  1. fs.readFile
  2. fs.writeFile
  3. fs.appendFile
    ...
寫出一個(gè)類似于 Apache 服務(wù)器的服務(wù)胖翰?(4步)
  var http = require('http')              // 引入 require(‘http’)
  var server = http.createServer()        // 創(chuàng)建 服務(wù)
  server.listen('3000', () => {           // 鏈接 listen      
      console.log('http://127.0.0.1:3000')
  })     
  server.on('request', (req, res) => {     // 請(qǐng)求
    
  }

2接剩、node怎么使用art-template 模板的使用?

art-template官方文檔

引入 art-template

  • var template = require('art-template')
    創(chuàng)建服務(wù)器(上面步驟)

  • 和之前使用的渲染顯示到頁面的方式一樣:

         //  顯示 {list:allArr} 數(shù)組要轉(zhuǎn)對(duì)象(模板都是對(duì)象)
            if (count == data.length) {
               var html = template(__dirname + "/datas/list.html", {list: allArr})
                res.end(html)   // res: response  end(): 表示輸出值或渲染
            }
    
注意:nodejs res.end和res.send 區(qū)別
簡(jiǎn)單來說就是   如果服務(wù)器端沒有數(shù)據(jù)返回到客戶端 那么就可以用 res.end

但是 如果 服務(wù)器端有數(shù)據(jù)返回到客戶端 這個(gè)時(shí)候必須用res.send ,不能用 res.end(會(huì)報(bào)錯(cuò))

待更新萨咳。懊缺。。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末培他,一起剝皮案震驚了整個(gè)濱河市鹃两,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌舀凛,老刑警劉巖俊扳,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異猛遍,居然都是意外死亡馋记,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門懊烤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來梯醒,“玉大人,你說我怎么就攤上這事腌紧∪紫埃” “怎么了?”我有些...
    開封第一講書人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵壁肋,是天一觀的道長(zhǎng)号胚。 經(jīng)常有香客問我,道長(zhǎng)浸遗,這世上最難降的妖魔是什么猫胁? 我笑而不...
    開封第一講書人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮乙帮,結(jié)果婚禮上杜漠,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好驾茴,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開白布盼樟。 她就那樣靜靜地躺著,像睡著了一般锈至。 火紅的嫁衣襯著肌膚如雪晨缴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,708評(píng)論 1 305
  • 那天峡捡,我揣著相機(jī)與錄音击碗,去河邊找鬼。 笑死们拙,一個(gè)胖子當(dāng)著我的面吹牛稍途,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播砚婆,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼械拍,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了装盯?” 一聲冷哼從身側(cè)響起坷虑,我...
    開封第一講書人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎埂奈,沒想到半個(gè)月后迄损,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡账磺,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年芹敌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片垮抗。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡党窜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出借宵,到底是詐尸還是另有隱情,我是刑警寧澤矾削,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布壤玫,位于F島的核電站,受9級(jí)特大地震影響哼凯,放射性物質(zhì)發(fā)生泄漏欲间。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一断部、第九天 我趴在偏房一處隱蔽的房頂上張望猎贴。 院中可真熱鬧,春花似錦、人聲如沸她渴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽趁耗。三九已至沉唠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間苛败,已是汗流浹背满葛。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留罢屈,地道東北人嘀韧。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像缠捌,于是被迫代替她去往敵國(guó)和親锄贷。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1 Webpack 1.1 概念簡(jiǎn)介 1.1.1 WebPack是什么 1鄙币、一個(gè)打包工具 2肃叶、一個(gè)模塊加載工具 3...
    Kevin_Junbaozi閱讀 6,673評(píng)論 0 16
  • Node.js是目前非常火熱的技術(shù)十嘿,但是它的誕生經(jīng)歷卻很奇特因惭。 眾所周知,在Netscape設(shè)計(jì)出JavaScri...
    w_zhuan閱讀 3,616評(píng)論 2 41
  • 版權(quán)聲明:本文為博主原創(chuàng)文章勿决,未經(jīng)博主允許不得轉(zhuǎn)載。 webpack介紹和使用 一招盲、webpack介紹 1低缩、由來 ...
    it筱竹閱讀 11,139評(píng)論 0 21
  • 寫在前面的話 閱讀本文之前,先看下面這個(gè)webpack的配置文件曹货,如果每一項(xiàng)你都懂咆繁,那本文能帶給你的收獲也許就比較...
    不忘初心_9a16閱讀 3,235評(píng)論 0 17
  • “生活不止眼前的茍且還有詩和遠(yuǎn)方的田野”……然而礼饱,歌詞里唱的總是理想的坏为,生活里出現(xiàn)的總是現(xiàn)實(shí)的究驴。 某天晚上下班后,...
    荷葉MM閱讀 537評(píng)論 3 2