亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

nodejs教程之入門

2019-11-20 13:53:52
字體:
來源:轉載
供稿:網友

前言

再不學nodeJs,我們就老了......在HTML5大浪襲來的時候,很多先輩就開始了NodeJs之旅,而那時我還在做服務器端的程序
后來轉成前端,和梯隊的距離已經很大了,因為我會服務器端語言,還干了很久,所以至今才開始學習NodeJs,向完整的前端前進
這次學習NodeJs的計劃是:
① 1-2周學習基礎知識
② 1周左右開發一個簡單項目
③ 利用NodeJs開發一套用于移動端調試的工具
④ 打包相關(這個可能比較遠了)

NodeJs特點

① 異步
從文件讀取到網絡請求,NodeJs皆以異步完成,回調函數占據重要作用,在編程模型上Node是領先的

② 事件回調
事件回調讓程序變得輕巧,但是具體怎么樣還是取決于程序員。但是回調函數在閱讀上其實還是有一定難度的

③ 單線程
Node是單線程的,如果多線程的話,這門語言水又深了,問幾句進程中的通信時很討厭的,但線程也沒有死鎖等問題
但是性能相關就有問題了,因為不能利用多核;

模塊機制/CommonJs

我們原來做服務器端的開發,如果沒有很好的組織代碼的話,后期維護非常困難,所以才會有什么MVC,什么三層架構
而現在前端的業務邏輯逐向后端靠攏,就單頁應用來說,已經超過后端的程序邏輯
頁面view不停的增加會帶來js代碼量的激增,如何很好的管理我們的前端代碼成了一個問題,所以requireJs出現了......
PS:尼瑪這段和nodeJs有一毛錢關系哇......
javascript是沒有模塊化系統的,于是就有CommonJs的提出,讓js具備開發大型應用的基礎

模塊引用

我們如果要引用一個模塊,比如數學計算相關:

var math = require('math');

模塊定義

我們如果要定義自己的模塊可以這樣干

復制代碼 代碼如下:

exports.add = function () {
  return sum;
}

如果此函數在math中定義的話,就能使用了

math.add();

模塊標識

模塊標識就是傳遞給require的參數,需要為駝峰命名,指向的是一個文件路徑,這里和requireJS很類似的

模塊實現

Node中模塊實現分為兩類,一種是系統級別的核心模塊,一種是用戶編寫的文件模塊
核心模塊在編譯過程被翻譯成了二進制文件,Node進程啟動后,一些核心的模塊會直接加載進內存(文件定位、編譯執行)
文件模塊需要動態加載,速度相對慢一點
但是一旦加載后,那些文件便會被緩存,二次引入時候便會讀取緩存文件(編譯后的文件)
這里扯遠一點,我們在使用underscore過程中,會編譯Html形成模板函數(他真的只是一個函數),其實這個就可以做緩存
在部署項目之前保存編譯過后的函數,去掉html模板文件(優化效果不知)

在node中,每個模塊都是一個對象:

復制代碼 代碼如下:

function Module(id, parent) {
  this.id = id;
  this.exports = {};
  //parent是關鍵字,不應該亂用
  this.parent = parent;
  if (parent && parent.children) {
    parent.children.push(this);
  }
  this.filename = null;
  this.loaded = false;
  this.children = [];
}

編譯和執行時引入文件模塊的最后一個階段,定位到具體文件后,node會新建一個模塊對象,然后根據路徑載入并編譯
每一個編譯成功的模塊都會將其文件路徑作為索引緩存在Module._cache上

每個模塊文件都存在require、exports、module三個變量,但是在文件中并未定義(__filename__、__dirname__ 變量也是)
其實在編譯過程中,Node對javascript文件內容進行了頭尾包裝(相當于自定義函數傳入window)

復制代碼 代碼如下:

(function (exports, require, module, __filename__, __dirname__) {
  var math = require('math');
  exports.area = function (radius) {
    return '';
  };
});

這樣,模塊與模塊之間做了隔離,不會互相影響,這里和underscore的編譯有些類似......

包與NPM

Node組織了自身的核心模塊,所以第三方文件模塊可以有序的編寫和使用,但是在第三方模塊中,模塊與模塊之間仍然散列在各地
相互之間不能直接引用,在模塊外包和NPM則是將聯系建立起來的一種機制
PS:很多模塊會形成一個包,這個包的概念和java包的概念,才#程序集的概念應該相似

一個包結構解壓后會形成幾個文件:
① package.json 描述文件
② bin 可執行二進制目錄
③ lib javascript代碼目錄
④ doc 文檔(尼瑪基本沒有)
⑤ test demo

以上都是CommonJS包的規范的一些東西,但是我們稍微了解一下便可(初學嘛),NPM則需要熟練掌握,借助NPM我們可以熟練安裝管理包

安裝依賴包

安裝依賴包是常用方法:

npm install express
執行后就會在當前目錄下創建node_modules目錄,然后再其下面創建express目錄......
PS:express是NodeJs上流行的web開發框架,幫助我們快速開發一個web應用
安裝結束后就可調用了:

復制代碼 代碼如下:

var express = require('express');

結語

