Node.js 启动往来服务

🌙
手机阅读
本文目录结构

node+ 文件夹名可以以 node 的形式运行程序;和在 webstrom 中的运行一样(文件夹名不带后缀也可以运行。

比如 aaaa.js 或者 aaaa 都可以的)!

node 的基础知识点;

  • 一是模块化概念,;在模块化之上还有包的概念;
  • 二是包的概念(package);包的大于模块化的;

模块化的概念:module:// 模块;用的是 require 做模块化;应用如下;

event=require("event.js");//引用函数的;函数内需要暴露;
module.exports={proceThis:proceThis,on:on,off:off};//用这个在JS内暴露;

写一个 node 最基本的小框架;

var http=require("http");
var fs=require("fs");//IO
var url=require("url");//解析URL
var querysting=require("querystring");//解析字符串查询;
http.createServer(function (req, res) {//请求和应答两个参数;
    //req是request的缩写,从浏览器端过来的请求;
    //res是response缩写,从服务器返回浏览器端的对象;
    res.writeHead(200);
    res.write('<!DOCTYPE html> <html> <head lang="en"><meta charset="UTF-8"> <title>node知识</title> </head> <body>');
    res.write(" <h1>学习nodejs</h1> ");//应答;
    res.write("这是我的第一个nodejs小程序");
    res.end("</body></html>")
}).listen(8081);

启动程序后,可以在 8081 端口查看;

改写代码

var http=require("http");
var fs=require('fs');
http.createServer(function(request,response){
    getFile(request.url.slice(1),response);//需要处理路径
    function getFile(filename,response){
        fs.readFile(filename,function(err,data){
            if(data==null||err){
                response.end("file is undefind");
            }else{
                response.setHeader('Content-Type',getContentType(filename)+';charsrt=UTF-8');
                response.write(data);
                response.end();
            }
        })
    }
    function getContentType(filename){
        if(filename.indexOf('.html')!=-1){
            return 'text/html'
        }else if(filename.indexOf('.css')!=-1){
            return 'text/css'
        }else if(filename.indexOf('.js')!=-1){
            return 'text/javascript'
        }
    }
}).listen(8080);

请求和响应的常用方法

请求

request.url 获取路径
request.method
request.headers
Connection:keep-alive 保持连接;相当于保持连接不中断;
Content-Length  : 请求的长度;Content-Length:19   name=broszhu&&age=6;请求的长度也会影响采取何种请求方式;
浏览器只能发get请求,不能发表post请求;?????

响应:

response.write(‘hello’) 写文件
response.end() 响应结束
response.end(new Date(),toUTCString()); ????
response.statusCode=404 设置响应吗
response.setHeader(‘Content-Type’,’text/html;charset=”UTF-8”’)
response.writeHeade(200,{‘Content-Length’: data.length,‘Content-Type’;’text/html;charset=”UTF-8”’})
提示下面报错

Can’t set headers after they are sent.

如果 header 已经发给客户端,那么就不能再设置

转码:
  • encodeURIComponent() 汉字转成编码;它是将中文、韩文等特殊字符转换成 utf-8 格式的 url 编码,所以如果给后台传递参数需要使用 encodeURIComponent 时需要后台解码对 utf-8 支持
  • decodeURIComponent() 编码变转成汉字
url.parse
  • url.parse(request.url) —>node 提供的 parse 方法;
  • url.parse(request.url,true) —>把查询字符串转成对象;
FS 的方法:
fs.readFileSync(‘index2.html’,’UTF-8′) 按照UTF-8读取index2.html
URL 方法:
url.parse(request.url,true).pathname    //请求路径”/” “/clock”带斜杠的;

AXIHE / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili

关注我: Github / 知乎

于2021年离开前端领域,目前重心放在研究区块链上面了

我叫朱安邦,阿西河的站长

目前在杭州从事区块链周边的开发工作,机械专业,以前从事平面设计工作。

2014年底脱产在老家自学6个月的前端技术,自学期间几乎从未出过家门,最终找到了满意的前端工作。更多>

于2021年离开前端领域,目前从事区块链方面工作了