<em id="yyixf"><object id="yyixf"></object></em>
<th id="yyixf"></th>
  • <dd id="yyixf"><track id="yyixf"></track></dd>
  • <rp id="yyixf"><acronym id="yyixf"></acronym></rp>

  • <th id="yyixf"></th>
  • <tbody id="yyixf"><pre id="yyixf"></pre></tbody>

    <dd id="yyixf"></dd>
          1. <s id="yyixf"></s>
          2. 歡迎訪問巨立鑫電腦培訓官方網站! 網址:http://www.appleforos.com

            在線報名 | 聯系我們

            軟件編程 平面設計 APP開發 弱電工程

            Node基礎

               常人所說的NODE是后臺編程語言,這種說法其實是錯誤的。NODE只是一個工具(或者環境),我們可以把NODE安裝在服務器上,NODE提供的環境可以運行JS代碼,這樣我們就可以在服務器端使用Java編寫一些處理服務器相關操作的程序,也可以理解為JS變為了后臺編程語言。
             
            1、NODE是基于V8引擎來渲染JS的(V8是谷歌的引擎)
             
            渲染JS的速度會很快
             
            我們在使用JS開發后臺程序的時候,不需要考慮瀏覽器兼容了,使用JS的最新標準即可(ECMA)
             
            2、單線程、無阻塞I/O操作、事件驅動(event-driven)
             
            NODE是如何執行JS代碼的
             
            常用的方式有三種
             
            使用NODE的REPL(Read-Evaluate-Print-Loop,輸入-求值-輸出-循環)命令
             
            使用命令行:node xxx.js (在命令行中把xxx.js文件中的代碼執行)
             
            在webStorm中直接右鍵 -> Run xxx.js 也可以把JS代碼在NODE中執行
             
            I/O操作
             
            I(input):輸入
             
            O(output):輸出
             
            I/O操作泛指對文件及文件中內容的操作(包括:增刪改查)
             
            JS作為前端編程語言(運行在客戶端瀏覽器中),不能直接對客戶端的本地文件進行I/O操作
             
            目的是為了保證客戶端信息的安全
             
            有一些機制可以操作客戶端內容(input type=’file’),但是需要用戶手動選擇某些文件上傳才可以
             
            JS作為后臺編程語言(運行在服務器端NODE環境下),可以對服務器上的資源文件進行I/O操作
             
            NODE中絕對提供了供JS代碼操作I/O的方法(后面講到的fs模塊就是做這件事情的)
             
            letfs = require( 'fs');
            //=>異步讀?。寒惒阶x取文件中的內容就是無阻塞I/O操作
             
            //fs.readFile()//=>同步讀取
             
            letcon = fs.readFileSync( './readme.md', 'utf8');
             
            console.log(con);
             
            JS中的同步異步
             
            客戶端:
             
            定時器都是異步操作的
             
            AJAX中也提供異步操作(Promise設計模式是異步編程的處理模式)
             
            事件綁定也是異步編程
             
            回調函數也可以理解為異步編程
             
            同步:一件事一件事的來進行處理,A做完了,B才能做,A做不完,B也無法執行…
             
            異步:上一件事沒有徹底完成,下一件事可以先干著,A(異步)沒做完,B(同步)先做,等B做完了,在把A進行處理…
             
            JS本身是單線程的(有很多的進程), 一次只能做一件事情
             
            NODE中的異步操作:
             
            定時器
             
            異步的I/O
             
            回調函數
             
            setImmediate:在等待任務隊列的頂部最先執行
             
            process.nextTick:在主任務隊列的最底部執行(永遠會在setImmediate之前執行)
             
             
            事件驅動:
             
            到達某個時候做一些事情,就是事件驅動(服務器端能用異步的不用同步操作)
             
             
             
            NODE和客戶端瀏覽器的主要區別:全局對象
             
            瀏覽器全局對象: window
             
            NODE全局對象: global
             
            NODE天生就是基于模塊化開發的
            NODE中模塊這個概念非常強(強到我們每創建一個新的JS,都相當于創建了一個新的模塊)
             
            NODE是基于commonjs規范來完成模塊設計的(如何創建模塊、如何調取模塊、如何導出模塊 這些就是規范里提及的內容)
             
            CMD模塊開發思想:seajs (按需導入:用到的時候在導入進來使用)
             
            AMD模塊開發思想:requirejs (提前導入所有需要的依賴)
             
            1、自定義模塊:自己創建的
             
            2、第三方模塊:別人寫好的我來用
             
            3、內置模塊:天生自帶的
             
            自定義模塊的原理
             
            創建一個JS就相當于創建一個模塊,而模塊之間是獨立的(也可以共享),為了實現這樣的需求,每當創建一個JS,NODE都幫助我們做了很多的事情
             
            //=>NODE為了實現模塊之間的獨立,會自動包一層閉包,而且給每一個模塊傳遞五個值
            ( function(exports, require, module, __filename, __dirname){ /* * module模塊:NODE模塊管理的對象 * exports叫做導出,等同于module.exports,用來把模塊進行導出的 * require是導入的方法,通過這個方法可以把一些模塊導入到當前模塊中使用 *///=>內部代碼中有一個類似于這樣的操作,可以把一些想要供別人使用的屬性和方法暴露出來module.exports=exports= this={ fn:()=>{} };})(); //=>下一個模塊
             
            ( function(exports, require, module, __filename, __dirname){ letobj= require( 'pre'); //=>導入上邊的模塊//=>我們的obj就是上面模塊導出的對象 //{fn:()=>{}}
             
            })();
             
            require
             
            導入某個模塊,目的是使用其它模塊中的屬性和方法
             
            require( './xxx') : 指定目錄的情況下,都是為了要導入自己定義的模塊
            require( 'xxx'):不指定目錄情況下,可能是導入第三方安裝的模塊,也可能是導入內置模塊(首先到node_modules文件夾中找第三方模塊,有的話,導入的就是第三方模塊,沒有的話,看內置模塊中有沒有,內置中這個模塊,導入的就是內置模塊,內置中沒有就會報錯)
             
            module.exports
             
            把當前模塊中的某些屬性和方法導出
             
            module.exports.fn=fn;
            module.exports.a= 12;
             
            //=>上面寫起來麻煩(上面屬于向原有內置對象的堆內存中增加屬性和方法,下面屬于導出一個新的堆內存)
             
            module.exports={ fn:fn, a: 12};--- //=>直接使用exports也可以,但是這種模式只能使用原有內置內容,自己開辟新內存不行
             
            exports.fn=fn;exports={};
             
            //=>這種方式不行
             
            思考題:
             
            有三個自定義模塊
             
            A:任意數求和 sum :sum(1,2,3,4) => 10
             
            B:求平均數 avg : avg(12,23,34) =>平均數 (先求和[調取A中的sum],除以長度,求出平均數)
             
            C:最后調取 : 調取B中的avg ,傳遞幾個數,算出平均數即可
             
            第三方模塊的安裝
             
            除了npm我們還可以使用yarn來安裝模塊
             
            1、首先在全局安裝yarn
             
            npm install yarn -g
             
            2、想在項目中安裝模塊,和npm的操作步驟類似
             
            yarn init -y 生成package.json
             
            yarn add xxx 安裝具體模塊,并且保存在生產依賴項中(yarn只能把模塊安裝在本地項目中不能安裝在全局)
             
            yarn add xxx —dev 保存在開發依賴項中
             
            yarn remove xxx 移除安裝的模塊
             
            yarn install 按照依賴模塊清單,跑環境

            在線留言

            *將嚴格保護您的信息請放心填寫

            熱門案例

            更多 +

            幫助中心

            在線報名 聯系我們

            咨詢電話(9:00-17:00)

            0551-65571116
            13225607766

            在線客服

            點擊咨詢

            掃一掃咨詢

            移動端查看

            在線咨詢
            手機請直接輸入:如1860086xxxx
            座機前加區號:如0105992xxxx
            輸入您的電話號碼,點擊通話,稍后您將接到我們的電話,該通話對您完全免費,請放心接聽!
            掃描二維碼
            日本熟妇美熟bbw_德国女兵性肉体开放_波多野结衣办公室双飞_香蕉午夜福利院