1. 如何用nodejs做一个简单的前端Static Server
var http = require('http');
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'me',
password : 'secret',
});
//开始你的mysql连接
connection.connect();
var server = http.createServer(function (req, res) {
//如果你发一个GET到的话
var url_info = require('url').parse(req.url, true);
//检查是不是给/test的request
if(url_info.pathname === '/test'){
//把query用url encode,这样可以用post发送
var post_data = require('querystring').stringify(url_info.query);
//post的option
var post_options = {
host: 'localhost',
port: 1337,
path: '/response_logic',
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': post_data.length
}
};
//发出post
var request_made = http.request(post_options, function(response_received){
var buf_list = new Array();
response_received.on('data',function(data){
buf_list.push(data);
});
response_received.on('end',function(){
var response_body = Buffer.concat(buf_list);
res.end(response_body);
connection.query('insert into .........',function(err,rows,fields){
//处理你的结果
});
});
});
//发出post的data
request_made.end(post_data);
}
//这个是用来回复上面那个post的,显示post的数据以表示成功了。你要是有别的目标,自然不需要这一段。
else{
req.pipe(res);
}
});
server.listen(1337, '127.0.0.1');
//在server关闭的时候也关闭mysql连接
server.on('close',function(){
connection.end();
});
console.log('listening on port 1337');
2. Node.js是属于前端还是后端的技术
首先你得了解什么nodejs,其次了解什么后端技术及作用
1.node.js组成:谷歌浏览器的V8引擎、C++语言编写的,本质上是一个JavaScript的运行环境。提到js,就能想到浏览器里面的各种交互组件,异步请求等等,它们依靠浏览器JavaScript 的引擎,来解析页面的js代码。
2.目前流行的后端语言就是PHP、Java、.Net,使用后端语言实现服务器上的开发叫做后端技术。
3.nodejs就是让JavaScript(js)可以实现服务器上的开发。
4.JavaScript(前端语言)+nodejs(JavaScript的运行环境)=实现服务器上的开发(后端技术),也就是说js+nodejs实现了后端开发的技术
3. 怎么连接nodejs服务器
前面已经学习了WebSocket API,包括事件、方法和属性。详情:WebSocket(二)--APIWebSocket是基于事件驱动,支持全双工通信。下面通过三个简单例子体验一下。
简单开始
1.安装node。/
2.安装ws模块
ws:是nodejs的一个WebSocket库,可以用来创建服务。
3.server.js
在项目里面新建一个server.js,创建服务,指定8181端口,将收到的消息log出来。
//建立连接
var ws = new WebSocket("ws://localhost:8181"); var nickname = "";
ws.onopen = function (e) {
console.log('Connection to server opened');
} //显示
function appendLog(type, nickname, message) { if (typeof message == "undefined") return; var messages = document.getElementById('messages'); var messageElem = document.createElement("li"); var preface_label; if (type === 'notification') {
preface_label = "<span class="label label-info">*</span>";
} else if (type == 'nick_update') {
preface_label = "<span class="label label-warning">*</span>";
} else {
preface_label = "<span class="label label-success">"
+ nickname + "</span>";
} var message_text = "<h2>" + preface_label + " "
+ message + "</h2>";
messageElem.innerHTML = message_text;
messages.appendChild(messageElem);
} //收到消息处理
ws.onmessage = function (e) { var data = JSON.parse(e.data);
nickname = data.nickname;
appendLog(data.type, data.nickname, data.message);
console.log("ID: [%s] = %s", data.id, data.message);
}
ws.onclose = function (e) {
appendLog("Connection closed");
console.log("Connection closed");
} //发送消息
function sendMessage() { var messageField = document.getElementById('message'); if (ws.readyState === WebSocket.OPEN) {
ws.send(messageField.value);
}
messageField.value = '';
messageField.focus();
} //修改名称
function changName() { var name = $("#name").val(); if (ws.readyState === WebSocket.OPEN) {
ws.send("/nick " + name);
}
}
运行结果:
页面关闭之后,连接马上断开。
这种实时响应的体验简直不能太爽,代码也清爽了,前端体验也更好,客户端不用一直发请求,服务端不用等着被轮询。
小结:上面例子的代码都很好理解,接下来学习WebSocket协议。
4. 如何用nodejs搭建web服务器
主要解决两个问题,1是静态资源的处理,2是动态资源的路由。
静态资源在node.js里的意思是不变的,如图片、前端js、css、html页面等。
动态资源我们一般指aspx页面,ashx页面,asp页面,jsp页面,php页面等,而node.js里其实没动态资源这一说,它对请求的处理都是由回调方法完成的,在我实现的httserver里,借鉴了ashx的写法,把处理请求的js文件看作动态资源。
首先实现一个处理静态资源的函数,其实就是对本地文件的读取操作,这个方法已满足了上面说的静态资源的处理。
5. nodejs整合了前端和后端么
后端上可以用nodejs做服务器
前端上配合electron可以做本地应用程序
6. nodejs写服务器怎么样
目前最主流的三个Web服务器是Apache、Nginx、IIS。
Node.js 提供了 http 模块,http 模块主要用于搭建 HTTP 服务端和客户端,使用 HTTP 服务器或客户端功能必须调用 http 模块,代码如下:
[javascript]view plain
varhttp=require('http');
varhttp=require('http');
varfs=require('fs');
varurl=require('url');
//创建服务器
http.createServer(function(request,response){
//解析请求,包括文件名
varpathname=url.parse(request.url).pathname;
//输出请求的文件名
console.log("Requestfor"+pathname+"received.");
//从文件系统中都去请求的文件内容
fs.readFile(pathname.substr(1),function(err,data){
if(err){
console.log(err);
//HTTP状态码404:NOTFOUND
//ContentType:text/plain
response.writeHead(404,{'Content-Type':'text/html'});
}
else{
//HTTP状态码200:OK
//ContentType:text/plain
response.writeHead(200,{'Content-Type':'text/html'});
//写会相应内容
response.write(data.toString());
}
//发送响应数据
response.end();
});
}).listen(8081);
console.log('Serverrunningathttp://127.0.0.1:8081/');
<!DOCTYPEhtml>
<htmllang="en">
<head>
<metacharset="UTF-8">
<title>index</title>
</head>
<body>
这是一个用于进行nodejs服务器测试的html文件,我们能够通过在浏览器上面输入
http://127.0.0.1:8081/WebServer/index.html进行访问
</body>
</html>
在通常的服务器中,数据流通的方式是客户先通过浏览器进行发送请求,服务器在项目中进行查找,然后进客户所需要的页面进行返回,在查找的过程中可能存在两种情况,就是存在和不存在,当然,我们会做出判断,下面就是简单的服务器实现过程:
1、编写服务器代码server.js
[javascript]view plain
通过上面代码,我们就能够实现服务器对于文件的查找,下面,我们就进行创建一个html文件,然后通过浏览器进行访问
2、编写html文件(index.html),用于浏览器进行请求
[html]view plain
创建完之后,我们进行测试,现在我的目录结构是这样的:
7. node.js是前端还是后端
JavaScript(前端语言)+nodejs(JavaScript的运行环境)=实现服务器上的开发(后端技术),也就是说js+nodejs实现了后端开发的技术。
8. node.js主要应用是前端还是服务器端
nodejs是前端语言,但它能使Javascript运行于服务器端,主要应用还是服务器端
9. nodejs作为前端服务器 怎么解决跨域问题
如果需要复用的代码仅仅是个别文件、函数、片段等,可以手工修改代码以适配meteor程序。
需要注意到,node.js的每一个文件都是一个模块,通过mole.exports和require进行组织,但是在meteor中,每一个文件都是会被自动加载的(具体顺序参考meteor文档),通过全局变量进行跨文件调用;meteor中不能直接加载npm包;meteor框架是同步运行的(非异步)。