nodejs

nodejs简介:

nodejs 是运行在服务端的一门语言,语法完全是使用 Javascript 来实现的,对于前端人员来说,学习 nodejs 还是比较快速的。
nodejs 因为他是运行在服务端,所以不同于 javascript 的是:js 的全局变量是window,而 nodejs 的全局变量是global。所以之前我们用的 alert 等 window 所属的方法,在 node 环境中就不能使用了。因为我们常用的 console.log 是开发人员最常用的一种方法,所以特地在 node 中加入了此方法,以便开发人员使用。

nodejs核心模块

1.http
2.https
3.fs
4.url
5.path

nodejs创建一个服务

首先我们要有一个js文件运行在nodejs上;

  1. 引入http模块
  2. 调用http的 createServer 方法来创建一个服务的实例
  3. 调用server的listen方法来监听端口
// 1. 引入 http 模块
const http = require('http')
const fs = require('fs')

// 2. 调用 http 的 createServer 方法来创建 服务实例
const server = http.createServer((req, res) => {

  // 过滤掉小图标的请求
  if (req.url !== '/favicon.ico') {
    console.log(req.url)

    if (req.url === '/getName') {
      res.writeHead(200, {
        'Content-Type': 'text/html; charset=utf-8'
      })
      res.write('李威')
      res.end()
    } else if (req.url === '/index.html') {

      // 1. 通过 fs.readFile() 来读取文件内容
      fs.readFile('./views/index.html', (error, data) => {
        if (error) {
          res.write('error')
          res.end()
        } else {
          res.write(data)
          res.end()
        }
      })
    }

    else {
      res.write('<h1>hello world</h1>')
      res.end()
    }
  }
})

// 3. 调用 server 的 listen 方法来监听端口号
server.listen(8080)

res.write() 响应中文时,会出现乱码问题
解决办法是在res.write()之前,先调用 res.writeHead() 设置响应头 : Content-Type : text/html ; charset=utf-8

请求完数据之后,必须用 res.end() 结尾 , 不然页面会出现卡死状况 。

如果在运行的时候,要想修改js里面的内容,就必须要重新开启服务,这很不方便。这里可以引入一个nodemon包,它可以监听修改,不需要重启服务 。
全局安装nodemon npm install -g nodemon

由于node可以支持es6语法,所以可以写es6语法里面的内容。

nodejs是没有web容器概念的,所以想要读取文件,就必须要自己设置路径;

1.读取html文件,
2.读取css文件,
3.读取图片信息

const server = http.createServer((req,res)=>{
    if(req.url !== '/favicon.ico'){   // 忽略icon地址
        if(req.url === '/index.html'){   // 读取html文件
            res.writeHead(200,{
                'Content-Type':'text/html; charset=utf-8'   // 设置响应头,否则html中的文字会出现乱码
            })
        
            fs.readFile('./web1/index.html',(error,data)=>{  // 读取html文件
                if(error){
                    res.write('error');
                    res.end()
                }else {
                    res.write(data);
                    res.end()
                }
            })
        }else if(req.url === '/css/style.css'){
            fs.readFile('./web1/css/style.css',(error,data)=>{  // 读取cssw文件
                if(error){
                    res.write('error');
                    res.end()
                }else{
                    res.write(data)
                    res.end()
                }
            })
        }
        else if(req.url === '/297487.jpg'){
            fs.readFile('./web1/297487.jpg',(error,data)=>{   // 读取图片信息
                if(error){
                    res.write('error');
                    res.end()
                }else{
                    res.write(data)
                    res.end()
                }
            })
        }
    }
    else{
        res.write('hello world');
        res.end()
        }
})
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容