国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

libxd / 3089人閱讀

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

前言

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

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

背景

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

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

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

安裝配置

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

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

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

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

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

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

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

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

1 + 2
輸出 // 3

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

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

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

Node.js

"); //響應(yīng)請(qǐ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)聽(tīng)本地host 端口8888 console.log("Server running at http://127.0.0.1:8888/"); //在終端告訴用戶該服務(wù)運(yùn)行與8888端口

保存為hello.js

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

**是不是特別簡(jiǎn)單!!!!!

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

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

什么是模塊?

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

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

如何使用包管理?

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

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

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

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

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

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

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

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

//引入模塊
// getmodule.js

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

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

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

require 不會(huì)重復(fù)加載模塊,無(wú)論調(diào)用多少次require,獲得的模塊都是同一個(gè),修改一下上面的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í)行都是同一個(gè)實(shí)例,因此hello1.setName的結(jié)果被hello2.setName覆蓋!結(jié)果由后者決定

把一個(gè)對(duì)象封裝到模塊中 例如:

//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ù)庫(kù)或者Java/.Net的類庫(kù).將某個(gè)獨(dú)立的功能封裝起來(lái),用于發(fā)布

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

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

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

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

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

待續(xù)!!

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

http 與express 安裝與搭建

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

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

結(jié)語(yǔ)

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

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

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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/90444.html

相關(guān)文章

  • JavaScript精編干貨

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

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

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

    graf 評(píng)論0 收藏0
  • CNCF案例研究:Nav

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

    waruqi 評(píng)論0 收藏0
  • CNCF案例研究:Nav

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

    Cheriselalala 評(píng)論0 收藏0
  • 2016-JavaScript之星

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

    Binguner 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<