Node的基本了解(一)

什么是node

        单独把浏览器里面的**解析引擎**拆下来安装在电脑里,这样就不需要浏览器也能运行js代码

      node就是把javascript这个语言扩展到后端范畴,又是前端又是后端。

    前端 JavaScript

        三大核心

            ECMAScript

            DOM

            BOM

        操作内容

            浏览器

            解决兼容问题

    后端 JavaScript(node)

        核心

            ECMAScript

        操作内容

            后端代码

            数据库

    node我们不需要解决兼容问题,不需要DOM和BOM,只关注业务逻辑就可以。

    node的特点

    1.标准的异步编程 不阻塞代码

    2.合理分配资源 谁该干什么干什么

    3.高并发I/O模块

        快速高并发的处理文件

        I(input) / O(output)

        输入输出流

 

    下载node安装包

        直接到[node官网](https://nodejs.org/en/)或者[node中文网](http://nodejs.cn/)点击下载就可以

        注意:**在node中文网下载的时候,不选择二进制安装包**

    检测安装环境

        1.打开运行窗口(win+r)

        2.写入cmd然后按回车,来到命令行

        3.在命令行写入一个指令 node -v按下回车,得到一个node版本号就安装成功,

    在node环境下运行JS代码

        方式一 

        直接在命令行运行,缺点是代码没法保存

            打开命令行->输入指令 node->回车->直接写JS代码

        方式二 

        把要在node环境里运行的JS代码写在一个.js后缀的文件里面,文件名和目录名尽量不写中文,不能命名为node.js

            打开命令行->把目录切换到js文件的目录下->node+空格+要运行的s文件名+回车

      退出js代码书写环境Ctrl+c按两次

    常用的LINUX操作(window系统)

        什么是LINUX操作

            其实就是在命令行使用指令来操作我们的电脑

        目录操作

            1.查看当前目录下所有文件

                dir(window命名)

            2.以树状结构展示当前目录下所有文件及子目录下的所有文件

                tree(window命名)

            3.进入子级文件夹

                cd 文件夹名称

            4.返回上一级目录

                cd ..

            5.切换盘符(Mac没有)

                盘符:

        操作文件

            1.创建文件夹

                mkdir 创建的文件夹名称

                md 创建的文件夹名称

            2.删除文件夹

                rd 删除的文件夹(只能删除空文件夹)

                rd /s/q 删除的文件夹(强制删除不为空的文件夹)

            3.复制一个文件夹

                xcopy 需复制的文件夹名称 复制以后的文件夹名称

            4.创建文件

                type nul>创建的文件名

            5.向文件里面写入一些内容

                echo 写入的内容>指定文件

            6.向文件里面追加内容

                echo 写入尼尔>>指定文件

            7.查看文本里面内容

                type 查看额文件名

            8.给文本重命名

                ren 需修改的文件 改成什么名字

            9.复制文件

                copy 要复制额文件名 复制以后的文件名

            10.删除文件

                del 删除的文件名

            11.移动文件

                move 移动文件名 移动到哪一个目录

        操作系统

            1.清楚当前命令行的所有内容

                cls

            2.查看电脑ip信息

                ipconfig

            3.测试网速

                ping www.baidu.com

            4.查看电脑信息

                systeminfo

    node的模块化

        每一个js文件都是一个独立的模块,都有自己独立额作用域,通过导入导出的方式把多个js文件合并在一起。

        导入: 在node中,使用require来导入一个文件

        导出:每一个 js 文件都会有一个对象叫做 module,在 module 里面有一个成员叫做 exports,每一个 js 文件会默认把 module.exports,导出也就是说,我们向 module.exports 中添加什么内容,那么就会导出什么内容

        1.内置模块

            安装node这个环境的时候自动带的模块

        2.自定义模块

            自己书写一个JS文件

        2.第三方模块

            别人写好的文件,下载下来使用

        常用的内置模块

            FS模块

            fs是node的一个内置模块,专门用来操作文件,使用的时候直接导入就可以了

            cnost fs=require('fs')

            1.用来**异步**读取文件的方法

// fs.readFile(参数1,参数2,参数3)
// 参数1:需要读取的文件(必填)
// 参数2:读取文件格式,字符集格式(选填)
// 参数3:读取成功的回调函数
const fs=require('fs')
fs.readFile('./index.txt','utf8',function(err,data){
    //这个函数是在读取文件成功之后执行的回调函数
    // 接受两个形参
    // err:读取失败的时候失败信息
    // data:读取成功的时候读取的内容
    // 读取额内容默认是buffer格式的字符串(我们看不懂,但计算机看的懂)将第二个参数传递一个'utf8',这样出来的内容我们就可以看懂
    console.log('读取文件成功');
    if(err){
        return console.log(err);
    }
    console.log(data);  
})

            2.用来**同步**读取文件的方法

// fs.readFileSync(参数1,参数2)
// 参数1:需读取的文件(必填);
// 参数2:读取文件格式(选填)
// 返回值:读取成功的时候读取的内容,如果读取失败,直接打断程序的执行,报错
const fs=require('fs')
let data=fs.readFileSync('./index.txt','utf8')
// data 读取文件成功时候的文件内容
console.log(data)

            3.用来**异步**写入文件的方法

// fs.writeFile(参数1,参数2,参数3)
// 参数1:写入到哪个文件
// 参数2:需写入的内容
// 参数3:写入成功的回调函数
// 写入时覆盖式写入,如果写入的文件不存在,会自动创建一个文件
const fs=require('fs')
fs.writeFile('./index.txt','添加内容1',function(err,data){
    console.log('写入成功'); 
    if(err){
        return console.log(err);
    }  
    console.log(data);
})

            4.用来**同步**写入文件的方法

// fs.writeFileSync(参数1,参数2)
// 参数1:写入到哪个文件
// 参数2:需写入的内容
const fs=require('fs')
fs.writeFileSync('./abcd.txt','你好呀')

            5.用来**异步**追加文件

// fs.appendFile(参数1,参数2,参数3)
// 参数1:写入到哪个文件
// 参数2:需写入的内容
// 参数3:写入成功的回调函数
const fs=require('fs')
fs.appendFile('./index.txt','追加内容',function(){
    console.log('追加成功'); 
    if(err){
        return console.log(err);
    }  
    console.log(data);
})

      HTTP模块

        因为node是一个服务端语言,所以一定可以开启服务器,开启一个服务

        http这个模块就是专门用来开启服务,并且接受请求,返回响应的

        http也是一个内置模块,直接导入使用 const http=require('http')

        http 模块里面创建服务的方法

          1. http.createServer(function () {})

              返回值: 就是一个服务

             当这个服务监听一个端口号的时候, 就变成了一个服务器

        2. 使用这个服务去监听一个端口号

             你创建的服务.listen(你要监听的端口号, 监听成功的回调函数(选填))

       3.上面的代码写好以后, 当你再终端运行这个文件的时候

             你的那个终端就是一个服务器了

             就可以打开浏览器去访问 localhost:你自己定义的端口号

// 0. 导入 http 模块
const http = require('http')
const fs = require('fs')

// 1. 创建一个服务
const server = http.createServer(function (req, res) {
  // 这个函数是前端的每一个请求都会执行的函数
  // 只有再我监听的端口号有请求过来的时候, 就会执行这个函数
  // 这个函数接收两个形参
  //   req(request) => 表示每次请求的信息
  //     req.url 表示本次请求的地址
  //   res(response) => 表示每次请求的响应
  //     res.end() 表示本次给回的响应
  // console.log('我执行了, 表示有请求进来了')
  // console.log(req.url)

  // 通过不同的 url 来做不同的事情了
  if (req.url === '/index.html') {
    // 表示前端向获取 index.html 文件
    // 我就读取到这个文件给它
    fs.readFile('./index.html', 'utf8', function (err, data) {
      if (err) return console.log(err)

      // index.html 文件里面的内容
      // console.log(data)
      // 只要把这个文本返回给前端
      res.end(data)
    })
  }
})

// 2. 监听一个端口号
//    端口号 0 ~ 65535
//    0 ~ 1023 不推荐使用
server.listen(8080, function () {
  console.log('监听 8080 端口成功')
})

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章