澳门新葡亰娱乐网站-www.142net-欢迎您

澳门新葡亰娱乐网站是因为你还没有找到一条正确的致富之路,www.142net是将所有的游戏都汇集在一起的官方平台,因为澳门新葡亰娱乐网站这个网站当中有着大量的游戏攻略,托IP定位技术,传达终端直接到达的精准传播方式。

js学习日记,从零学习node

来源:http://www.bhtsgq.com 作者:计算机知识 人气:171 发布时间:2019-05-11
摘要:搭建首个http服务器 前言 采用node.js搭建服务器,node.js搭建服务器 运用node搭建小型服务器(其实正是分析url然后输出文件给客户端) 眼下内需变成3个课程设计,被项目经理(CEO)分配

搭建首个http服务器

前言

采用node.js搭建服务器,node.js搭建服务器

运用node搭建小型服务器(其实正是分析url然后输出文件给客户端)

眼下内需变成3个课程设计,被项目经理(CEO)分配写分界面,可是总感到只写前端的话缺了点什么,所以想本人写下后端玩一下。

中间还有个别纠结了弹指间用哪些语言,本来希图正好学习一下PHP,可后来转念1想,用nodejs岂不美哉,不只有领悟了后台开垦,也相当于加强了js基础,一矢双穿,美滋滋。

在就学node的经过中,学到了选取node完结三个服务器这1块,认为是对近来所学模块的多少个很好的计算。用到了五个主导的模块fs stream http path

代码如下:(内含蹩脚英文注释请见谅)

'use strict'
var url = require('url');
var path = require('path');
var fs = require('fs');
var http = require('http');
//get the current path
//var root = path.resolve('.');//以当前的目录为服务器的根目录
var root = path.resolve(process.argv[2] || '.');//以输入的参数作为服务器的根目录,如果没有输入参数就将当前目录作为服务器根目录
console.log('local root dir :'   root);
//create server
var server = http.createServer(function(request, response) {
  //get the path of URL
  var pathname = url.parse(request.url).pathname;
  //get the local path
  var filepath = path.join(root, pathname);
  //get the file stat and output the request file by callback function
  fs.stat(filepath, function(err, stat) {
    if(!err && stat.isFile()) {
      console.log('200'   request.url);
      response.writeHead(200);
      fs.createReadStream(filepath).pipe(response);//没有必要手动读取文件内容。由于response对象本身是一个Writable Stream,直接用pipe()方法就实现了自动读取文件内容并输出到HTTP响应。
    } else {
      console.log('404'   request.url);
      response.writeHead(404);
      response.end('404 Not Found');
    }
  });
});
server.listen(8080);
console.log('Server is running at http://127.0.0.1:8080/');

对此里边一些函数的解释:

path.resolve() 路径寻航(这名字不错)
path.resolve([from…], to)

有个表明很有趣:相当于四处地调用系统的cd指令

eg:

path.resolve('foo/bar', '/tmp/file/', '..', 'a/../subfile')
//相当于:
cd foo/bar
cd /tmp/file/
cd ..
cd a/../subfile1
path.join([path1],path[2]...) 路径合并

将有所名称用path.seq串联起来,然后用normailze格式化

eg:

path.join('///foo', 'bar', '//baz/asdf', 'quux', '..');
=>'/foo/bar/baz/asdf'

新萄京赌场手机版,既然如此涉及了normalize

那么:

js学习日记,从零学习node。格式化路线 path.normalize(p)
将不符合标准的路子格式化,简化开拓人士中管理各类复杂的门径剖断

eg:

path.normalize('/foo/bar//baz/asdf/quux/..');
=> '/foo/bar/baz/asdf'

http.response.end()甘休相应,告诉客户端具有音讯壹度发送。当全体要回到的剧情发送达成时,该函数必供给被调用3次。借使不调用该函数,那么客户端将会恒久处于等候情状。

接纳方法:

response.end([data], [encoding])

data end()实行完结后要出口的字符,若是钦定了 data 的值,那就表示在奉行完 response.end() 之后,会跟着施行一条 response.write(data , encoding);

encoding 对应data的字符编码

以上所述是我给大家介绍的选拔node.js搭建服务器的法子,希望对大家全体协助,固然我们有此外疑窦招待给自己留言,笔者会及时过来咱们的,在此也极其感激大家对帮客之家网址的支撑!

使用node搭建小型服务器(其实便是解析url然后输出文件给客户端) 近日亟需产生多个课程设计,...

发端 学习应用 node.js 首先产生搭建2个 web服务器。myweb.js

一.主旨代码

/*todo:1.加载http模块
* http模块专门用来编写服务器*/
var http = require("http");

/*todo:2.通过http创建server实例对象
* server: 提供Web服务
* 作用:发送请求,处理请求,处理数据,发送响应*/
var server = http.createServer();


/*todo:3.接收请求
* on request: 监听request,执行回调函数
* 回调函数:
* request: 请求对象,发送请求的客户端的对象,可以获取客户端的请求信息
* response: 响应对象,返回响应给客户端的对象,可以给客户端返回信息
* */
server.on("request", function (request, response) {
    /*request.url: 客户端请求服务器的路径*/
    console.log("我接收了客户端的请求,路径是"   request.url);

    var url = request.url;
    /*路由选择*/
    if(url === "/index"){
        /*response.write(info): 向客户端返回信息*/
        response.write("hello node.js");
    }else if(url === "/login"){
        response.write("login first");
    }else{
        response.write("<h1>404 page not found</h1>");
    }

    /*response.end(): 结束(最后一定要调用end,否则客户端会一直等待)*/
    response.end();
});

/*todo:4.绑定端口,启动服务器
* listen:绑定一个端口*/
server.listen("1122", function () {
    console.log("服务器启动成功,可以通过 http://localhost:3000/ 来访问")
});

 访问路线查看结果:

