Node.js笔记

基础

var http = require('http');
function service(request,response){
	response.writeHead(200,{'Content-Type':'text/plain'});
	response.end('Hello Nodejs');
}

var server = http.createServer(service);
server.listen(8088);

模块

模块写完方法后,必须放入 exports中 才能被外部代码访问

//module.js
function service(request,response){
	response.writeHead(200,{'Content-Type':'text/plain'});
	response.end('Hello Nodejs');
}

function sayHello(){
	console.log('Hello module');
}

exports.hi = sayHello;
export.service = service;
var http = require('http');
var module = require('/module');
module.hi();
var server = http.createServer(module.service);
server.listen(8088);

路由

看代码路由应该不是nodejs自身的东西,只是一种实现代码实现。

1、requestHandlers.js 定义两个方法,并暴露出来

function listCategory(){
    return "lica Category";
}

function listProduct(){
    return "list Product";
}
exports.listCategory = listCategory;
exports.listProduct = listProduct;

2、server.js定义服务,
根据pathName传入router 让router发回响应。
handle 里存放的是其他js模块的方法代码

var http = require('http');
var url = require('url');
function start(route,handle){
    function onRequest(request,response){
        var pathName = url.parse(request.url).pathname;
        var html = route(handle,pathName);
        response.writeHead(200, {"Content-Type": "text/plain"}); 
        response.write(html); 
        response.end();
    }

    http.createServer(onRequest).listen(8088);
}
exports.start = start;

3、router.js 判断传入的pathname放入相应的处理。

function route(handler,pathName){
    if(typeof handler[pathName] === 'function'){
        return handler[pathName]();
    }else{
        return pathName + 'is not define!';
    }
}
exports.route = route;

4、最后 index.js 对上述代码合在一起并使用

var server = require("./server"); 
var router = require("./router"); 
var requestHandlers = require("./requestHandlers"); 

var handle = {} 
handle["/listCategory"] = requestHandlers.listCategory; 
handle["/listProduct"] = requestHandlers.listProduct;
server.start(router.route, handle); 

文件读写

使用 fs 模块,

readFileSync
writeFile

var fs = require("fs");
//读
var html = fs.readFileSync('how2j.html');
//写
fs.writeFile('how2java.html', 'hello from how2java');

Mysql使用

使用mysql模块(系统非自带需要安装mysql模块)
连接数据库

mysql.createConnection(
	{
		  host     : "127.0.0.1",
          user     : "root",
          password : "admin",
          database : "nodejs"
	}
)

//连接
con.connect();
//关闭
con.end()

进行crud
使用 返回的connect对象
query的方法,第一参数放入sql语句,第二参数放入对应参数数组。

	var params = [null,name];  
    var  sql = "insert into category_ values (?,?)";
    connection.query(sql,params,function (err, result) {
        if(err){
         console.log("[INSERT ERROR] - ",err.message);
         return;
        }       
       console.log("insert success, the generated id is:",result.insertId);       
    });
	
	//result是返回值,如果使用的查询则
	var  sql = "SELECT * FROM category_ order by id asc";
    connection.query(sql,function (err, results) {
        if(err){
            console.log("[SELECT ERROR] - ",err.message);
            return;
        }
        if(results)
        {
            for(var i = 0; i < results.length; i++)
            {
                console.log("%d\t%s", results[i].id, results[i].name);
            }
        }  
    });

Express framework

express 框架不在带,需要安装

开启服务

var server = app.listen(8088);

路由功能代码

app.get('/',
    function(req,res){
        res.send('Hello from express');
    }
);

app.get('/abc',
    function(req,res){
        res.send('Hello from abc');
    }
);

引入静态资源

var path = require('path');
app.use(express.static(path.join(__dirname, 'public')))

上传图片

主要利用参数 reqest 的变量
request里会有 files 数组变量 request.files[0] 取出
其中两个变量 originalname 上传时候文件名
以及 path 临时文件的路径

//需要fs库
app.post('/uploadPhoto', function (req, res) {
   //上传临时文件的路径
   var uploadedTempFilePath = req.files[0].path;
   //读取临时文件
   fs.readFile( uploadedTempFilePath, function (err, data) {
       //读取成功之后,复制到图片路径
        fs.writeFile(imgFile, data, function (err) {
            //写成功之后,返回 img元素显示上传之后的图片
              res.writeHead(200, {'Content-Type': 'text/html'});
              res.end("<img src='img/"+randomFileName+"'/>");
       });
   });
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值