5. Node基础编程

  • 基于Chrome V8引擎
  • 单线程
  • 使用JavaScript开发后端代码
  • 非阻塞的IO

common规范

common一定是通过module.exports={}输出

创建Http Server

node demo.js

//文件demo.js
let http=require('http');//调用http模块
let url=require('url');//请求头
let util=require('util');

let server=http.createServer((req,res)=>{
    res.statusCode=200;//返回状态码
    res.setHeader("Content-Type","text/plain;charset=utf-8");//服务器响应头

    console.log(req.url);// /demo.html?a=123 不包含hash

    console.log(url.parse(req.url));//把url转换为对象

    console.log(util.inspect(url.parse(req.url)))//把对象转换为字符串

    res.end('hello,node.js');//响应结束输出
})

server.listen(8081,'127.0.0.1',()=>{
    console.log('服务器已运行')
})

加载静态页面
http://localhost:8081/login.html node sever.js

//文件sever.js
let http=require('http');//调用http模块
let url=require('url');//请求头
let util=require('util');
let fs=require('fs');//文件系统

let server=http.createServer((req,res)=>{
    var pathname=url.parse(req.url).pathname;
    fs.readFile(pathname.substring(1),function(err,data){//读取文件,pathname.substring(1)去掉路径前的'/'
        if(err){
            res.writeHead(404,{
                "Content-Type":"text/html"
            });
        }else{
            res.writeHead(200,{
                "Content-Type":"text/html"
            });
            res.write(data.toString());
        }
        res.end();//响应结束,要放在读取文件的内部
    });    
})

server.listen(8081,'127.0.0.1',()=>{
    console.log('服务器已运行')
})

调用第三方接口

let http = require('http'); //调用http模块
let util=require('util');

http.get('http://www.imooc.com/index/getstarlist', res => {
    let data = '';

    res.on('data', chunk => {//监听
        data += chunk;
    });

    res.on('end', () => {
        let result = JSON.parse(data);
        console.log(util.inspect(result));
    });
})

Express框架

cnpm i -g express-generator 安装express generator
express --version 检查版本
express server 生成默认项目,在server文件夹内
bin 可执行文件
public 静态资源
routes 路由
views 视图
app.js 入口

node server/bin/www 访问

用webStorm启动
运行 -> 编辑结构 -> +(新添配置) -> js file:"serverinwww"

pm2 插件启动

$ npm install pm2 -g
$ pm2 start app.js

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

原文地址:https://www.cnblogs.com/conglvse/p/9521871.html