新萄京赌场手机版 1

 

 新萄京赌场手机版 2

新萄京赌场手机版 3

 

在上篇小说中大家驾驭了一下例外模块规范之间的联系与差异。本文咱们正式发轫node的上学,首先大家从搭建一个http服务器,能运营轻便的顺序伊始提及。

 1 var http = require('http');
 2 var url = require('url');
 3 var hostname = '127.0.0.1';
 4 var port = 3000;
 5 var bodystr = "";
 6 var server = http.createServer(function(req, res){
 7   res.statusCode = 200;
 8   res.setHeader('Content-Type', 'text/plain');
 9   var pathname = url.parse(req.url).pathname;
10   if(pathname === "/"){
11         bodystr = "Hello Worldn";
12   }else{
13         bodystr = req.url;
14   }
15   res.end(bodystr);
16 }).listen(port, hostname, function(){
17   console.log(`Server running at http://${hostname}:${port}/`);
18 });

贰.文化要点

一、hello world

使用 npm 执行 myweb.js
新萄京赌场手机版 4

require: 用于加载核心模块,fshttp

最精湛的hello world。首先我们创立3个server.js来保存大家的代码:

浏览器输入 127.0.0.一:两千

server: 提供Web服务(发送请求,处理请求,管理数量,发送响应)

server.on("request", function(req, res){})//监听客户端发送请求,执行回调函数
server.listen("1122", function () {})//绑定端口,启动服务器
console.log( 'hello world' );

新萄京赌场手机版 5

request: 请求对象,发送请求的客户端的对象,能够收获客户端的伸手音讯

request.url//客户端请求服务器的路径

在顶峰输入node server.js运行:

输入 127.0.0.1:3000/Double

response: 响应对象,再次回到响应给客户端的对象,可以给客户端再次来到新闻

response.write(info)//向客户端返回信息
response.end()//结束(最后一定要调用end,否则客户端会一直等待)
node server.js

新萄京赌场手机版 6

小技巧

1.在win调节台按ctrl C可关闭服务器

极限就能够输出 hello world 的字样。然则大家四个node服务器程序,总是要在浏览器上访问的哟,这里即将动用node里自带的http模块了:

 

var http = require('http'); // 引入http模块

// 创建http服务器
// request : 从浏览器带来的请求信息
// response : 从服务器返回给浏览器的信息
http.createServer(function(request, response){
 response.writeHead(200, {'content-type': 'text/plain'}); // 设置头部信息,输出text文本
 response.write('hello world'); // 输出到页面中的信息
 response.end(); // 返回结束
}).listen(3000);
console.log('server has started...');

作者们再次在终点输入node server.js运作,终端里会有出口server has started… 的字样,表示服务器已成立并正在运行,然后大家在浏览器上访问1贰7.0.0.一:两千,就足以看出页面中输出了hello world。

二、form表单

刚才大家只是在页面中输出了一段简单的文件,以后我们要在页面中显现叁个表单,能够让用户输入音讯并拓展付出:

// server.js
var http = require('http');

http.createServer(function(request, response){
var html = '<html>
 <head>
 <meta charset=UTF-8" />
 </head>
 <body>
 <form action="/" method="post">
 <p>username : <input type="text" name="username" /></p>
 <p>password : <input type="password" name="password" /></p>
 <p>age : <input type="text" name="age" /></p>
 <p><input type="submit" value="submit" name="submit" /></p>
 </form>
 </body>
 </html>';

 response.writeHead(200, {'content-type': 'text/html'}); // 输出html头信息
 response.write(html); // 将拼接的html字符串输出到页面中
 response.end(); // 结束
}).listen(3000);
console.log('server has started...');

修改server.js中的内容,重国民党的新生活运动行:

node server.js

刷新页面后,大家开掘页面中输出了二个文本框和3个提交开关。因为我们的顺序只是突显页面,并不曾做任何此外的拍卖,由此在页面中付出数据只是刷新当前页面。

注意: 大家每一回修改node中的任何代码后,都要双重举办运行。

二.1 获取表单GET方式提交的数据

我们地方的代码中行使的是POST格局,然则这里要先斟酌使用GET方式交给过来的数码,我们先不思索数据的安全性,只是学习怎么着获取使用get格局交给过来的form表单数据,将post改为get,重国民党的新生活运动行。

大家领略,使用get方式交给数据,会将数据作为U奥德赛L参数字传送递过来,由此大家由此深入分析UPAJEROL中的参数获取到数量,这里就用到了url模块中的方法:

// server.js
var http = require('http'),
url = require('url');

http.createServer(function(request, response){
 var html = '<html>
 <head>
 <meta charset=UTF-8" />
 </head>
 <body>
 <form action="/" method="get">
 <p>username : <input type="text" name="username" /></p>
 <p>password : <input type="password" name="password" /></p>
 <p>age : <input type="text" name="age" /></p>
 <p><input type="submit" value="submit" name="submit" /></p>
 </form>
 </body>
 </html>';

 var query = url.parse( request.url, true ).query;
 if( query.submit ){
 var data = '<p><a href="/" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >back</a></p>' 
 '<p>username:' query.username '</p>' 
 '<p>password:' query.password '</p>' 
 '<p>age:' query.age '</p>';

 response.writeHead(200, {'content-type': 'text/html'});
 response.write(data);
 }else{
 response.writeHead(200, {'content-type': 'text/html'});
 response.write(html);
 }
 response.end(); // 结束
}).listen(3000);
console.log('server has started...');

本文由澳门新葡亰发布于计算机知识,转载请注明出处:js学习日记,从零学习node

关键词: node.js

上一篇:【澳门新京葡官网】SQL查询进阶

下一篇:没有了

最火资讯