Node初识
2021/6/27 22:22:34
本文主要是介绍Node初识,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
- 一、什么是node.js
- 1.对node的理解
- 2. nodejs能做什么?
- 二、node.js安装
- 三、命令行中的体验
- 1.vsCode运行
- 2.命令行窗口运行
- 三、Node环境和浏览器环境的区别
- 四、 Node全局对象上的属性
- 五、node.js模块
- 1.CommonJS规范
- 2.Node模块导出数据的几种方式
- 3.导入和导出
- 4.require内部处理流程步骤
- 5. exports和module.exports区别
- 6.require注意点
- 五、内置js模块
- 例:path模块
- 六、第三方模块
- 七、自定义模块
- 八、 YARN使用
- 1.什么是YARN?
- 2.YARN的安装和使用
一、什么是node.js
定义: 基于chrome v8引擎的javascript 运行环境
特点: 事件驱动,非阻塞式I/O的模型,轻量,高效,单线程、单进程
1.对node的理解
- 不是一门语言,核心就是一个让js可以运行在服务端的一个运行时 (我们可以使用js来实现服务端。
或者工具) - node中只能使用ECMASCRIPT语法本身 (node提供了内置模块可以帮我们做系统级的操作) +npm 包。
- 使用node做中间层,和前端处于一个域下,后端没有跨域问题,跨域是浏览器的限制。
- 服务端渲染(ssr),node可以解析react,vue语法渲染后返回给浏览器 如:nuxt next。
- 打包工具,如:webpack,rollup 前端可以通过node来实现各种各样的工具。
- 现在使用node其实做服务端并没有啥优势。
2. nodejs能做什么?
可以解析js代码(没有浏览器安全级别的限制)
提供很多系统级别的API:
文件的读写
进程的管理
网络的通信
- 可以解析js代码(没有浏览器安全级别的限制)
- 提供很多系统级别的API:
- 文件的读写
- 进程的管理
- 网络的通信
- …
二、node.js安装
node version manager : node的版本管理 也是一个小工具
目前来说,可以不安装这个nvm,直接安装14.xx.xx的node就可以了,推荐这种安装方式:
地址:http://nodejs.cn/download/
使用nvm安装并维护多个node.js版本
地址:https://github.com/nvm-sh/nvm
windows 安装:
https://github.com/coreybutler/nvm-windows
https://www.cnblogs.com/dreamsqin/p/10885082.html
nvm的相关命令:
- nvm install 版本号
- nvm install --lts
- nvm use 版本号
- nvm uninstall 版本号
- nvm ls-remote //查看所有的node 版本信息
三、命令行中的体验
在vsCode中编写一个可执行的js(index.js)文件如下:
function greeting(){ return "hello node111"; } console.log(greeting());
想要通过node运行此js文件,有两种方法:
1.vsCode运行
(1)首先要在vsCode中,下载一个用于运行的插件:code runner。
(2)选中需要运行的代码,点击右键–>run code,此时就会执行js代码并输出。
2.命令行窗口运行
在存储js文件的文件夹的路径栏输入cmd并回车,打开命令行工具,输入node index.js,在命令行状态下运行node。
使用node+js文件名有缺点,就是当改变js文件的内容时,需要手动重启服务器,为了解决这一问题,可以使用一个插件:nodemon,在命令行窗口中输入以下命令,-g表示全局安装。
安装成功后使用nodemon运行js文件,在修改文件内容时,服务器会自动重启。
三、Node环境和浏览器环境的区别
NodeJS环境和浏览器环境一样都是一个JS的运行环境, 都可以执行JS代码.
但是由于宿主不同所以特点也有所不同
(1)内置对象不同
浏览器环境中提供了window全局对象。NodeJS环境中的全局对象不叫window, 叫global。
(2)this默认指向不同
浏览器环境中全局this默认指向window。NodeJS环境中全局this默认指向空对象{}。
(3)API不同
浏览器环境中提供了操作节点的DOM相关API和操作浏览器的BOM相关API。NodeJS环境中没有HTML节点也没有浏览器, 所以NodeJS环境中没有DOM/BOM。
四、 Node全局对象上的属性
- 中文文档地址: http://nodejs.cn/api/
- __dirname: 当前文件所在文件夹的绝对路径
- __filename: 当前文件的绝对路径
- setInterval / clearInterval : 和浏览器中window对象上的定时器一样
- setTimeout / clearTimeout : 和浏览器中window对象上的定时器一样
- console : 和浏览器中window对象上的打印函数一样
console.log(__dirname); console.log(__filename); console.log("abc"); /* setTimeout(function () { console.log("123"); }, 2000); */ setInterval(function () { console.log("123"); }, 1000);
五、node.js模块
在 Node.js 模块系统中,每个文件都被视为一个独立的模块。
1.CommonJS规范
CommonJS规范规定了如何定义一个模块, 如何暴露(导出)模块中的变量函数, 以及如何使用定义好的
模块
- 在CommonJS规范中一个文件就是一个模块
- 在CommonJS规范中每个文件中的变量函数都是私有的,对其他文件不可见的
- 在CommonJS规范中每个文件中的变量函数必须通过exports暴露(导出)之后其它文件才可以使用。
- 在CommonJS规范中想要使用其它文件暴露的变量函数必须通过require()导入模块才可以使用
参考网站地址:
1)http://www.commonjs.org
2)http://javascript.ruanyifeng.com/nodejs/module.html
2.Node模块导出数据的几种方式
- 通过exports.xxx = xxx导出
- 通过module.exports.xxx = xxx导出
- 通过global.xxx = xxx导出
注意点:
无论通过哪种方式导出, 使用时都需要先导入(require)才能使用
通过global.xxx方式导出不符合CommonJS规范, 不推荐使用
module.exports = "字符串";//可以的 module.exports.msg = '字符串'//可以的 exports.msg = '字符串'//可以的 exports = '字符串'//不行的
3.导入和导出
方案一:
导出:
exports.xxx = xxx 或 module.exports.xxx = xxx 可以导出N个数据
导入:
let res = require("./a") res是一个对象,对象中包含了N个数据
方案二: module.exports后面的导出会覆盖前面的导出
导出:
module.exports = “hello” 导出hello
导入:
let res = require("./a") res就是一个hello、
导出:
module.exports = { name:“wc”,age:100 } 导出一个对象
导入:
let res = require("./a") res就是一个对象
强调:
- 每个文件就是一个模块,在模块里面定义的变量、函数、类都是私有的
- module 代表的当前模块 ,exports属性,代表向外提供接口(数据)
- require加载模块,读取并执行一个js文件,然后返回该模块的exports对象
- 模块加载的顺序,按照代码中出现的顺序
- 模块可以多次加载,第一次加载运行之后,会被缓存,第2次开始,就从缓存中取,就不会重新加载
4.require内部处理流程步骤
- 检查Moducle._cache, 是否缓存了指定模块
- 如果缓存没有的话,就创建一个新的module实例将它保存到缓存
- module.load()去加载指定的模块2.2 exports和module.exports区别
2.3 require注意点
2.4 内置js模块
path模块: - 如果解析的过程中,出现异常,就从缓存中删除该模块
- 返回该模块的module.exports
5. exports和module.exports区别
- exports只能通过 exports.xxx方式导出数据, 不能直接赋值
- module.exports既可以通过module.exports.xxx方式导出数据, 也可以直接赋值
注意点:
在企业开发中无论哪种方式都不要直接赋值, 这个问题只会在面试中出现。
6.require注意点
(1) require导入模块时可以不添加导入模块的类型
如果没有指定导入模块的类型, 那么会依次查找.js .json .node文件。无论是三种类型中的哪一种, 导入之后都会转换成JS对象返回给我们。
(2) 导入自定义模块时必须指定路径
require可以导入"自定义模块(文件模块)"、“系统模块(核心模块)”、“第三方模块”。导入"自定义模块"模块时前面必须加上路径。导入"系统模块"和"第三方模块"是不用添加路径。
(3) 导入"系统模块"和"第三方模块"是不用添加路径的原因
如果是"系统模块"直接到环境变量配置的路径中查找。如果是"第三方模块"会按照module.paths数组中的路径依次查找。
五、内置js模块
const http = require('http'); const qs = require('querystring'); const fs = require('fs') //涉及文件的读写.... const url = require('url'); const path = require('path'); var rs = path.resolve(__dirname, '../dev/'); console.log(rs);
例:path模块
const path = require('path'); // 处理路径的 // 默认解析的路径 是以process.cwd() chdir去更改 // __dirname 文件所在的目录 不能更改的 // 你给我一个相对路径 我还你个绝对路径,有拼接的功能, path.resolve(__dirname,'index.md','abc') console.log(path.resolve(__dirname,'index.md')); // 只是简单的拼接 console.log(path.join(__dirname,'index.md')); // 总结:如果遇到带/的路径 resolve 会认为是根路径 join则是拼接在一起 console.log(path.extname('a.min.js')); // .js 取后缀名 console.log(path.relative('a','a/a.js')); // 去掉相同的部分
六、第三方模块
所谓的第三方模块,就是别人写好的模块,我们需要下载下来使用它。
如果jquery就是一个第三方模块,要用第三方模块,先下载。
通过npm来下载:例:npm install jquery,install可以写成i。
一个项目, 可能有N个第三方模块,我们就需要一个文件,来记录你项目中都使用了哪些第三方模块,在写项目时,先需要创建这样一个配置文件,它的主要作用就是记录,你的项目中都用到了哪些第三方模块。
如何生成这个配置文件呢?
答: 通过npm init,然后一路回车,就生成一个叫package.json文件,这个文件就是项目的配置文件,这个配置文件的主要作用是记录项目所用的第三方模块(依赖),如果你不想那么麻烦,可以直接输入npm init -y
安装好的第三方模块会放在node_modules这个文件夹中的。
模块:一个文件就是一个模块。
包:N个文件,放在一个文件夹中,就形成一个包,安装一jquery,最终就是一个包(依赖)
七、自定义模块
function HelloNode() { } HelloNode.prototype = { count() { return 38; }, getStudentlist() { return [ { name: 'wangcai', age: 18 }, { name: 'xiaoqiang', age: 20 } ] } } module.exports = new HelloNode();
八、 YARN使用
如果使用npm就一直使用npm,如果用yarn,就一直使用yarn,不要混用,混用肯定会出问题。
1.什么是YARN?
- Yarn是由Facebook、Google、Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具
- Yarn 是为了弥补 npm5.0之前 的一些缺陷而出现的
注意点:
(1)在npm5.0之前,yarn的优势特别明显.但是现在NPM已经更新到6.9.x甚至7.x了。
(2)随着NPM的升级NPM优化甚至超越Yarn,所以个人还是建议使用NPM。
2.YARN的安装和使用
(1)安装
npm install -g yarn
yarn --version
(2)使用
1.初始化包
npm init -y
yarn init -y
2.安装包
npm install xxx --save
yarn add xxx
npm install xxx --save-dev
yarn add xxx --dev
3.移除包
npm uninstall xxx
yarn remove xxx
4.更新包
npm update xxx
yarn upgrade xxx --latest
5.全局安装
npm install -g xxx
npm uninstall -g xxx
npm update -g xxx
yarn global add xxx
yarn global upgrade xxx
yarn global remove xxx
这篇关于Node初识的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26Mybatis官方生成器资料详解与应用教程
- 2024-11-26Mybatis一级缓存资料详解与实战教程
- 2024-11-26Mybatis一级缓存资料详解:新手快速入门
- 2024-11-26SpringBoot3+JDK17搭建后端资料详尽教程
- 2024-11-26Springboot单体架构搭建资料:新手入门教程
- 2024-11-26Springboot单体架构搭建资料详解与实战教程
- 2024-11-26Springboot框架资料:新手入门教程
- 2024-11-26Springboot企业级开发资料入门教程
- 2024-11-26SpringBoot企业级开发资料详解与实战教程
- 2024-11-26Springboot微服务资料:新手入门全攻略