Node.js 入門:就是運行在服務端的 JavaScript

簡介

Node.js 是一個基於Chrome JavaScript 運行時創建的一個平臺。html

Node.js是一個事件驅動I/O服務端JavaScript環境,基於Google的V8引擎,V8引擎執行Javascript的速度很是快,性能很是好。前端

簡單的說 Node.js 就是運行在服務端的 JavaScript。node

詳細學習: 菜鳥教程mysql

1、快速入門

Hello World

新建js文件 helloworld.jsweb

console.log("hello world!");

終端執行文件(需在文件所在目錄下執行)sql

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/');

終端執行文件(需在文件所在目錄下執行)express

node server.js

關閉nodejs服務npm

在終端按Ctrl+C

2、NPM包管理器

1. 基本信息

簡介, 這篇Node.js 包管理器 NPM 講解文章講解詳細,點擊就可閱讀

NPM官方網站json

NPM是隨同NodeJS一塊兒安裝的包管理工具,能解決NodeJS代碼部署上的不少問題,常見的使用場景有如下幾種:

  • 容許用戶從NPM服務器下載別人編寫的第三方包到本地使用。
  • 容許用戶從NPM服務器下載並安裝別人編寫的命令行程序到本地使用。
  • 容許用戶將本身編寫的包或命令行程序上傳到NPM服務器供別人使用。
檢查安裝

因爲新版的nodejs已經集成了npm,因此以前npm也一併安裝好了。能夠經過輸入 "npm -v" 來測試是否成功安裝,出現版本提示表示安裝成功。

$ npm -v
2.3.0
npm 升級

Linux系統環境升級

$ sudo npm install npm -g

Windows系統環境升級

npm install npm -g

2. 基本應用

2.1 安裝模塊

npm 安裝 Node.js 模塊語法格式以下:

$ npm install <Module Name>

如下實例,咱們使用 npm 命令安裝經常使用的 Node.js web框架模塊 express:

$ npm install express

安裝好以後,express 包就放在了工程目錄下的 node_modules 目錄中,所以在代碼中只須要經過 require('express') 的方式就好,無需指定第三方包路徑。

var express = require('express');

2.2 卸載模塊

可使用如下命令來卸載 Node.js 模塊。

$ npm uninstall express

卸載後,能夠到 /node_modules/ 目錄下查看包是否還存在,或者使用如下命令查看:

$ npm ls

2.3 更新模塊

可使用如下命令更新模塊:

$ npm update express

2.4 搜索模塊

可使用如下來搜索模塊:

$ npm search express

2.5 生成package文件

使用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"//受權協議
}

3、鏈接Mysql

安裝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 = ['李四', 'lisi@mail.com',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();
注意事項

一、不要把測試文件命名爲mysql.js

二、出現如下錯誤

[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;

4、編寫RESTful API

建立一個 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

注意事項
  • 若是多個API寫在一塊兒,輸入型路由應該放在最後

小編建了前端技術交流學習圈,小夥伴們能夠問問題料聊技術聊天氣聊心情,點擊這期待你的加入!暗號前端。喜歡這篇文章的點贊+評論666支持,沒看太小編其餘文章的能夠看看噢。

相關文章
相關標籤/搜索