Node
- node官网:https://nodejs.org/en/
- node中文网:http://nodejs.cn/
什么是 node:
- 官网说法
Node.js is a JavaScript runtime built on Chrome’s V8 JavaScript engine.
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 - 通俗的解释
其实 node 就是用 javascript 语言写 后端
也就是说,我们的 javascript 有了 node 以后,不光是一个前端语言,也是一个后端语言
Node是一个后端环境,搭载的是javascript语言
Node是个环境,不是语言 - 前端 javascript
- 三大核心
ECMAScript
DOM
BOM - 操作内容
浏览器
解决兼容问题
- 三大核心
- 后端 javascript (node)
- 核心
ECMAScript - 操作内容
后端代码
数据库
- 核心
- 也就是说,node 我们不需要解决兼容问题,不需要 DOM 和 BOM,只关注业务逻辑就可以了
node下载
- 直接node官网下载 https://nodejs.org/en/
- 官网分为两个版本 LTS 以及 Current 版
LTS 即 Long Term Support (LTS) schedule.长期支持版本 / 稳定版
Current 为最新版 。
选择 LTS 版本下载
node安装
- 下载好以后,我们直接把下载好的文件双击运行,全部下一步,默认装C盘即可
检测安装是否成功
运行命令提示符 cmd window+r cmd
输入 node -v
成功显示版本号即为安装成功
NODE 的导入导出
- node 的开发是模块化开发
- 每一个 js 文件都是一个独立的模块
- 都有自己独立的作用域
- 我们可以通过 导入导出 的方式把多个 js 文件合并在一起
导入
在 node 里面,我们使用 require 来导入一个文件
// 我是 index.js 文件
require('./a.js')
console.log('我是 index.js 文件')
导出
- 我们在写一个 js 文件的时候,可以向外导出一些内容
- 将来在这个文件被导入的时候,就可以接受到一些内容
// 我是 a.js
// 每一个 js 文件都会有一个对象叫做 module
// 在 module 里面有一个成员,叫做 exports
// 每一个 js 文件会默认把 module.exports 导出
// 也就是说,我们向 module.exports 中添加什么内容
// 那么就会导出什么内容
module.exports.name = 'Jack'
module.exports.age = 18
- 将来这个文件被导入的时候,接受到的内容就是一个对象,里面有两个成员
// 我是 index.js
const a = require('./a.js')
console.log(a) // { name: 'Jack', age: 18 }
模块化
- 在 node 的开发过程中
- 我们是把每一个功能独立做成一个模块
- 然后在使用 导入导出 的方式把他们关联在一起
- 利于维护
- 准确定位
- 我们一般把模块分为三种
- 内置模块 (node 天生就带有的模块)
- 自定义模块 (我们自己写的文件)
- 第三方模块 (从网上下载的别人写好的模块)
NODE 常用的内置模块
fs 模块
提供了一个 API,用于以模仿标准 POSIX 函数的方式与文件系统进行交互。
- 要使用此模块:
const fs = require('fs');
- 异步的读取某一个文件内的内容 (异步需要在回调中使用读取的内容)
fs.readFile('./text.txt', 'utf8', function (err, data) {
// err 表示读取的时候出现的错误
// data 表示读取到的内容,如果出现错误,那么是 data 是没有内容的
})
- 异步的向一个文件写入内容
fs.writeFile('./text.txt', '我是要写入的内容', function (err) {
// err 表示写入的时候出现的错误
console.log('写入完成')
})
- 异步追加文件
fs.appendFile('./text.txt', '我是要写入的内容', function (err) {
// err 表示写入的时候出现的错误
console.log('追加完成')
})
- 同步的读取一个文件
const res = fs.readFileSync('./text.txt', 'utf8')
- 同步写入文件
fs.writeFileSync('./text.txt', '我是要写入的内容')
HTTP 模块
-
因为 node 是一个服务端语言
-
所以 node 一定也可以开启一个服务器,开启一个服务
-
http 这个模块就是专门用来开启服务,并且接受请求,返回响应的
-
http 也是一个内置模块,直接导入使用就行
const http = require('http' )
创建一个服务
const server = http.createServer(function (request, response) {
// 前端发来的每一个请求都会触发这个函数
// request 包含着所有的请求信息
// response 是所有的响应信息
})
监听一个端口
server.listen(8080, function () {
// 这个函数会在服务开启成功以后执行
console.log('listening on port 8080')
})
给出一个响应
- 简单给出一个响应
const http = require('http')
http.createServer( (req , resp ) => {
resp.end('hello world')
}).listen( 8080 , () =>{
console.log( 'listening on port 8080')
})
- 此时,打开浏览器
- 地址栏输入 localhost:8080
- 浏览器就会响应文字 hello world
path模块
-
path模块提供用于处理文件路径和目录路径的实用工具。 它可以使用以下方式访问:
const path = require('path');
-
console.log(__dirname)
可以查看项目根路径 __dirname -
path.parse
- 方法返回一个对象,其属性表示 path 的重要元素。
dir <string>
root <string>
base <string>
name <string>
ext <string>
const str = 'c://nz/code/index.js'
// path.parse
console.log(path.parse(str))
{
root: 'c:/',
dir: 'c://nz/code',
base: 'index.js',
ext: '.js',
name: 'index'
}
const path = require('path')
const obj = {
root: 'c:/',
dir: 'c://nz/code',
base: 'index.js',
ext: '.js',
name: 'index'
}
console.log(path.format(obj))
c://nz/code\index.js
const path = require('path')
console.log(path.join(__dirname,'../teacher/nz1908-node-lesson'))
url模块
const url = require('url')
const baidu = 'http://www.baidu.com/pic/icon/index.html?id=3&from=index#top'
console.log(url.parse(baidu))
const url = require('url')
const obj = {
// 协议
protocol: 'http:',
// 斜线
slashes: true,
// 认证
auth: null,
host: 'www.baidu.com',
port: null,
hostname: 'www.baidu.com',
hash: '#top',
search: '?id=3&from=index',
query: 'id=3&from=index',
pathname: '/pic/icon/index.html',
path: '/pic/icon/index.html?id=3&from=index',
href: 'http://www.baidu.com/pic/icon/index.html?id=3&from=index#top'
}
console.log(url.format(obj))