JavaScript学习笔记(四十六)——Node

Node.js简介

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时。

网址:

什么是Node.js?

Node.js是一个JavaScript运行环境。实际上它是对Google V8引擎进行了封装。V8引擎执行JavaScript的速度非常快,性能非常好。Node.js对一些特殊用例进行了优化,提供了替代的API,使得V8在非浏览器环境下运行更好。

Node.js是一个基于Chrome JavaScript运行时建立的平台,用于方便地搭建响应速度快、易于扩展的网络应用。Node.js使用事件驱动,非阻塞I/O模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。

Node.js的特点:

  • 单线程
  • 非阻塞I/O
  • V8虚拟机
  • 事件驱动

Node.js的模块

  • 模块化规范:
    • AMD——前端的异步加载模块规范,(依赖前置: 指的是在定义模块时,就将所依赖的模块标明)
    • CMD——前端的异步加载同步书写模块规范,(依赖就近: 指的是在定义模块时,用到哪个模块,才引入哪个模块)
    • CommonJS——后端的同步加载模块

注意:

  • 在node中使用ECMAScript编码,没有DOM和BOM
  • 浏览器中的JS没有文件操作能力,但是node中的JS是有文件操作能力的
  • 浏览器是不认识node代码的

Node.js中的模块分类

  • 一种是内置模块/核心模块
  • HTTP模块——用于搭建服务器
    例如:Hello World案例
// 引入http模块
var http = require('http');
// 搭建服务器
server = http.createServer(function(req, res){
	res.setHeader("content-type","text/plain;charset=utf-8");
	res.end("Hello World");
});
// 端口监听
server.listen(3000, "127.0.0.1");
  • FS模块——用于操作文件和文件夹
// 引入fs模块
var fs = require('fs');
+ 追加\创建文件
    + fs.appendFile(target, content, callback) 异步创建文件 
    + fs.appendFileSync(target, content) 同步创建文件
+ 写文件
	+ fs.writeFile(target, content, callback) 异步写入数据到文件
	+ fs.writeFileSync(target, content) 同步写入数据到文件
+ 删除文件
    + fs.unlink(target, callback) 异步删除文件
    + fs.unlinkSync(target) 同步删除文件
+ 创建文件夹
    + fs.mkdir(target, callback) 异步创建文件夹
    + fs.mkdirSync(target) 同步创建文件夹
+ 删除文件夹(只能删除空的)
    + fs.rmdir(target, callback) 异步方法
    + fs.rmdirSync(target) 同步方法
+ 读取文件
    + fs.readFile(target, callback) 异步读取
    + fs.readFileSync(target) 同步读取
+ 读取文件夹
    + fs.readdir(target, callback) 异步读取
    + fs.readdirSync(target) 同步读取
+ 判定目标状态
    + fs.stat(target, callback) 异步判定
    + fs.statSync(target) 同步判定
  • 一种是第三方模块:别人写好的模块,自己写的模块都属于第三方模块

NodeJS模块化相关

定义模块

  • 在NodeJS中,一个JS文件默认就是一个模块
  • 注意:JS文件不要使用node.js命名,除了node这个名字,可以使用其他任意名字来命名,当然最好不要使用中文名

暴露接口方式

  • exports
    • 只能通过点语法或者方括号语法进行内容的暴露
    • 不可以使用等号暴露内容
  • module.exports
    • 可以通过module.exports点语法或者方括号语法向外暴露内容
    • 可以通过等号暴露内容
    • 一旦使用module.exports = xxx 之后,exports将会失效

引入模块

  • require
    • 引入的内容取决于目标模块暴露的内容
    • 参数可以是直接的内部核心模块名称
    • 可以是./开头的相对路径

node_modules文件夹

该文件夹就是普通文件夹,但是nodejs赋予了特殊的意义: 只要你的名字是 node_modules ,不论是如何创建出来,就是一个node的模块"聚集地"。

特殊之处:只要一个第三方模块放在了该文件夹下,就可以不通过./这种相对路径写法,直接写文件名就能找得到,而且不论层级(但一定要在同级或上级)

引入第三方模块的查找规则:
1、查找同级别中是否存在node_modules文件夹,如果有就进去查看是否有express模块
1.1、如果有,就引用
1.2、如果没有,继续向上一层文件夹中去找node_modules文件夹,如果有就进去查看是否有espress模块,如果有就引用,如果没有就继续往上查找,直到找到,如果到盘符根目录还没有,就报错 connot find module “express”


## NPM(node package management) NPM是一个NodeJS的模块管理器,随着Node安装到我们的系统中。可以在任意的命令行目录下调用它。它可以上传、下载、查询模块等。
  • 下载命令

    • npm install moduleName——安装moduleName这个模块到本地
    • npm i moduleName——安装moduleName这个模块到本地,是第一种的简写方式
    • npm i moduleName -g——安装moduleName这个模块到全局
  • 初始化

    • npm init——生成一个package.json文件 该文件的作用是描述你的模块的相关信息的
  • 清除缓存

    • npm cache clean --force

package.json(该文件十分十分十分十分地重要)

这是一个用于记录当前项目(模块)信息的文件

  • name 模块名/项目名
  • version 版本号
  • description 信息描述
  • author 作者信息
  • contributors 贡献者们
  • dependencies 生产依赖
  • devDependencies 开发依赖
  • repository 仓库地址
  • main 程序入口文件
  • keywords 关键字
  • scripts 脚本编辑 我们可以利用它来简化命令
    {
    命令代号: 具体命令,
    命令代号1: 具体命令1,
    命令代号2: 具体命令2

    }
    具体一点:
    {
    build: “node server.js”
    }
    则:
    $ npm run build
    等同于:
    $ node server.js
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值