成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

幾分鐘的閱讀讓你明白node.JS的強(qiáng)大 走上web后端開發(fā)的道路 (一版)

libxd / 3096人閱讀

摘要:這些特性不僅帶來了大的性能提升,還減少多線程程序設(shè)計(jì)的復(fù)雜性,進(jìn)而提高了開發(fā)效率。由公司建立的云計(jì)算平臺率先支持了。

前言

本文章主要寫給那些想了解node語言的開發(fā),我的目標(biāo)希望大家通過閱讀本篇文章能夠簡單使用node進(jìn)行開發(fā),以及了解一些事件驅(qū)動的異步編程風(fēng)格,主要分node的背景,安裝配置,模塊創(chuàng)建引用等幾個方面描述

建議大家在閱讀本篇文章途中 可以親自嘗試一下我所帶來的小例子,這樣才能更好的掌握!

背景

Node.js,或者Node,是一個可以讓JavaScript 運(yùn)行在服務(wù)器端的平臺。它可以讓JavaScript 脫離瀏覽器的束縛運(yùn)行在一般的服務(wù)器環(huán)境下,就像運(yùn)行Python、Perl、PHP、Ruby程序一樣。你可以用Node.js 輕松地進(jìn)行服務(wù)器端應(yīng)用開發(fā),Python、Perl、PHP、Ruby 能做的事情Node.js 幾乎都能做,而可以做得更好。

Node.js 是一個為實(shí)時Web (Real-timeWeb) 應(yīng)用開發(fā)而誕生的平臺,它從誕生之初就充分考慮在實(shí)時響應(yīng)、超大規(guī)模數(shù)據(jù)要球下架構(gòu)的可擴(kuò)展性。這使得它摒棄了傳統(tǒng)平臺依靠多線程來實(shí)現(xiàn)高并發(fā)的設(shè)計(jì)思路,而采用了線程異式I/O、事件驅(qū)動式的程序設(shè)計(jì)模型。這些特性不僅帶來了大的性能提升,還減少多線程程序設(shè)計(jì)的復(fù)雜性,進(jìn)而提高了開發(fā)效率。Node.js 最初是由Ryan Dahl 發(fā)起的開源項(xiàng)目,后來被Joyent 公司注意到。Joyent 公司將Ryan Dahl 招人旗下,因此現(xiàn)在的Node.js 由Joyent 公司管理并維護(hù)。盡管它誕生的時間( 2009年) 還不長,但它的周圍配經(jīng)形成了一個龐大的生態(tài)系統(tǒng)。Nodejs 有著強(qiáng)大而靈活的包管理器(nodepackagemanager,npm),目前已經(jīng)有上萬個第三方模塊,其中有網(wǎng)站開發(fā)框架,有MySQL、PostgreSQL、MongoDB 數(shù)據(jù)庫接口,有模板語言解析、CSS 生成T 具郵件、加密、圖形、調(diào)試支持,甚至還有圖形用戶界面和操作系統(tǒng)API 具。由VMware 公司建立的云計(jì)算平臺CloudFoundry 率先支持了Node.js。2011年6月,微軟宣布與Joyent 公司合作,將Node.js 移植到Windows,同時Windows Azure 云計(jì)算平臺也支持Node.js。Node.js 目前還處在迅速發(fā)展階段,相信在不久的未來它一定會成為流行的Web應(yīng)用開發(fā)平臺。

讓我們從現(xiàn)在開始,一同探索Node.js 的美妙世界吧!

安裝配置

window上面很容易安裝node 只需要訪問node官網(wǎng),點(diǎn)擊DownLoad鏈接,然后選擇window Installer,下載安裝包,下載完成后打開 點(diǎn)擊Next 如圖,就可以安裝完成

為了檢測安裝是否完成,打開命令行CMD,然后輸入node 如果下載成功 便進(jìn)入node交互模式 如圖:

