簡介
Node.js 是一個基於Chrome JavaScript 執行時建立的一個平臺。
Node.js是一個事件驅動I/O伺服器端JavaScript環境,基於Google的V8引擎,V8引擎執行Javascript的速度非常快,效能非常好。
簡單的說 Node.js 就是執行在伺服器端的 JavaScript。
詳細學習: 菜鳥教學
Hello World
新建js檔案 helloworld.js
console.log("hello world!");
終端執行檔案(需在檔案所在目錄下執行)
node helloworld.js
實現簡易HttpServer
新建js檔案server.js
var http = require('http');
http.createServer(function (request, response) {
// 傳送 HTTP 頭部
// HTTP 狀態值: 200 : OK
// 內容型別: text/plain
response.writeHead(200, {'Content-Type': 'text/plain'});
// 傳送響應資料 "Hello World"
response.end('Hello World\n');
}).listen(8888);
// 終端列印如下資訊
console.log('Server running at http://127.0.0.1:8888/');
終端執行檔案(需在檔案所在目錄下執行)
node server.js
關閉nodejs服務
在終端按Ctrl+C
簡介,這篇Node.js 包管理器 NPM 講解文章講解詳細,點選就可閱讀
NPM是隨同NodeJS一起安裝的包管理工具,能解決NodeJS程式碼部署上的很多問題,常見的使用場景有以下幾種:
檢查安裝
由於新版的nodejs已經整合了npm,所以之前npm也一併安裝好了。可以通過輸入 "npm -v" 來測試是否成功安裝,出現版本提示表示安裝成功。
$ npm -v
2.3.0
npm 升級
Linux系統環境升級
$ sudo npm install npm -g
Windows系統環境升級
npm install npm -g
npm 安裝 Node.js 模組語法格式如下:
$ npm install <Module Name>
以下範例,我們使用 npm 命令安裝常用的 Node.js web框架模組 express:
$ npm install express
安裝好之後,express 包就放在了工程目錄下的 node_modules 目錄中,因此在程式碼中只需要通過 require('express') 的方式就好,無需指定第三方包路徑。
var express = require('express');
可以使用以下命令來解除安裝 Node.js 模組。
$ npm uninstall express
解除安裝後,可以到 /node_modules/ 目錄下檢視包是否還存在,或者使用以下命令檢視:
$ npm ls
可以使用以下命令更新模組:
$ npm update express
可以使用以下來搜尋模組:
$ npm search express
使用npm快速生成package.json(類似pom.xml)
npm init //根據提示作一些設定
{
"name": "nodedemo",//工程名
"version": "1.0.0",//版本號
"description": "npm測試",//描述
"main": "HelloWorld.js",//入口js
"scripts": { //執行指令碼
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node server.js"
},
"author": "Hyman",//開發者
"license": "ISC"//授權協定
}
安裝mysql模組
npm install mysql
簡單樣例
新建測試檔案MysqlTest.js
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '123456',
port: '3306',
database: 'test'
});
connection.connect();
var sql = 'SELECT * FROM user';
//查(無參寫法)
connection.query(sql,function (err, result) {
if(err){
console.log('[SELECT ERROR] - ',err.message);
return;
}
console.log('--------------------------SELECT----------------------------');
console.log(result);
console.log('------------------------------------------------------------\n\n');
});
var now = new Date();
var Sql = 'INSERT INTO user(Id,name,mail,update_date,create_date) VALUES(0,?,?,?,?)';
var SqlParams = ['李四', '[email protected]',now, now];
//增(有參寫法)
connection.query(Sql,SqlParams,function (err, result) {
if(err){
console.log('[INSERT ERROR] - ',err.message);
return;
}
console.log('--------------------------INSERT----------------------------');
//console.log('INSERT ID:',result.insertId);
console.log('INSERT ID:',result);
console.log('-----------------------------------------------------------------');
});
connection.end();
注意事項
1、不要把測試檔案命名為mysql.js
2、出現以下錯誤
[SELECT ERROR] - ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading
MySQL client
錯誤原因:最新的mysql模組並未完全支援MySQL 8的「caching_sha2_password」加密方式,而「caching_sha2_password」在MySQL 8中是預設的加密方式。
解決方案:更改Mysql加密方式
USE mysql;
--root為資料庫使用者,123456為使用者對應密碼
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
FLUSH PRIVILEGES;
建立一個 json 資料資原始檔 users.json
"user1" : {
"name" : "mahesh",
"password" : "password1",
"profession" : "teacher",
"id": 1
},
"user2" : {
"name" : "suresh",
"password" : "password2",
"profession" : "librarian",
"id": 2
},
"user3" : {
"name" : "ramesh",
"password" : "password3",
"profession" : "clerk",
"id": 3
}
}
建立RESTful API 的檔案server.js
var express = require('express');
var app = express();
var fs = require("fs");
//獲取使用者清單
app.get('/listUsers', function (req, res) {
fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
console.log( data );
res.end( data );
});
})
var user = {
"user4" : {
"name" : "mohit",
"password" : "password4",
"profession" : "teacher",
"id": 4
}
}
//新增的新使用者資料
app.get('/addUser', function (req, res) {
// 讀取已存在的資料
fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
data = JSON.parse( data );
data["user4"] = user["user4"];
console.log( data );
res.end( JSON.stringify(data));
});
})
//刪除對應使用者
app.get('/deleteUser/:id', function (req, res) {
fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
data = JSON.parse( data );
delete data["user" + req.params.id];
console.log( data );
res.end( JSON.stringify(data));
});
})
//根據輸入id返回結果,需要放在最後,避免干擾前面的路由
app.get('/:id', function (req, res) {
fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
data = JSON.parse( data );
var userTemp = data["user" + req.params.id]
console.log( userTemp );
res.end( JSON.stringify(userTemp));
});
})
var server = app.listen(8081, function () {
var host = server.address().addressnode
var port = server.address().port
console.log("應用範例,存取地址為 http://%s:%s", host, port)
})
接下來執行以下命令
$ node server.js
應用範例,存取地址為 http://0.0.0.0:8081
在瀏覽器中存取 http://127.0.0.1:8081/listUsers
在瀏覽器中存取 http://127.0.0.1:8081/addUser
注意事項
小編建了前端技術交流學習圈,小夥伴們可以問問題料聊技術聊天氣聊心情,點選這期待你的加入!暗號前端。喜歡這篇文章的點贊+評論666支援,沒看過小編其他文章的可以看看噢。