Nodejs基础知识
目标
- 能够知道Node以及Node.js是什么
- 能够安装Node运行环境
- 能够知道系统环境变量PATH的作用
- 能够使用Node环境执行代码
Node开发的概述
为什么要学习服务器端开发基础
- 能够和后端程序员更加紧密的配合
- 网站业务逻辑前置,学习前端技术需要后端技术支撑(Ajax)
- 扩宽知识视野,能够站在更高的角度审视整个项目
服务器端开发要做的事情
- 实现网站的业务逻辑
- 数据的增删改查
为什么选择Node
- 使用JavaScript语法开发后端应用
- 一些公司要求前端工程师掌握Node开发
- 生态系统活跃,有大量开源库可以使用
- 前端开发工具大多基于Node开发
Node是什么(★★★)
Node是一个基于Chrome V8引擎的JavaScript代码运行环境
[外链图片转存失败(img-0e2sHjd1-1568032893241)(images/chrome.png)]
[外链图片转存失败(img-FTSUzays-1568032893242)(images/huanjing.png)]
运行环境
- 浏览器(软件)能够运行JavaScript代码,浏览器就是JavaScript代码的运行环境
- Node(软件)能够运行JavaScript代码,Node就是JavaScript代码的运行环境
Node.js是什么(★★★)
- Node.js是运行在代码环境之上的语言
- JavaScript代码运行在浏览器中,JavaScript是语言,浏览器是运行环境
- JavaScript代码运行在Node 中,Node.js是语言,Node是运行环境
Node.js环境搭建(★★★)
Node.js环境安装
官网:https://nodejs.org/en/
[外链图片转存失败(img-NOxitl1Z-1568032893243)(images/node-v.png)]
- LTS = Long Term Support 长期支持版 稳定版
- Current 拥有最新特性 实验版
[外链图片转存失败(img-azfnjpup-1568032893244)(images/node-v2.png)]
- 双击运行文件,选择相应的安装目录,下一步即可
- 安装完成后,window健+r 弹出运行窗口,输入cmd或者powershell打开命令行窗口,输入 node -v 来查看是否安装成功
Node环境安装失败解决办法
错误代号2502、2503
[外链图片转存失败(img-qH78vP7R-1568032893246)(images/error1.png)]
**失败原因:**系统帐户权限不足。
解决办法:
- 以管理员身份运行powershell命令行工具
- 输入运行安装包命令 msiexec /package node安装包位置
执行命令报错
[外链图片转存失败(img-gXnvtROs-1568032893248)(images/error2.png)]
**失败原因:**Node安装目录写入环境变量失败
**解决办法:**将Node安装目录添加到环境变量中
PATH环境变量
存储系统中的目录,在命令行中执行命令的时候系统会自动去这些目录中查找命令的位置
[外链图片转存失败(img-WCVeB6lW-1568032893249)(images/path.png)]
Node.js快速入门(★★★)
Node.js 的组成
- JavaScript 由三部分组成,ECMAScript,DOM,BOM。
- Node.js是由ECMAScript及Node 环境提供的一些附加API组成的,包括文件、网络、路径等等一些更加强大的 API。
[外链图片转存失败(img-htgJxPbB-1568032893252)(images/zucheng.png)]
Node.js基础语法
- 所有ECMAScript语法在Node环境中都可以使用
- 在Node环境下执行代码,使用Node命令执行后缀为.js的文件即可
- 切换文件目录比较麻烦,可以当当前工作空间里面按住 shift健 加鼠标右键,选择 此处打开命令窗口
[外链图片转存失败(img-lUGDY5kl-1568032893253)(images/node-jichu.png)]
Node.js全局对象 global
在浏览器中全局对象是window,在Node中全局对象是global。
Node中全局对象下有以下方法,可以在任何地方使用,global可以省略
- console.log() 在控制台中输出
- setTimeout() 设置超时定时器
- clearTimeout() 清除超时时定时器
- setInterval() 设置间歇定时器
- clearInterval() 清除间歇定时器
模块加载及包
目标
- 能够使用模块导入导出方法
- 能够使用基本的系统模块
- 能够使用常用的第三方包
- 能够说出模块的加载机制
- 能够知道package.json文件的作用
Node.js模块化开发
JavaScript开发弊端
JavaScript在使用时存在两大问题,文件依赖和命名冲突
[外链图片转存失败(img-F0q4N8xd-1568032893256)(images/jsbiduan.png)]
生活中的模块化开发
[外链图片转存失败(img-3jjHjYSk-1568032893259)(images/mokuaihua1.png)]
软件中的模块化开发
[外链图片转存失败(img-SZv6c9Wy-1568032893261)(images/mokuaihua2.png)]
Node.js中模块化开发规范(★★★)
- Node.js规定一个JavaScript文件就是一个模块,模块内部定义的变量和函数默认情况下在外部无法得到
- 模块内部可以使用exports对象进行成员导出, 使用require方法导入其他模块。
[外链图片转存失败(img-sJSYKjxr-1568032893263)(images/mokuaihua3.png)]
模块导出第一种方式:示例代码
A模块
const add = (n1, n2) => n1 + n2;
exports.add = add;
B模块
//const a = require('./03.module-a.js');
//通过 require 进行导入
const a = require('./03.module-a');
console.log(a.add(10, 20));
模块成员导出的另一种方式:示例代码
A模块
const greeting = name => `hello ${
name}`;
module.exports.greeting = greeting;
B模块
const a = require('./04.module.exports.js');
console.log(a.greeting('zhangsan'));