標籤: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