Nodejs 入门

作者: 辉夜乀 | 来源:发表于2017-12-06 10:57 被阅读25次

nodejs 是什么

nodejs is a JavaScript runtime built on Chrome's V8
nodejs 并不是一门语言,而是一个运行环境
特点:

  • 事件驱动
  • 非阻塞 I/O

非阻塞I/O

  • 阻塞:I/O时进程休眠等待I/O完成后进行下一步。
  • 非阻塞:I/O时函数立即返回,进程不等待I/O完成。

事件驱动

  • I/O等异步操作结束后的通知
  • 观察者模式

为什么前端偏爱nodejs

  • 前端职责范围变大,统一开发体验
  • 在处理高并发,I/O密集场景性能优势明显

CPU密集 VS I/O密集

  • CPU密集: 压缩、解压、加密、解密
  • I/O密集: 文件操作、网络操作、数据库

web 常见场景

  • 静态资源读取
  • 数据库操作
  • 渲染页面

高并发应对之道

  • 增加机器数
  • 增加每台机器的CPU数——多核

进程

  • 进程:是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位
  • 多进程:启动多个进程,多个进程可以一块执行多个任务

nodejs 环境

  • nodejs 官网:https://nodejs.org/en/
  • CommonJS: 模块化规范
  • global: 全局对象,nodejs 没有 DOM、BOM,全局是global
  • process: 进程

一个栗子

image

nodejs 自动帮我们做了,外面包了一个函数,实现模块化。

CommonJS

  • 每个文件是一个模块,有自己的作用域,比如上面栗子,外面包裹了一个函数,就变成了局部作用域了。
  • 在模块内部 module 变量代表模块本身。
  • module.exports 属性代表模块对外的接口

require 规则

  • / 表示绝对路径,./ 表示相对于当前文件的相对路径
  • 支持 js、json、node 拓展名,不写的话就会依次尝试。
  • 不写路径则认为是 build-in 内部自带的模块或者各级 node_modules 内的第三方模块。

require 特性

  • module 被加载的时候执行,加载后缓存,也就第一次加载并执行,第二次有缓存就不加载了。
  • 一旦出现某个模块被循环加载,就只输出已执行的部分,还未执行的部分不会输出。(太绕了,要避免循环引用)

nodejs 内置模块

api文档

  • fs 文件系统模块,用来做文件的读写,

第三方模块 node_modules

  • chalk 模块,可以让输出带颜色。 image
    image

module.exports 与 exports 的区别

const exports = modules.exports
    //exports 是 module.exports 的快捷方式
    
exports.test = 100;
    //可以给 exports 添加属性。
    
exports = {
    test: 150
}   //这是错误的用法,因为改变了 exports 的指向,模块输出找不到。

module.exports = {
    test: 200
}   //这是可以的,因为输出的模块是 module.exports

global 全局对象

  • CommonJS
  • Buffer:处理二进制数据流
  • process:进程
  • console
  • timer

把变量赋给 global 对象作为属性,则所有的文件都能拿到该变量。

timer

  • setImmediate:下一个事件队列的队首。
  • setTimeout:定时执行,最快是在两个事件队列之间。
  • process.nextTick:当前事件队列的队尾。

来看一下三个的执行顺序


image image

可以看到,执行顺序是 nextTicksetImmediate要早,而setTimeout由设定的时间来决定,如果时间为0,则是在两个事件队列之间。

相关文章

  • React Native的极简手册

    安装入门 安装入门可以参考:React Native官方文档。 NodeJS知识储备:参考《NodeJS入门》。(...

  • Node入门到入门(Windows)

    Node入门到入门(Windows) 安装NodeJS和NPM 1.安装NodeJS和NPM ​ 打开...

  • nodejs入门

    nodejs入门 花了点时间整理了下nodejs入门的图谱,如果将整个图谱的点都过了一次,相信你的nodejs知识...

  • NODE.JS

    入门 NODE安装 http://www.runoob.com/nodejs/nodejs-install-set...

  • nodejs 学习路线

    <1--nodejs入门> 1.准备-- js语言入门: -- JavaScript 教程 ...

  • 库&插件&框架&工具

    nodejs 入门 nodejs 入门教程,大家可以在 github 上提交错误2016 年最好用的表单验证库 S...

  • Node.js文档和教程

    七天学会NodeJS:https://nqdeng.github.io/7-days-nodejs/Node入门:...

  • 2018-01-03

    学习顺序以及资源 node 入门 《nodejs入门》 如何系统地学习Node.js?

  • StarUml3.0安装破解及Nodejs使用

    StarUml+Nodejs入门 安装Nodejs 1. 从官网上下载nodejs的安装包 2. 检验是否安装成功...

  • Win10部署Docker + mongodb + node.j

    本文主要参考了docker入门nodejs+mongodb以及Nodejs 应用简单的访问Mongodb 部署至D...

网友评论

    本文标题:Nodejs 入门

    本文链接:https://www.haomeiwen.com/subject/hsskixtx.html