>  기사  >  웹 프론트엔드  >  nodejs를 사용하여 웹 서버를 구축하는 초보자의 접근 방식

nodejs를 사용하여 웹 서버를 구축하는 초보자의 접근 방식

不言
不言원래의
2018-09-14 17:22:291851검색

이 글의 내용은 nodejs를 사용하여 웹 서버를 구축하는 초보자의 방법에 관한 것입니다. 필요한 친구들이 참고할 수 있기를 바랍니다.

nodejs는 간단한 웹 서버를 구축합니다

1.1 소개

Node.js는 Chrome JavaScript 런타임을 기반으로 하는 플랫폼으로 실제로 Google Chrome V8 엔진을 캡슐화하여 빠르고 확장 가능한 웹 애플리케이션을 만드는 데 사용됩니다. .

즉, 브라우저의 Javascript는 브라우저의 js 코드 파서이고, Node.js는 서버 측 JS 코드 파서입니다. 서버 측에 저장된 JS 코드는 Node.js에 의해 파싱되고 적용됩니다.

참고: Nodejs와 js는 어떤 의미에서는 동일한 제품이지만 작성 및 사용법은 다르지만 요점은 nodejs는 스코프 서버 측에 있고 js는 스코프 브라우저 측에만 있으므로 js는 browser , nodejs는 브라우저를 가리킬 수 없으므로 일부 API가 다릅니다.

마찬가지로 js는 약한 유형의 언어이므로 nodejs도 약한 유형의 언어입니다. 뱅킹 시스템이나 결제 시스템을 개발하는 경우 nodejs를 사용하지 마세요. (nodejs는 CPU 집약적인 애플리케이션이 아닌 IO 집약적인 애플리케이션에 적합합니다.)

1.2 노드 모듈 유형

모듈 유형은 다음과 같습니다.

1) 공식적으로 제공되는 네이티브 모듈
global, util, querystring, url, buffer, fs , http,
2) 타사 모듈
mysql, oracle, express
3) 사용자 정의 모듈
파일 모듈 및 디렉터리 모듈

1.3 일반적으로 사용되는 네이티브 모듈 - 어려운 점

1) http 요청 URL을 처리하는 데 쿼리스트링 모듈이 사용됩니다.
의 쿼리 문자열 var obj=qs.parse(str); 쿼리 문자열을 js 객체로 구문 분석합니다
var str=qs.parse(obj); js 객체를 쿼리 문자열로 변환

2) URL 모듈에서 사용됩니다. http 요청 주소를 구문 분석하고 다른 부분을 얻는 데 사용됩니다
var obj = url.parse(str) URL 문자열을 객체로 구문 분석합니다
var obj = url.parse(str,true) URL 문자열을 객체로 구문 분석하고 쿼리 문자열을 개체로 구문 분석합니다.

3) 버퍼 버퍼는 본질적으로 향후 사용할 데이터(숫자, 문자열, 바이너리 이미지, 오디오 및 비디오 등일 수 있음)를 임시로 저장하는 데 사용되는 메모리 영역입니다.
이는 영역은 "캐시"가 됩니다. ******전역 객체에는 참조가 필요하지 않습니다******

//创建一个大小为10字节的缓冲区
var buf1 = Buffer.alloc(10); //alloc:分配
console.log(buf1);
var buf2 = Buffer.alloc(1024*3); //alloc:分配3kb大小的缓冲区
console.log(buf2);
var buf3=Buffer.from(['a','b','c']);
console.log(buf3);
//使用一个字符串创建一个缓冲区
var buf4=Buffer.from('abcd');
console.log(buf4);
var buf5=Buffer.from('一二三文');
console.log(buf5);
//把缓冲区的内容转换为字符串
console.log(buf5.toString());

4) fs 파일 시스템 모듈
fs 모듈은 파일/파일의 추가, 삭제 및 수정을 제공합니다. 파일 시스템의 디렉터리 확인, 읽기 및 쓰기 기능.

//同步读取文件中的内容
var data=fs.readFileSync(file);
//同步向文件中写出内容(删除已有内容)
fs.writeFileSync(file,str/buf);
//同步向文件中追加写出内容(不删除已有内容)
fs.appendFileSync(file,str.buf)
例如fs异步读写文件 不需要等待直接往下走
//异步读取文件中的内容
fs.readFile(file,funcgtion(err,data){
});
//异步向文件中写出内容(删除已有内容)
fs.writeFile(file,str/buf,function(){
});
//异步向文件中追加写出内容(不删除已有内容)
fs.appendFile(file,str.buf,function(){

});

5) http 모듈은 http 프로토콜을 기반으로 클라이언트 프로그램(예: 브라우저)을 작성하는 데 사용할 수 있습니다.
또한 http 프로토콜을 기반으로 서버측 프로그램(예: 웹 서버)을 작성할 수도 있습니다. 웹 서버를 작성하기 위한 http 모듈 :var server=http.createServer();
1) 클라이언트의 http 요청 메시지를 수신합니다
2) 클라이언트 요청 메시지를 구문 분석합니다
3) 클라이언트가 요청한 파일을 읽습니다.
4) 클라이언트에게 http 응답 메시지를 보냅니다. 본문은 클라이언트가 요청한 파일입니다.

1.4 웹 서버 구축 방법

위의 내용을 이야기한 후 작은 웹 구축 방법에 대해 이야기할 수 있습니다. nodejs를 이용한 서버! (아래 코드와 댓글을 주의 깊게 살펴보세요!)

const http=require('http'); 
const url=require('url');
const fs=require('fs'); //引用模块前面讲过啦每个模块都是干嘛的
//创建一个http服务器
var server=http.createServer();
//让http服务器监听指定的端口
server.listen(80);
//当客户端请求到来时,处理请求消息
server.on('request',function(req,res){
    //处理消息 req请求消息,res响应消息
    console.log('nodejs服务器接收到一个请求');
    //解析客户端发来的请求消息
    console.log('请求地址'+req.url);
    var objURL=url.parse(req.url);
    /*console.log(objURL);*/
    res.setHeader('Content-Type','text/html;charset=utf-8');
    var path = objURL.pathname;
    if(path==='/login'){
        
        /*res.write(&#39;<h1>欢迎访问登录页面</h1>&#39;);*/
        fs.readFile(&#39;./public/login.html&#39;,(err,data)=>{  
            if(err){
                res.write(&#39;<h1>报错了</h1>&#39;);
            }else{
                res.statusCode=200;
                res.write(data);
                res.end();
            }
        });
        
    }else if(path===&#39;/index&#39;){
        
        fs.readFile(&#39;./public/index.html&#39;,(err,data)=>{
            if(err)throw err;//若存在错误抛出错误,后面不执行
            res.statusCode=200;
            res.write(data);
            res.end();
            
        });
    }else{
        
        fs.readFile(&#39;./public/404.html&#39;,(err,data)=>{
            if(err){
                res.write(&#39;<h1>报错了</h1>&#39;);
            }else{
                res.statusCode=404;
                res.write(data);
                res.end();
            }
        });
    }
});

이 글은 초보자에게 적합합니다. 건전한 웹 서버를 구축하려면 미들웨어에 대한 더 많은 지식이 필요합니다.

위 내용은 nodejs를 사용하여 웹 서버를 구축하는 초보자의 접근 방식의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.