Node.js-入门笔记
[toc]
一、安装
安装教程:https://www.runoob.com/nodejs/nodejs-install-setup.html
【以windows为例:】
【直接下载 .exe文件,然后配置环境变量】
下载地址:https://nodejs.org/dist/
【下载 .msi安装包,配置环境变量】
下载地址:https://nodejs.org/en/download/
安装完毕后,打开 cmd ,检查 node.js 版本
二、Node.js 基础
2.1 Node.js 的两种模式
脚本模式
:先写代码,保存为xxx.js
后,使用 node 运行交换模式
:实时运行 REPL【类似 python的IDLE
】,cmd中输入node
2.2 Node应用程序的组成部分
- 引入 required 模块:我们可以使用 require 指令来载入 Node.js 模块。
- 创建服务器:服务器可以监听客户端的请求,类似于 Apache 、Nginx 等 HTTP 服务器。
- 接收请求与响应请求 服务器很容易创建,客户端可以使用浏览器或终端发送 HTTP 请求,服务器接收请求后返回响应数据。
实例1:
- 保存下列代码为
1.js
- cmd中进入该文件所在目录,输入
node 1.js
【1.js为文件名】
1 | # 请求node自带的http服务,并赋给变量http_s |
小结:
实例1-要点:
- 引入
http
模块- 使用
http
模块的createServser( ).listen(端口号)
2.3 NPM 包管理器
注意:【一般用 淘宝的cnpm
代替 npm 】
下载 NPM【使用淘宝镜像】:npm install -g cnpm --registry=https://registry.npm.taobao.org
2.3.1 NPM 安装服务器上的程序:
语法:npm install 模块名
例如:npm install express
- 安装node中的web框架-express,
- 下载到了工程目录的node_modules 目录下,
- 因此,无需指定路径,
- 可以直接引用
var express = require('express');
2.3.2 全局安装 和 本地安装
- 全局安装 :
npm install express # 本地安装
- 安装包放在 ./node_modules 下(运行 npm 命令时所在的目录)
- 通过 require() 来引入
- 本地安装 :
npm install express -g # 全局安装
- 安装包放在 /usr/local 下或者你 node 的安装目录
- 可直接在命令行里使用
1. 列出 全局安装 的所有模块
cmd中直接输入npm list -g
【不要在REPL中输入】
2. 列出 全局安装 的某个模块
cmd中直接输入npm list 模块名
3. package.json
package.json 位于模块的目录下,用于定义包的属性
4. 卸载、更新、搜索 - 模块
npm uninstall 模块名
npm update 模块名
npm search 模块名
三、案例
3.1 基础
Node.js是 1个 让 js运行在服务器端的开发平台。
在以前,js代码需要借助 HTML 才能运行。
- 使用运行 js的指令【在命令行下】:
node ./abc.js
,然后在浏览器127.0.0.1:3000
- 每次对js文件进行修改,就要
ctrl + c
,然后重新node ./abc.js
- 通用模板:
1 | // 请求模块 |
3.2 res.write( ) 与 res.end( ) 的区别:
【都可输出html标签】
- res.write( ): 普通的输出,在其后必须要有 res.end( );不能输出非字符串
- res.end( ):最后一次输出,只要遇到 res.end( ),即使后面有 res.write( )也不执行;不能输出非字符串
3.3 前导-实例
3.4 fs模块【异步读取本地文件】
实例1:读取文件
1 | //导入模块 |
实例2:路由1
传统:路由即文件夹
node.js: 颠覆传统,通过路由读取文件,实现顶层路由设计
实例2:路由2-页面跳转
1 | const http = require("http") |
实例3:路由-图片
1 | const http = require("http") |
实例4:路由-页面+图片
当需要请求的资源很多时,可使用 node 的 express 模块来静态化1个文件夹,使得文件夹内的文件无需单独设置路由就可直接加载。
3.5 模块
- 在 1个 HTML中引入多个 js 文件,则这些js文件共用1个宿主环境,公用作用域,所有的变量都属于 window对象
- require( “模块名”)
- 在Node中,所有的js文件的作用域都是隔离的【因为node没有window对象】,
为了使js文件可以向其他文件暴露出部分内容,可以使用 exports
1 | //模块文件 |
3.6 exports 和 module.exports 的区别:
- exports 可以暴露模块的多个参数
- module.exports 只暴露1个参数【通常为构造函数】
1 | //构造方法 |
1 | let People = require("./1.1.5"); |
3.7 导入模块
3.8 NPM
npm社区https://www.npmjs.com/
在社区中搜索关键字,查找模块,根据文档安装和使用模块
1 | npm install 模块名 |