node.js

來源:互聯網
上載者:User

標籤:https   參數   read   基於   source   size   pen   require   mysql資料庫   

1.nodeJs概述

後面好像有個js,那和咱們腦子裡js一樣嗎~~~哈哈哈,你猜

咱們瞭解的javascript裡有幾種對象呢??
內建對象,本機物件,宿主對象
咱們的js是運行在用戶端的呢

node.js是運行於服務端的語言,那麼它的競爭者有誰呢?php、jsp、asp.net等等

nodejs裡有什麼對象呀,除了一些個ecma的原生對象之外,還有1000+的對象,哈哈哈哈哈哈,6不6

對於咱們來說,一種語言通吃前後端,並且可以增加咱們的競爭力,哈哈哈,控制下自己的情緒
node是使用C++編寫的基於V8引擎的JS運行環境,同時提供了很多基於ECMAScript的擴充項物件。

那麼nodejs和其他後端程式設計語言有什麼區別嘞
nodejs是基於ECMAScript語言開發的服務端語言,可以編寫獨立的服務端應用,也可以向用戶端提供Web內容,無需藉助與任何Web伺服器(apache)可以去串連檔案系統,還能操作資料庫

nodejs適合高並發、I/O密集型,可伸縮的網路應用,資料寫入讀取的應用比較好

nodejs不適合CPU密集型的應用,各種計算的就不太適合

nodejs的效能怎麼樣呢,和php來做比較的話,如果有3000並發串連,持續30秒的壓力下嘞
輸出“hello world” 的響應的話呢,
php每秒響應3624個請求
nodejs每秒響應7677個請求

那麼如果操作MySql呢
php每秒響應請求為1293個
nodejs每秒響應請求3000個

也就說nodejs在做web應用的時候,要比php好很多

所以說node的效能是不是老好了呢

nodejs的價值在哪呢,對於咱們來說,最好的,就是node提供給咱們的機會和平台。


2.nodejs的兩種運行模式
1.互動模式:REPL模式 read evaluate print loop
也就直接在cmd輸入node後就能在cmd裡去寫js代碼,就和Google瀏覽器控制台一樣,而且,內建列印功能,這就是識別咱們的操作,並且列印出來,適合做測試,但是注意喲,沒有BOM和DOM對象哦,比如,試試alert唄
輸入一行,執行一行

2.指令碼模式:把要執行的代碼置於一個檔案中,然後去運行
可以有js尾碼,也可以什麼尾碼都沒有
node xx.js
這才是開發應用的模式

2.nodeJs常用模組-----queryString模組

什麼是模組呢,想想方積木的盒子
因為nodejs有1000+對象,太亂了吧,都是全域對象的話,就更不好處理了,node把一堆一堆的對象,放到分類的模組裡去

HTTP協議規定,請求訊息可以在url後面追加一個?開頭的querystying,用於向伺服器提交請求資料

https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=node.js&oq=node%E6%96%87%E6%A1%A3&rsv_pq=f3436c790004285f&rsv_t=7782AW2lXNgW1ezvIWJtvwsnbMA6TBJEh3kuYaSqs6ddKvSLeczqB529VAc&rqlang=cn&rsv_enter=1&inputT=639&rsv_sug3=38&rsv_sug1=28&rsv_sug7=100&bs=node%E6%96%87%E6%A1%A3

?後面這一堆就是querystring

那麼node提供了一個 querystring的模組,用於解析索引值對的 querystring


querystring.stringify(obj[, sep][, eq][, options])
將一個對象序列化化為一個 query string 。

querystring.parse(str[, sep][, eq][, options])
將 query string 還原序列化為對象

var qs=require("querystring");
var obj = qs.parse(‘foo=bar&baz=qux&baz=quux&corge‘);
console.log(obj);
var str=qs.stringify(obj);
console.log(str)

5.nodejs常用模組 -----url模組

這個模組包含分析和解析 URL 的工具。調用 require(‘url‘) 來訪問模組。
操作看文檔了哦~~~

6.nodejs常用模組 -----fileSystem模組
用於操作檔案系統---讀寫目錄和讀寫檔案

這個模組裡好多功能呢,咱們學兩個哈

1.讀取檔案 非同步讀取 fs.readFile
var fs = require(‘fs‘);
fs.readFile(‘./file/a.html‘,function(err,data){
console.log(data.toString())
})
console.log(1)
先輸出1,後輸出內容

