日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

node.js初探-超越昨天的自己系列(3)

發布時間:2025/4/16 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 node.js初探-超越昨天的自己系列(3) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

超越昨天的自己系列(3)

  其實,學習這事總是被動的,有一天,當我們明白需要努力學習的時候,才發現,知識的世界是那么的浩淼,見不到岸,甚至見不到日出,迷霧重重,困惑的我們很容易甩一甩手不想繼續了。所以說:進步從來都不是件容易的事情。

------------------------------------------

node.js 接觸接觸,學習點新東西,對未來的自己總是好的。

?從這里開始:http://www.nodejs.org/

?

1,require?問題 如下代碼: http = require("http"); http作為module(模塊)導入進來,這樣就可以使用它的方法了。類似java里的import。 javascript本身不支持module,如此就出現了所謂的CommonJS

CommonJS(http://www.commonjs.org)規范的出現,其目標是為了構建JavaScript在包括Web服務器,桌面,命令行工具,及瀏覽器方面的生態系統。

CommonJS制定了解決這些問題的一些規范,而Node.js就是這些規范的一種實現。Node.js自身實現了require方法作為其引入 模塊的方法,同時NPM也基于CommonJS定義的包規范,實現了依賴管理和模塊自動安裝等功能。

基本的寫法如下:

1.modulea.js

?

module.exports.add = function add(n,m){var count = n + m;console.log(n + "+" + m + "=" + count);return count; };

?

2.moduleb.js

a = require("./modulea"); a.add(1,2);

?

比較具體的例子可以參考這文章:

http://openmymind.net/2012/2/3/Node-Require-and-Exports/

?

?2,關于回調函數

在node.js的編碼中大量使用了函數回調,先熟悉一下:

實例一

  • function?invoke_and_add(a,b){??
  • ??return?a()+b();??
  • }??
  • ??
  • function?one(){??
  • ??return?1;??
  • }??
  • ??
  • function?two(){??
  • ??return?2;??
  • }??
  • ??
  • invoke_and_add(one?,two);??
  • 結果為3;

    ?

    實例二 匿名函數

  • invoke_and_add(function(){return?1;},function(){return?2;})??
  • 我們用匿名函數替代了 one,two兩個函數。

    通過上面兩個實例,回調函數的定義為:傳遞一個函數A到另一個函數B中,并且這個函數B執行函數A。我們就說函數A叫做回調函數。如果沒有名稱,就叫做匿名回調函數

    ?

    ?至于回調和異步的關系,可以參考這篇文章:

    http://www.ruanyifeng.com/blog/2012/12/asynchronous%EF%BC%BFjavascript.html

    ?

    3,hello world

    用node.js構建一個服務器,簡單到發指,入門文章中都有提到。

    var http = require("http");http.createServer(function(request, response) {response.writeHead(200, {"Content-Type": "text/plain"});response.write("Hello World");response.end(); }).listen(8888);

    監聽8888端口,任何請求都會打印Hello World。

    ?

    4,關于實現一個調用baidu地圖的api

    通過坐標,請求具體地址,就是發送個http請求而已,連解析返回值都沒做,呵呵

    http = require("http"); var key="37492c0ee6f924cb5e934fa08c6b1676"; var location="39.983424,%20116.322987"; var output="json"; var path = "/geocoder?location=" + location + "&output=" + output + "&key=" + key var resultJson="";options={host:"api.map.baidu.com",method:"get",path:path }; //http://api.map.baidu.com/geocoder?output=json&location=39.983424,%20116.322987&key=37492c0ee6f924cb5e934fa08c6b1676 //http://api.map.baidu.com/geocoder?location=緯度,經度&output=輸出格式類型&key=用戶密鑰 req = http.request(options, function(res){//console.log('STATUS: ' + res.statusCode);//console.log('HEADERS: ' + JSON.stringify(res.headers));// 取body內容res.on('data', function (chunk) {console.log('BODY: ' + chunk);resultJson = resultJson + chunk;});console.log('resultJson: ' + resultJson); }); req.on('error', function(e) {console.log('problem with request: ' + e.message); });req.end(); //返回結果: /*** resultJson:BODY: {"status":"OK","result":{"location":{"lng":116.322987,"lat":39.983424},"formatted_address":"北京市海淀區中關村大街27號1101-08室","business":"人民大學,中關村,蘇州街","addressComponent":{"city":"北京市","district":"海淀區","province":"北京市","street":"中關村大街","street_number":"27號1101-08室"},"cityCode":131} }**/

    ?

    ?

    --------------------------------------------------

    讓我們繼續前行!

    總結

    以上是生活随笔為你收集整理的node.js初探-超越昨天的自己系列(3)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。