通過這種方式安裝還會自帶NPM 我們可以直接在使用它!

Mac OS X上安裝Node.js
只需要訪問node官網(wǎng),點(diǎn)擊DownLoad鏈接,然后選擇Macintosh Installer,下載安裝包,下載完成后運(yùn)行安裝包,根據(jù)提示完成安裝:

node和npm都會安裝到/usr/local/bin目錄下,安裝過程需要管理員權(quán)限,安裝完后在終端輸入node回車進(jìn)入node交互模式,如果提示-bash:node :command not found 那就是沒有已正確的方式安裝完成。需要重新安裝

安裝完成之后 練習(xí)一下

進(jìn)入node交互環(huán)境

consoloe.log("hello,node.js")
輸出 // hello,node.js

1 + 2
輸出 // 3

可以進(jìn)行加減乘除 運(yùn)算

接下來創(chuàng)建一下第一個應(yīng)用 也可以叫模塊 !
打開你所常用的文本編輯器輸入

 var http = require("http");  //通過require對象(指令)來引用http模塊
                   //參數(shù)request代表是發(fā)送請求對象    response代表是響應(yīng)請求的對象
 http.createServer(function(req,res){ //通過http對象的方法createServer創(chuàng)建一個服務(wù)器
    res.writeHead(200, {"Content-Type": "text/html"}); //規(guī)定數(shù)據(jù)的content-type文本類型為text/html
    res.write("

Node.js

"); //響應(yīng)請求然后write 字體大小為h1標(biāo)準(zhǔn)的node.js字樣 res.end("

Hello World

"); //發(fā)送響應(yīng)數(shù)據(jù)為 hello world; }).listen(8888); //該服務(wù)監(jiān)聽本地host 端口8888 console.log("Server running at http://127.0.0.1:8888/"); //在終端告訴用戶該服務(wù)運(yùn)行與8888端口

保存為hello.js

然后你打開當(dāng)前目錄,打開命令行輸入 node hello.js 你就會在命令行處看到Server running at http://127.0.0.1:8888/ ,然后就可以打開瀏覽器輸入這個http://127.0.0.1:8888/ 就可以看到剛才寫的響應(yīng)數(shù)據(jù)

**是不是特別簡單!?。。?!

模塊的創(chuàng)建與引用

學(xué)習(xí)node.JS必須懂的一些地方

什么是模塊?

如何創(chuàng)建并加載模塊?

如何創(chuàng)建一個包?

如何使用包管理?

這次先講前倆點(diǎn),和稍微滲透3 4 點(diǎn)

第一點(diǎn)!
模塊是Node.js應(yīng)用程序的基本組成部分,文件和模塊是一一對應(yīng)的。換句話說,一個Node.js文件就是一個模塊,這個文件可能是JavaScript代碼,JSON或者編譯過的C/C++擴(kuò)展。

var http= require("http"),其中http是Node.js的一個核心模塊,其內(nèi)部是用C++實(shí)現(xiàn)的,外部用Javascript封裝。我們通過require函數(shù)獲取這個模塊 ,從而才能使用其中的對象。

第二點(diǎn)!
在Node.js,創(chuàng)建一個模塊非常簡單,因?yàn)橐粋€文件就是一個模塊,我們要關(guān)注的問題僅僅只是如何在其他文件獲取這個模塊,Node.js提供了exports和require倆個對象,其中exports是模塊公開的接口,require用于從外部獲取一個模塊的接口,即獲取模塊的exports對象。

// 創(chuàng)建模塊
//module.js

var name;
exports.setName = function(thyName){
    name = thyName;
}

exports.sayHello = function() {
    console.log("hello" + name)
}

同級目錄下創(chuàng)建getmodule.js

//引入模塊
// getmodule.js

var myModule = require("./module");
myModule.setName("zhangsan");
myModule.sayHello();

在命令行運(yùn)行node getmodule.js   輸出// hello zhangsan

以上該例子中,module.js通過exports對象吧setName 和 sayHello作為模塊的訪問接口,在getmodule.js中通過
require("./module")加載這個模塊,然后就可以之間訪問module.js中exports對象的成員函數(shù)了

require 不會重復(fù)加載模塊,無論調(diào)用多少次require,獲得的模塊都是同一個,修改一下上面的getmodule.js

//修改getmodule.js 
var hello1 = require("./module");
hello1.setName("zhangsan");

var hello2 = require("./module");
hello2.setName("zhangsan2");

hello1.sayHello(); // 輸出結(jié)果為zhangsan2!

因?yàn)樽兞縣ello1和變量hello2執(zhí)行都是同一個實(shí)例,因此hello1.setName的結(jié)果被hello2.setName覆蓋!結(jié)果由后者決定

把一個對象封裝到模塊中 例如:

//hello.js

function hello (){
  var name;
  
  this.setName = function(thyName) {
    name = thyName;
  }
  
  this.sayHello = function() {
     console.log("hello" + name);
  }

 };

module.exports = Hello; //導(dǎo)出該模塊接口; 如果按導(dǎo)出方法哪有 exports.Hello = Hello 引入require("./hello").Hello;

 按上面module.exports = Hello導(dǎo)出 引入模塊;
 

 //getHello.js

 var Hello = require("./hello");
 hello = new Hello();
 hello.setName("zhangsan");
 hello.sayHello(); //輸出hello zhangsan

第三點(diǎn) /創(chuàng)建包

 包是在模塊基礎(chǔ)上更深一步的抽象,Node.js的包類型與C/C++的函數(shù)庫或者Java/.Net的類庫.將某個獨(dú)立的功能封裝起來,用于發(fā)布

更新,依賴管理和版本控制.Node.js根據(jù)CommonJS規(guī)范實(shí)現(xiàn)了包機(jī)制,開發(fā)了npm來解決包發(fā)布和獲取;

 node.js的包就是一個目錄,包含一個JSON格式的包說明文件package.json.   package.json必須在包的頂層目錄下,其他遵循CommonJS的規(guī)范不是特別嚴(yán)格

第四點(diǎn) /包管理

node.js包管理,即npm是Node.js官方提供的包管理工具,它已經(jīng)成為了Node.js包的標(biāo)準(zhǔn)發(fā)布平臺,npm提供了命令行工具,你可以很方便去下載 安裝 升級 刪除包! 也可以發(fā)布 維護(hù)你自己的包!

   npm install(i) pagejson_name //下載的格式 本地模式  末尾加-g (--global) 就是全局模式
   
   npm uninstall  pagejson_name //刪除的格式  末尾加-g (--global) 就是全局模式
   
   //等等很多命令 可以去搜索 就不一一列舉了
   
   
   
   

待續(xù)!!

本來應(yīng)該把node一些核心模塊一塊說了的 比如全局對象 process console 事件驅(qū)動events 事件發(fā)射器 error事件 繼承EventEmitter 等等
但是今天確實(shí)身體不適,還請諒解,可能會休息幾天 所以提前把這版發(fā)出來,暫時把他定位為第一版 對于node的探索,我還會更新 第二版的,下一章節(jié)除了會補(bǔ)全這次沒有講到了還會帶大家利用node來進(jìn)行web開發(fā)!初步定稿為1月2號!

http 與express 安裝與搭建

路由的控制 如工作原理 創(chuàng)建路由規(guī)則等等

模板引擎 什么是?怎么使用?如何利用布局?等等

結(jié)語

希望大家可以通過看這篇文章能有收獲,最簡單的證明就是把項(xiàng)目用到node的配置文件再去拿出來看看,最起碼知道它是怎么個流程,不一定知道它干什么,但是知道它從哪來 是導(dǎo)出還說引用!這就是進(jìn)步!

//進(jìn)一步學(xué)習(xí)參考這篇書 學(xué)習(xí)
https://www.nodebeginner.org/

不要做幻想的乞丐,要做幸福的創(chuàng)造者!??!

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/90444.html

相關(guān)文章

  • JavaScript精編干貨

    摘要:老姚淺談怎么學(xué)鑒于時不時,有同學(xué)私信問我老姚,下同怎么學(xué)前端的問題。擼碼聽歌,全局控制。 淺析用 js 解析 xml 的方法 由于項(xiàng)目上需要解析 xml,于是各種百度,然后自己總結(jié)了下各個主流瀏覽器解析 xml 的方法,只能是很淺顯的知道他的用法,但是還沒有深層次的研究。 裝 X - 建立自己的斗圖網(wǎng)站庫 之前加過一個斗圖群,看到很多經(jīng)典的表情,然后就收藏到了 QQ, 迫于本屌絲開不起...

    Fourierr 評論0 收藏0
  • 前端基礎(chǔ)

    摘要:談起閉包,它可是兩個核心技術(shù)之一異步基于打造前端持續(xù)集成開發(fā)環(huán)境本文將以一個標(biāo)準(zhǔn)的項(xiàng)目為例,完全拋棄傳統(tǒng)的前端項(xiàng)目開發(fā)部署方式,基于容器技術(shù)打造一個精簡的前端持續(xù)集成的開發(fā)環(huán)境。 這一次,徹底弄懂 JavaScript 執(zhí)行機(jī)制 本文的目的就是要保證你徹底弄懂javascript的執(zhí)行機(jī)制,如果讀完本文還不懂,可以揍我。 不論你是javascript新手還是老鳥,不論是面試求職,還是日...

    graf 評論0 收藏0
  • CNCF案例研究:Nav

    摘要:在評估了許多業(yè)務(wù)流程解決方案后,該公司決定采用在上運(yùn)行的。我們必須不停運(yùn)行,我們必須保持可用,我們必須有最少的停機(jī)時間。該公司將其群集隔離到一個不受限制的區(qū)域和一個限制區(qū)域,該區(qū)域有自己的一組節(jié)點(diǎn),用于數(shù)據(jù)保護(hù)。 一家初創(chuàng)公司如何通過Kubernetes將其基礎(chǔ)設(shè)施成本降低50% showImg(https://segmentfault.com/img/bVbqosb?w=1024&h...

    waruqi 評論0 收藏0
  • CNCF案例研究:Nav

    摘要:在評估了許多業(yè)務(wù)流程解決方案后,該公司決定采用在上運(yùn)行的。我們必須不停運(yùn)行,我們必須保持可用,我們必須有最少的停機(jī)時間。該公司將其群集隔離到一個不受限制的區(qū)域和一個限制區(qū)域,該區(qū)域有自己的一組節(jié)點(diǎn),用于數(shù)據(jù)保護(hù)。 一家初創(chuàng)公司如何通過Kubernetes將其基礎(chǔ)設(shè)施成本降低50% showImg(https://segmentfault.com/img/bVbqosb?w=1024&h...

    Cheriselalala 評論0 收藏0
  • 2016-JavaScript之星

    摘要:在,是當(dāng)之無愧的王者,贏得了與之間的戰(zhàn)爭,攻陷了的城池。于月發(fā)布了版本,這一版本為了更好的表現(xiàn)加入了渲染方式。前端框架這個前端框架清單可能是年疲勞的元兇之一。的創(chuàng)建者,目前在工作為尋找構(gòu)建簡單性和自主配置性之間的平衡做了很大的貢獻(xiàn)。 春節(jié)后的第一篇就從這個開始吧~本文已在前端早讀課公眾號上首發(fā) 原文鏈接 JavasScript社區(qū)在創(chuàng)新的道路上開足了馬力,曾經(jīng)流行過的也許一個月之后就過...

    Binguner 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<