zoukankan      html  css  js  c++  java
  • 安装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)
    })
    

      

  • 相关阅读:
    ASP.NET MVC 4使用jQuery传递对象至后台方法
    大沙发斯蒂芬
    2017年年总结
    Java将HTML导出为PDF
    华硕笔记本安装Ubuntu 17.04版本
    全站启用HTTPS配置详解
    设计模式-1 单例模式
    基础知识扫盲--1 抽象类和接口
    ASP.Net 管道模型 VS Asp.Net Core 管道 总结
    索引深入理解
  • 原文地址:https://www.cnblogs.com/dongfangchun/p/11348924.html
Copyright © 2011-2022 走看看