前端学习笔记--node.js

Node

  • Node 可以理解成 ECMAScript + 内置的模块组成的,引用第三方模块, npm系统 node package manager。

  • node是基于js的,前端来写服务端通过node是最方便的,node的性能问题 内部采用的多线程。

  • node中主线程还是单线程的 (文件读写,内部还是基于多线程的), 非阻塞 异步I/O.基于事件驱动

  • node中没有锁的概念

  • node的应用场景 处理 i/o (文件读写)密集型,不适合处理cpu密集型 (压缩加密 和计算相关的)

  • node中处理多个异步操作同一个文件件的场景 (靠队列实现)

  • 可以解析js语法

    • 服务端渲染vue,react
    • 中间层 (跨域)
    • 前端会用node来实现很多工具
    • 可以做后端 mongo mysql

传统的语言是什么样子的? 多线程同步

  • 默认多个线程访问同一个资源 需要加锁
  • 在高并发场景下 ,多线程需要不停的切换时间片 “并发” 、“并行”
  • 并行的概念 多线程 在不同的cpu下执行操作。 采用多进程的方式,让系统更加稳定,而且可以实现高并发

Process | Global |Commander | Debug

​ 服务端全局变量原则是global, 但是node在执行的时候为了实现模块化,会在执行代码时,外部包装一个函数,这个函数在执行的时候会改变this指向。可以直接访问这些变量。后面的五个属性都可以在文件中直接访问,但是不能通过global来获取

  • process

    • platform 或如平台 windows -> win32 ,mac => darwin
    • cwd current working directory (你在哪执行的这个文件)
    • env 环境变量,默认我们代码在执行的时候回去读取电脑中的环境
    • argv 执行命令时所带的参数 1.代表的是可执行node.exe 2.执行的是哪个文件
  • **commander ** 命令行管家,第三方模块用的时候需要下载

 const { program } = require('commander');
 program.version('0.0.1');
 program
     .option('-d, --debug', 'output extra debugging')
     .option('-s, --small', 'small pizza size')
     .option('-p, --pizza-type <type>', 'flavour of pizza')
     .command('run').action(() => {
         console.log('run')
     });
 
 program.parse(process.argv);
 const options = program.opts();
 console.log(options)
  • __filename

  • __dirname

  • exports

  • module

  • require

Node常用API

  • fs
  • path
  • vm
  • Buffer
  • event
  • http

node中的模块

  • 1.内置模块 、核心模块 2.第三方模块 commander/co 3.文件模块(有相对路径 、 绝对路径)。模块遵循 commonjs 规范 es6Module规范。

  • es6Module “静态”导入, 在编译的时候就可以知道使用了哪些变量, 可以实现tree-shaking (都是发送http请求)

  • commonjs 模块 “动态导入”, commonjs 模块是不支持tree-shaking (读文件 同步操作)

  • commonjs 模块定义了自己的规范,按照规范来使用就可以

    • 如果想使用哪个模块 就require谁 (后缀可以省略 默认会查找.js 文件, 没有js找.json)

    • 如果这个模块需要被别人使用,需要导出具体的内容 module.exports 更改这个变量导出的结果

    • 在node中每个文件js,json文件都是一个模块

    • 一个包中含有多个模块 (每个包都必须配置一个package.json 文件)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mDeepLearning4205

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值