同步執行
var buff=fs.readFileSync(‘./file/a.html‘);
console.log(buff.toString())
console.log(1)
先輸出內容,在輸出1

注意這裡不轉換字串的話是一堆《buff 05....的東西,這是讀取檔案後放到緩衝區的一種顯示方式,需要轉換一下

2.寫入檔案

var fs = require(‘fs‘);

var html = ‘系統日誌:‘+new Date();

fs.writeFileSync("./file/system.log",html);

往哪個檔案裡寫東西 ,如果沒有這個檔案,會建立,但是必須有這個目錄
那麼這個是同步寫入,當然也有非同步咯

fs.writeFile(‘message.txt‘, ‘Hello Node‘, function (err) {
if (err) throw err;
console.log(‘It\‘s saved!‘);
});

但是注意,會全部覆蓋,這樣不好,追加的還是好點,來去看看有沒有

fs.appendFileSync(filename, data[, options])
當然也有非同步咯

 

fs.appendFile(‘message.txt‘, ‘data to append‘, function (err) {
if (err) throw err;
console.log(‘The "data to append" was appended to file!‘);
});

做個任務,做個複製功能,複製一個檔案

var fs=require("fs");

var html=fs.readFileSync("./file/a.html");

fs.writeFileSync("./file/aa.html",html)



7.nodejs常用模組 -----http模組

http協議內容:

1.請求訊息
2.響應訊息

nodejs的http模組可以用於接受用戶端的請求訊息,讀取其中的請求資料,向用戶端返迴響應訊息--web伺服器

也就是說這個模組就是實現web伺服器的模組

怎麼去寫呢?


var http = require(‘http‘);
var url=require("url");

//和建立一個web伺服器
var server = http.createServer();
//讓web伺服器能處理用戶端串連請求,callback兩個參數分別是請求訊息和響應訊息
server.on("request",function (request,response) {
console.log(arguments)
})
//讓web伺服器監聽指定連接埠
server.listen(1234,function(){
console.log("開始監聽了喲")
})

request裡有要求標頭、要求方法、請求的url等資訊


練習,擷取到傳過來的資料

console.log(url.parse(request.url,true).query)




這裡這是伺服器接收到請求,那麼怎麼去做一個返回呢,也不能一直轉吧

//設定響應狀態代碼和回應標頭,必須有這個回應標頭
response.writeHead(200,{‘Content-Type‘:‘text/html;charset=UTF-8‘});

//輸出響應內容
response.write("<h1>this is my server</h1>");
response.write(‘<p>welcome~~~</p>‘);
//結束響應主體的輸出
response.end();


但是現在不管地址欄怎麼 後面 寫咱們都只能返回這個東東,那麼為什麼呢???

做一個練習喲。讓咱們後面輸入不同的東西就能訪問到不一樣的頁面,如果沒有的話,跳到404頁面




var sourceName=‘./file/‘+request.url.substr(1);
var html;
fs.readFile(sourceName,function(err,data){
if(err){
html=fs.readFileSync("./file/404.html");
}else{
html=data.toString();

}
response.writeHead(200,{‘Content-Type‘:‘text/html;charset=UTF-8‘});
response.write(html);
response.end();
});




8.nodejs常用的第三方模組----MySql模組

nodejs官方提供了二三十個模組,但是不夠用,如缺少訪問mysql資料庫的模組,需要到第三方網址下載,比如世界最大的nodejs第三方模組集散地:
https://npmjs.org


放好之後,可以去試試串連資料庫並操作資料,執行sql語句,玩玩

var mysql=require("mysql");

var conn=mysql.createConnection({
host:"127.0.0.1",
user:"root",
password:"",
database:"test"
})
var sql="INSERT INTO `test`.`user` (`id`, `name`, `password`) VALUES (NULL, ‘tom‘, ‘aa‘);"
conn.query(sql,function(err,result){
if(err){
console.log(err);
}else{
//影響的行數
console.log(result.affectedRows)
//插入的id
console.log(result.insertId)
}

})

conn.end();


練習select語句



var sql="SELECT * FROM `test`.`user`"
conn.query(sql,function(err,result){
if(err){
console.log(err);
}else{
console.log(result)
}
})






node.js

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.