安装nodejs + 最基础的代码

Centos系统下安装。

1.//获取nodejs的安装包。

    wget https://nodejs.org/dist/v10.9.0/node-v10.9.0-linux-x64.tar.xz               

2.解压

    tar xf node-v10.9.0-linux-x64.tar.xz                                                              //解压

3. 安装【即将命令软连接到bin文件夹】

    ln -s /var/www/node/node-v10.9.0-linux-x64/bin/npm /usr/bin/npm 

    ln -s /var/www/node/node-v10.9.0-linux-x64/bin/node /usr/bin/node

 4.查看node版本

    node -v

5.安装express body-parser cookie-parser multer等

    npm install express --save

    npm install body-parser --save
    npm install cookie-parser --save
    npm install multer --save

 6.查看node版本

    node -v

7.编写nodejs的代码【文件后缀为js】

     ....

    ...

8.运行nodejs服务器

    node *****.js

对于nodejs做服务器程序的一些说明。参考w3c菜鸟教程。

如果我们使用PHP来编写后端的代码时,需要Apache 或者 Nginx 的HTTP 服务器,并配上 mod_php5 模块和php-cgi。

从这个角度看,整个"接收 HTTP 请求并提供 Web 页面"的需求根本不需 要 PHP 来处理。

不过对 Node.js 来说,概念完全不一样了。使用 Node.js 时,我们不仅仅 在实现一个应用,同时还实现了整个 HTTP 服务器。事实上,我们的 Web 应用以及对应的 Web 服务器基本上是一样的。

在我们创建 Node.js 第一个 "Hello, World!" 应用前,让我们先了解下 Node.js 应用是由哪几部分组成的:

  1. 引入 required 模块:我们可以使用 require 指令来载入 Node.js 模块。

  2. 创建服务器:服务器可以监听客户端的请求,类似于 Apache 、Nginx 等 HTTP 服务器。

  3. 接收请求与响应请求 服务器很容易创建,客户端可以使用浏览器或终端发送 HTTP 请求,服务器接收请求后返回响应数据

以下是最基本功能的代码

var http = require('http');//建立http服务器
var url = require('url');
var util = require('util');
var querystring = require('querystring');//在不使用express的情况下,用queryString获取body(或url中的参数)数据
var express = require('express');//express框架
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');//post请求,解析body数据
var multer  = require('multer');//上传文件
var app = express();
var fs = require("fs");//文件系统,读写文件(夹)
var path = require("path")//文件路径库

// 创建 application/x-www-form-urlencoded 编码解析
var urlencodedParser = bodyParser.urlencoded({ extended: false })

app.use(cookieParser())

//静待文件绑定
//eg. 访问/frontpage/index.html咋会访问../html/frontpage下的indexhtml
app.use('/frontpage/', express.static('../html/frontpage'));
app.use('/', express.static('../html/frontpage'));
app.use('/m/', express.static('../html/m'));
app.use('/Galaxy/', express.static('../html/Galaxy'));
app.use(multer({ dest: 'tmp/'}).array('image'));//设置上传文件的临时文件夹
//get 请求
app.get('/demo',(req,res)=>{
    DealReq(req)

    //此处证明nodejs是单进程。不断调用次函数,以此等待执行
    let beginTime = new Date().getTime();
    while(1){
        let endTime = new Date().getTime();
        if(endTime - beginTime > 3000){
            break;
        }
    }
    

    // 输出 JSON 格式
    var response = {
        "first_name":req.query.first_name,
        "last_name":req.query.last_name
    };
    console.log(util.inspect(response))
    res.json(response)
})

//post 请求
app.post('/demo', urlencodedParser, function (req, res) {
    DealReq(req)
    console.log(__dirname)

    // 输出 JSON 格式
    var response = {
        "first_name":req.body.first_name,
        "last_name":req.body.last_name
    };
    console.log(util.inspect(response))
    res.json(response)
})

//上传文件
app.post('/file_upload', function (req, res) {
 
    console.log(req.files[0]);  // 上传的文件信息
    let ext = path.extname(req.files[0].originalname)||".jpg";
    
    let date = new Date();
    let year = date.getFullYear();
    let month = date.getMonth()+1;
    let day = date.getDate();
    let hour = date.getHours();
    let minute = date.getMinutes();
    let second = date.getSeconds();
    let timeString = ""+year+"_"+month+"_"+day+"_"+hour+"_"+minute+"_"+second+"_"

    //新建文件夹
    if(!fs.existsSync("../html/storage2")){
        fs.mkdirSync("../html/storage2","0777")
    }
    let pathName = "../html/storage2/"+year+month
    if(!fs.existsSync(pathName)){
        fs.mkdirSync(pathName,"0777")
    }
    //
    let fileName = ""+timeString+Math.ceil(Math.random()*10000000000000) + ext

    var des_file = "" + pathName + "/" + fileName
    fs.readFile( req.files[0].path, function (err, data) {
        let response = {"status":-1,"message":"fail...","data":des_file};
        fs.writeFile(des_file, data, function (err) {
            if( err ){
                conssole.log("upload file error...");console.log( err );
                response.message = "upload fail"
            }else{
                response.status = 0;
                response.message = "success";
            }
            console.log( response );
            res.json(response);
        });
    });
 })

function DealReq(req){
    console.log(">>>>>>>>>>>>>>>>>>>>>>>>>>")
    console.log("method:"+req.method)
    console.log("path  :"+req.path)
    console.log("param :"+util.inspect(req.query))
    console.log("Cookies: " + util.inspect(req.cookies));
    console.log("data  :"+util.inspect(req.body))
}

//建立服务器
var server = app.listen(8082, function () {
    var host = server.address().address
    var port = server.address().port
    console.log("http://%s:%s...................", host, port)
})

  

原文地址:https://www.cnblogs.com/dongfangchun/p/11348924.html