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
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 应用是由哪几部分组成的:
-
引入 required 模块:我们可以使用 require 指令来载入 Node.js 模块。
-
创建服务器:服务器可以监听客户端的请求,类似于 Apache 、Nginx 等 HTTP 服务器。
-
接收请求与响应请求 服务器很容易创建,客户端可以使用浏览器或终端发送 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) })