Node學習篇

最近剛剛學習了下node,和node的express框架,所以前來小總結一下

Node.js

簡單的說 Node.js 就是運行在服務端的 JavaScript。
Node.js 是一個基於Chrome JavaScript 運行時建立的一個平臺。
Node.js是一個事件驅動I/O服務端JavaScript環境,基於Google的V8引擎,V8引擎執行Javascript的速度非常快,性能非常好。

我現在的理解就說白了就是可以寫簡單的後端吧

配置

1、安裝node.js
在編譯器裏面打開終端,輸入
node -v
在這裏插入圖片描述
如果你沒裝,就按照下面的命令(只對mac)
打開終端,使用 brew 命令來安裝:
1.安裝brew
打開終端運行以下命令:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

然後查看一下是否安裝成功,輸入以下命令:

brew -v

如果出現版本信息,就說明安裝成功。
2、安裝node.js
在終端中運行以下命令:

brew install nodejs

安裝成功後,查看一下node.js的版本信息

2、安裝express框架

cnpm install express --save

以上命令會將 Express 框架安裝在當前目錄的 node_modules 目錄中, node_modules 目錄下會自動創建 express 目錄。
運行完後文件夾會多出這兩個文件。
在這裏插入圖片描述
然後就可以開始做小練習了。

練習1、做一個選項卡

使用node.js的express框架
效果圖在這裏插入圖片描述
不同的按鈕,拿到數據庫的json數據,然後渲染到下面。
數據庫如下
在這裏插入圖片描述
Tab.html

<!DOCTYPE html>
<html>
    <!---
    對應node.js
    -->
    <head>
        <title>選項卡</title>
        <script src="http://libs.baidu.com/jquery/1.9.1/jquery.min.js"></script>
        <style>
            ul {
                list-style: none;
            }
            li {
                float: left;
                margin-right: 30px;
                padding-top: 10px;
            }
        </style>
    </head>

    <body>
        <div>
            <ul>
                <li><button id="btn1">人力資源部</button></li>
                <li><button id="btn2">開發部</button></li>
                <li><button id="btn3">後勤保障部</button></li>
            </ul>
        </div>
        <br>
        <div>
            <p id="content"></p >  
        </div>
    </body>

    <script>
        $(document).ready(function () {
            $("button").click(function() {
                $.get("dep?id="+$(this).attr('id'),function(res){
                    console.log(res);
                        $('#content').text(res);
                });
            })
        })
    </script>
</html>

node.js


var express = require('express');
var app = express();
var fs = require('fs');
var mysql      = require('mysql');
var mysqlMessage;
//連接數據庫,注意密碼要寫自己的
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : '314277357',
  database : 'mydb_web'
});

connection.connect();

var sql = 'SELECT * FROM T_User';
connection.query(sql,function(err,result){
  if(err){
    console.log('SELECT ERROR] - ',err.message );
    return;
  }
  mysqlMessage = result;
})

app.use('/public', express.static('public'));
//Tab.html頁面的get請求
app.get('/Tab.html', function(req, res) {
  //res.sendFile(path [,options] [,fn]):傳送指定路徑的文件 -會自動根據文件extension設定Content-Typ
    res.sendFile(__dirname + "/" + "Tab.html");
})
app.get('/dep',function(req,res){
    var response;
    var depid = req.query.id;
    if(depid == 'btn1'){
        response = mysqlMessage[0];
    }
    else if(depid == 'btn2'){

        response = mysqlMessage[1];
    }
    if(depid == 'btn3'){

        response = mysqlMessage[2];
    }
    console.log(response);
    // JSON.stringify() 方法將 JavaScript 對象轉換爲字符串。
    res.end(JSON.stringify(response));
})

var server = app.listen(8088, "127.0.0.1", function() {
    var host = server.address().address;
    var port = server.address().port;
    console.log("連接地址:http://%s:%s", host, port)
})


運行-在編譯器裏打開終端

node node.js

在這裏插入圖片描述
點擊連接地址就可了,要在後面加上你的頁面。。。http://127.0.0.1:8088/Tab.html

練習2 通知欄

效果圖
在這裏插入圖片描述
在這裏插入圖片描述

數據庫
在這裏插入圖片描述
new.html

<!DOCTYPE html>
<html>
    <head>
        <title>wogo新聞</title>
        <script src="http://libs.baidu.com/jquery/1.9.1/jquery.min.js"></script>
        <style>
        ul{
            list-style: none;
        }
        li{
            line-height: 30px;
        }
        </style>
        <meta charset="utf-8">
        <script>
         $(document).ready(function () {
            $.get("all",function(res){
                $.each(JSON.parse(res),function(i,val){
                    console.log("val",val);
                    $('#content').append("<li ><button onClick='getContent(this)' id='"+val.new_title+"' > 標題: "+val.new_title+
                        "</button>  作者:  "+val.new_author +
                        "  發佈時間: "+val.new_date+
                       "</li>");
                    });
                })
            })
            function getContent(obj){
                localStorage.setItem("name",$(obj).attr('id'));
                let url = "new1.html?new_title="+$(obj).attr('id');
                window.location.href = url;
                }
        </script>
    </head>
    <body>
        <div>
            <ul id="content">
            </ul>
        </div>
    </body>
</html>

new1.html

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <script src="http://libs.baidu.com/jquery/1.9.1/jquery.min.js"></script>
        <script>
            $(document).ready(function () {
                var title=localStorage.getItem("name");
                console.log("title",title);
                $.get("Content?new_title="+title ,function (res) {
                    $('#title').text(JSON.parse(res)[0].new_title);
                    
                    $('#author').text(JSON.parse(res)[0].new_author);
                    $('#date').text(JSON.parse(res)[0].new_date);
                    $('#content').text(JSON.parse(res)[0].new_content);
                });
            })
        </script>
    </head> 
    <body>
        <h1 id="title"></h1>

        <div id="content"></div>
        <span id="author"></span>
    </br>
        <span id="date"></span>
    </body>
</html>

node1.js

var express = require('express');
var app = express();
var fs = require('fs');
var mysql      = require('mysql');
var mysqlMessage;
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : '314277357',
  database : 'mydb_web'
});

connection.connect();

var sql = 'SELECT * FROM new';
connection.query(sql,function(err,result){
  if(err){
    console.log('SELECT ERROR] - ',err.message );
    return;
  }
  mysqlMessage = result;
})



app.use('/public', express.static('public'));
app.get('/new.html', function(req, res) {
    res.header("Content-Type","text/html;charst='utf-8'");
    res.sendFile(__dirname + "/" + "new.html");
})


app.get('/all',function(req,res){
    var response = mysqlMessage;
    console.log(response);
    res.end(JSON.stringify(response));
})


app.use('/public', express.static('public'));
app.get('/new1.html', function(req, res) {
  res.header("Content-Type","text/html;charst='utf-8'");
  res.sendFile(__dirname + "/" + "new1.html");
})

app.get('/Content',function(req,res){
    var response;
    var req = req.query.new_title;
    console.log("req",req);
    var sql = "SELECT * FROM new WHERE new_title = '"+req+"'" ;
    connection.query(sql,function(err,result){
        if(err){
            console.log('SELECT ERROR] - ',err.message );
            return;
        }
      console.log("title:"+req+"     response:  "+response);
      res.end(JSON.stringify(result));
    })

})

var server = app.listen(8088, function() {
    var host = server.address().address;
    var port = server.address().port;
    console.log("連接地址:http://127.0.0.1:8088/new.html");
})

運行
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章