這段簡單結束,后面我們項目實戰過程逐步深化

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
热99精品只有里视频精品| 亚洲免费一级电影| 亚洲美女精品久久| 欧美视频一二三| 久久免费视频这里只有精品| 成人羞羞国产免费| 国产69精品久久久久9999| 亚洲成人激情在线| 日韩中文字幕在线视频播放| 国产精品免费一区豆花| 日韩专区在线播放| 日韩小视频在线观看| 国产精彩精品视频| 欧美成人午夜激情| 久国内精品在线| 欧美在线视频一区| 欧美成人国产va精品日本一级| 亚洲欧美国产精品va在线观看| 国产日韩欧美在线看| 久久夜色精品国产亚洲aⅴ| 亚洲成av人影院在线观看| 91在线免费网站| 91色琪琪电影亚洲精品久久| 尤物99国产成人精品视频| 欧美老女人bb| 亚洲在线第一页| 欧美一区二区三区四区在线| 色视频www在线播放国产成人| 国产视频精品自拍| 久久久久久美女| 日韩小视频在线观看| 成人欧美一区二区三区黑人| 美女撒尿一区二区三区| 91国产视频在线播放| 欧美在线视频观看| 精品在线小视频| 国外成人在线视频| 亚洲一区二区免费| 日韩成人在线免费观看| 国产一区深夜福利| 亚洲成成品网站| 国产综合视频在线观看| 国产剧情日韩欧美| 久久国产精品久久久久| 国产欧美中文字幕| 伊人久久综合97精品| 亚洲美女www午夜| 国内偷自视频区视频综合| 日韩精品www| 亚洲欧美国产精品专区久久| 热re99久久精品国产66热| 精品久久久久久| 国产一区二区三区在线视频| 57pao国产精品一区| 亚洲精品99久久久久| 日韩欧美国产视频| 亚洲国产精品久久91精品| 国产丝袜一区二区| 成人黄色片在线| 日韩欧美主播在线| 亚洲最大av在线| www.欧美精品| 欧美大胆在线视频| 国产日韩av在线播放| 国产精品久久久精品| 国产原创欧美精品| 亚洲欧美日韩国产中文专区| 一区二区国产精品视频| 欧美在线视频一区二区| 国产精品网红直播| 萌白酱国产一区二区| 欧美日韩中文字幕综合视频| 国产精品av电影| 亚洲视频在线播放| 国产欧美在线观看| 欧美性黄网官网| 国产成人aa精品一区在线播放| xvideos成人免费中文版| 成人a视频在线观看| 久久久久久999| 久久精品国产精品| 亚洲精品小视频在线观看| 欧美精品一区二区免费| 久久躁狠狠躁夜夜爽| 国产精品久久久久久亚洲调教| 国产精品久久久久91| 国产精品视频在线观看| 欧美日韩精品在线视频| 国产69久久精品成人| 日韩av第一页| 97视频免费在线看| 精品偷拍一区二区三区在线看| 日韩电影大片中文字幕| 国产黑人绿帽在线第一区| 久久中文久久字幕| 成人网在线免费看| 久久成人精品电影| 国产一区二区三区欧美| 欧美日韩国产综合视频在线观看中文| 欧美成人精品一区二区| 亚洲欧美制服综合另类| 热99精品里视频精品| 国产日韩欧美91| 青青青国产精品一区二区| 亚洲成人网在线观看| 亚洲国产精品视频在线观看| 亚洲人成77777在线观看网| 欧美高清激情视频| 97久久伊人激情网| 亚洲精品成a人在线观看| 国产91|九色| 在线观看亚洲视频| 日韩av日韩在线观看| 成人h片在线播放免费网站| 亚洲最大福利网| 久久69精品久久久久久国产越南| 亚洲精选中文字幕| 97超级碰在线看视频免费在线看| 日韩美女视频免费看| 国产精品av在线| 亚洲japanese制服美女| xxx欧美精品| 亚洲欧美激情四射在线日| 久久久久久久久久久国产| 777国产偷窥盗摄精品视频| 中文字幕欧美亚洲| 91欧美激情另类亚洲| 欧美精品在线播放| 日韩毛片在线观看| 91在线中文字幕| 亚洲日韩中文字幕在线播放| 91在线观看免费网站| 欧美性生交大片免网| 欧美成人精品不卡视频在线观看| 精品久久久国产精品999| 91国内免费在线视频| 久久国内精品一国内精品| 欧美成人全部免费| 久久精品成人一区二区三区| 欧美精品手机在线| 成人免费网站在线| 日韩亚洲成人av在线| 日韩精品在线私人| 亚洲精品久久久久中文字幕欢迎你| 亚洲欧美日韩成人| 国产精品午夜一区二区欲梦| 亚洲精品国产综合久久| 国产免费一区二区三区香蕉精| 欧洲亚洲在线视频| 免费91在线视频| 性欧美激情精品| 91在线播放国产| 久久91精品国产91久久跳| 欧美在线亚洲在线| 欧美日韩国产色| 一本色道久久88亚洲综合88| 亚洲福利小视频| 国产精品2018| 欧美中文字幕在线| 国产精品一区二区三区毛片淫片| 成人午夜小视频| 日韩精品视频在线观看免费| 日韩视频第一页| 国产美女主播一区|