NodeJS 知识总结

NodeJs 是什么?Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。NodeJs 特点在 node 中采用EcmaScript进行编码,没有 DOM 和 BOM在 node 中没有 windownode 中的模块化在node中,模块有三种具名的核心模块 例如:fs、http、os用户自己编写的
摘要由CSDN通过智能技术生成
NodeJs 是什么?

Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。
Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。

NodeJs 特点
  • 在 node 中采用EcmaScript进行编码,没有 DOM 和 BOM
  • 在 node 中没有 window
node 中的模块化

在node中,模块有三种

  • 具名的核心模块 例如:fs、http、os
  • 用户自己编写的文件模块
  • 由第三方提供,使用的时候我们需要通过 npm 进行下载然后才可以加载使用,例如我们使用过的 mime、art-template、marked
    注意:不能有第三方包的名字和核心模块的名字是一样的,否则会造成冲突

require 方法有两个作用

  • 加载文件模块并执行里面的代码
  • 拿到被加载文件模块导出的接口对象

require 方法特点

  • require 优先从缓存加载,即 require 多次同一个文件只会执行一次文件中的代码

Node 中是模块作用域,默认文件中所有的成员只在当前文件模块有效
对于希望可以被其他模块访问的成员,我们就需要把这些公开的成员都挂载到 exports 接口对象中就可以

导出多个成员(必须在对象中):

exports.a = 123
exports.b = 'hello'
exports.c = function () {
   }
exports.d = {
   }

导出单个成员(拿到的就是函数、字符串):

module.exports = 'hello'
module.exports = function () {
   }
//    最终导出的是 function (后面覆盖前面)

也可以这样导出多个成员:

module.exports = {
   
     str: 'hello',
     add: function (x, y) {
   
         return x + y
     }

exports 和 module.exports 的区分:

在 node 中每个模块内部都有一个自己的 module 对象
该 module 对象中,有一个成员叫:exports 也是一个对象(默认为空对象)
node 为了简化你的操作,专门提供了一个变量 exports = module.exports,即 exports 是 module.exports 的一个引用

var module = {
   
    exports: {
   
        foo: 'bar',
        add: function
    }
}

在使用的时候
导出单个成员:module.exports = xxx
导出多个成员:exports.xxx = xxx

require 标志符分析

路径形式的模块:

require('./foo.js')

./ 当前目录 不可省略
../ 上一级目录 不可省略
/xxx 绝对路径 几乎不用
D:/ 几乎不用
首位的 / 在这里表示的是当前文件模块所属磁盘的根路径

核心模块:

require('fs')

核心模块的本质也是文件
核心模块文件已经被编译到二进制文件中,我们只需要按照名字来加载就可以

第三方模块:

require('art-template')

凡是第三方模块都必须使用 npm 下载
使用的时候就可以通过 require(‘包名’) 的方式来进行加载使用
不可能有任何一个第三方包和核心模块的名字是一样的

加载过程:

  • 先找到当前文件所处目录中的 node_modules 目录
  • node_modules/art-template/package.json 文件
  • node_modules/art-template/package.json 文件中的 main 属性
  • main 属性中就记录了 art-template 的入口模块即 index.js
  • 然后加载使用这个第三方包
  • 实际上最后加载的还是文件 即 index.js 文件

特殊情况:
如果 package.json 文件不存在,或 main 指定的入口模块也没有
则 node 会自动找该目录下的 index.js,也就是说 index.js 会被作为一个默认备选项
如果以上所有任何一个条件都不成立,则会进入上一级目录中的 node_modules 目录查找,规则一致
如果当前磁盘根目录都找不到,会报错: can not find module xxx

模块查找机制:

  • 优先从缓存加载
  • 核心模块
  • 路径形式的模块
  • 第三方模块
fs 模块

浏览器中的 js 没有文件操作的能力,node 中的 js 具有文件操作能力。
在 node 中如果想要进行文件操作,就必须引入 fs 这个核心模块。
在 fs 模块中,提供了所有文件操作相关的 API

读文件

// 1.使用require 方法加载fs核心模块
var fs = require('fs');

// 2.读取文件   
// 第一个参数是要读取的文件路径    
// 第二个参数是一个回调函数 
//   成功  
//     data   数据
//     error  null
//   失败
//     data   undefined
//     error  错误对象

fs.readFile('./data/hello.txt',function(error,data){
   
    // <Buffer 68 65 6c 6c 6f 20 6e 6f 64 65 2e 6a 73>
    // 默认文件中存储的都是二进制数据  将二进制转成了十六进制 
    console.log(
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值