个人博客建设----node起步

nodejs的http请求

为什么要学node

对于不了解前端的人来说,大概前端的工作无非是写网页做特效做动画等等…
当然我开始也是这么以为的,认为如果不是必须的话,我可能永远不会去接触后台的东西,看到和我一起学前端的很多同学都去转java的时候,我也有点心动了,但是发现java也太难了,自己可能真的不适合java。知道最近工作室要求需要有自己的个人博客我才反应过来不会写后台的我很难搞哦,所以选择了适合我们前端写后台的nodejs,我也会记录下从开始搭建博客到结束的过程,这既是对自己成长的记录,也是想养成写博客的习惯。

node是什么?

如果你是一个前端程序员,你不懂得像PHP、Python或Ruby等动态编程语言,然后你想创建自己的服务,那么Node.js是一个非常好的选择。

Node.js 是运行在服务端的 JavaScript,如果你熟悉Javascript,那么你将会很容易的学会Node.js。

创建第一个node demo

在已经安装好node 的前提下,我们先创建一个app.js文件:
app.js
接下来我们先尝试node文件的启用:

console.log("这是第一个node")

然后在命令行打开文件夹位置,启动app.js,启动命令:

$node app.js

终端就会输出 “这是第一node”的内容
运行结果

使用http 创建第一个应用

步骤一:引入http模块

使用require来载入http模块,并将实例化的 HTTP 赋值给变量 http,方法如下:

let http = require("http")
步骤二:创建服务器

接下来我们使用 http.createServer() 方法创建服务器,并使用 listen 方法绑定 3000端口。 函数通过 request, response 参数来接收和响应数据。

实例如下,在你项目的根目录下创建一个叫 app.js 的文件,并写入以下代码

const http = require('http')

const PORT = 3000
const server = http.createServer(function(req,res){
    res.end("hello world")
})
server.listen(PORT,function(){
    console.log("启动成功....")
})

在命令行启动如下:

我们在浏览器打开本地服务:
在这里插入图片描述
通过上述图片说明通过node 已经成功将请求发送出去了。

node路由的应用

在说路由之前分享一段代码:

app.get('/', function(req, res) {
	res.sendFile(__dirname + "/public/views/" + "login.html");
})

app.get('/login', function(req, res) {
	var response = {
		"account": req.query.account,
		"password": req.query.password,
	};
	var selectSQL = "select account,password from user where account = '" + md5(req.query.account) + "' and password = '" + md5(req.query.password) + "'";
	//var selectSQL = "select password from user where account='"+req.query.account+"'";
	var addSqlParams = [md5(req.query.account), md5(req.query.password)];
	connection.query(selectSQL, function(err, result) {
		if(err) {
			console.log('[login ERROR] - ', err.message);
			return;
		}
		//console.log(result);
		if(result == '') {
			console.log(md5(req.query.account))
			console.log("帐号密码错误");
			res.end("0"); //如果登录失败就给客户端返回0,
		} else {
			res.sendFile(__dirname + "/public/views/" + "view.html");
		}
	})
	console.log(response);
	//res.end(JSON.stringify(response));
})

//注册页面的实现

app.get('/register', function(req, res) {
	res.sendFile(__dirname + "/public/views/" + "register.html");
})

//注册模块
var addSql = 'INSERT INTO user(account,password,name) VALUES(?,?,?)';

app.get('/process_get', function(req, res) {

	// 输出 JSON 格式
	var response = {
		"account": req.query.account,
		"password": req.query.password,
		"name": req.query.name
	};
	var addSqlParams = [md5(req.query.account), md5(req.query.password), req.query.name];
	connection.query(addSql, addSqlParams, function(err, result) {
		if(err) {
			console.log('[INSERT ERROR] - ', err.message);
			res.end("0"); //如果注册失败就给客户端返回0
			return; //如果失败了就直接return不会继续下面的代码
		} else {
			fs.readFile(__dirname + "/public/views/" + "login.html",function(err,data){
				if(err){
					res.end(err)
					return
				}
				res.end(data)
			})
		
		}
	});
	console.log(response);
	//res.end(JSON.stringify(response));
})

//写博文功能的实现
app.get('/topic', function (req, res) {
   res.sendFile( __dirname + "/public/views/" + "topic.html" );
})
var  addcontent = 'INSERT INTO top_content(topic_content,topic_type,topic_person) VALUES(?,?,?)';
app.get('/topic_commnet',function(req,res){
	var response = {
		"topic_content":req.query.topic_content,
		"topic_type":req.query.topic_type,
		"topic_person":req.query.topic_person
	}
	 var  addSqlcontent = [req.query.topic_content,req.query.topic_type,req.query.topic_person]
	   connection.query(addcontent,addSqlcontent,function (err, result) {
        if(err){
         console.log('[INSERT ERROR] - ',err.message);
         res.end("0");
         return;//如果失败了就直接return不会继续下面的代码
        }else{
        	getData()
            res.sendFile( __dirname + "/public/views/" + "view.html" );
        }
        
})
	   console.log(response);
})

在我还不懂路由的时候再出来的代码就是上述那样,所有的代码全部放在app.js里面,这样的坏处和很明显,层次逻辑不清楚,代码太乱,可读性太差,所以我们需要将文件不同功能分开。

目录结构如下:
在这里插入图片描述
使用一个具体事例来更清楚的了解node路由的作用:

我们通过路由函数的形式进行参数传递。

route.js文件的代码如下:

function route(pathname) {
  console.log("About to route a request for " + pathname);
}
 
exports.route = route;

app.js文件代码如下:

var http = require("http");
var url = require("url");
 
function start(route) {
  function onRequest(request, response) {
    var pathname = url.parse(request.url).pathname;
    console.log("Request for " + pathname + " received.");
 
    route(pathname);
 
    response.writeHead(200, {"Content-Type": "text/plain"});
    response.write("Hello World");
    response.end();
  }
 
  http.createServer(onRequest).listen(8888);
  console.log("Server has started.");
}
 
exports.start = start;

两个路由函数分别以 route 和 start 函数传递。

我们会相应扩展 index.js,使得路由函数可以被注入到服务器中:

var server = require("./app");
var router = require("./router");
 
server.start(router.route);

最后启动index.js文件可以输出 hello word

虽然在一个小案例里面使用node路由会觉得很麻烦,但是当在真正项目的时候,特别是文件层次较多时使用路由就会使得代码层次感更清楚!!!!

本人目前也是处于node初学者,分享有错请多包涵!^ _ ^

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值