node.js

1、介绍

是一个跨平台的javascript的运行环境,使开发者可以搭建服务器端的javascript应用程序

2、fs模块

fs 模块:封装了与本机文件系统进行交互的,方法/属性

//加载fs模块
const fs=require('fs')
//写入文件内容
fs.writeFile('文件路径','写入内容',err=>{
})
//读取文件
fs.readFile('文件路径',(err,data)=>{
})

3、path模块

在Node.js 代码中,相对路径是根据终端所在路径来查找的,可能无法找到你想要的文件

以下是采用相对路径的情况:

const fs=require('fs')
fs.readFile('../text.txt',(err,data)=>{
    if(err) console.log(err);
    else console.log(data.toString());
})
//如果不在index.js的终端下运行,则会出现报错

报错显示:

如果在index.js的终端下执行,才能够成功运行

绝对路径:

采用绝对路径就不会出现该错误,不管在哪个终端运行都能成功的出现结果

__dirname内置对象:获取当前模块目录-绝对路径

path.join(): 会使用特定于平台的分隔符,作为定界符,将所有给定的路径片段连接在一起

const fs=require('fs')
const path=require('path')
console.log(__dirname);

fs.readFile(path.join(__dirname,'../text.txt'),(err,data)=>{
    if(err) console.log(err);
    else console.log(data.toString());
})
//运行结果
//C:\Users\gyc\Desktop\node.js\代码和笔记\04-素材(模板代码)\01>node index.js 
//C:\Users\gyc\Desktop\node.js\代码和笔记\04-素材(模板代码)\01
//hello,node.js

4、url中的端口号

URL:统一资源定位符,简称网址,用于访问服务器里的资源

端口号:标记服务器里不同功能的服务程序

端口号范围:0-65535 之间的任意整数

eg:http://hmajax.itheima.net:80/api/province

http协议,默认访问80端口

注意:0-1023 和一些特定端口号被占用,我们自己编写服务程序请避开使用

5、http 模块

1、创建web服务

1. 加载 http 模块,创建 Web 服务对象
2. 监听 request 请求事件,设置响应头和响应体
3. 配置端口号并启动 Web 服务
4. 浏览器请求 http://localhost:3000 测试
(localhost:固定代表本机的域名)

const http=require('http')
const server=http.createServer()
server.on('request',(req,res)=>{
  res.setHeader('Content-Type','text/plain;charset=utf-8')
//text/plain 设置响应结果为普通文本
  res.end('欢迎使用node.js和http创建的web服务')
//访问成功后出现的结果
})
server.listen(4567,()=>{
  console.log('web服务启动成功');
})
//此时在浏览器中输入http://localhost:4567,即可访问成功

2、web服务中读取已写好的html文件

const fs=require('fs')
const path=require('path')
const http=require('http')
const server=http.createServer()
server.on('request',(req,res)=>{
//判断请求路径是否为index.html
  if (req.url==='/index.html'){
    fs.readFile(path.join(__dirname,'dist/index.html'),(err,data)=>{
      if(err) console.log(err);
      else{
//text/html 为超文本
        res.setHeader('Content-Type','text/html;charset=utf-8')
        res.end(data.toString())
      }
    })
  }else{ 
    res.setHeader('Content-Type','text/html;charset=utf-8')
    res.end('路径错误')
  }

})
//访问8080端口来启动web服务
server.listen(8080,()=>{
  console.log('web服务启动了');
})

6、node.js模块化

概念:项目是由很多个模块文件组成的

(1)、commonjs标准

使用:
1. 导出:module.exports = {}
2. 导入:require('模块名或路径')

模块名或路径:
✓ 内置模块:直接写名字(例如:fs,path,http)
✓ 自定义模块:写模块文件路径(例如:./utils.js)

/**
 * 目标:基于 CommonJS 标准语法,封装属性和方法并导出
 */
//utils.js文件
const baseURL = 'http://hmajax.itheima.net'
const getArraySum = arr => arr.reduce((sum, item) => sum + item, 0)

module.exports = {
  url: baseURL,
  arraySum: getArraySum
}


//index.js文件
const obj = require('./utils.js')
console.log(obj)
const result = obj.arraySum([5, 1, 2, 3])
console.log(result)

(2)、ECMAScript 标准 

默认标准使用:
1. 导出:export default {}
2. 导入:import 变量名 from '模块名或路径’

注意:Node.js 默认支持 CommonJS 标准语法

如需使用 ECMAScript 标准语法,在运行模块所在文件夹新建 package.json 文件,并设置 { "type" : "moduls"}

//utils.js文件
/**
 * 目标:基于 ECMAScript 标准语法,封装属性和方法并"默认"导出
 */
const baseURL = 'http://hmajax.itheima.net'
const getArraySum = arr => arr.reduce((sum, item) => sum += item, 0)

// 默认导出
export default {
  url: baseURL,
  arraySum: getArraySum
}


//package.json文件
{
  "type": "module"
}

//index.js文件
// 默认导入
import obj from './utils.js'
console.log(obj)
const result = obj.arraySum([10, 20, 30])
console.log(result)

//输出结果
C:\Users\gyc\Desktop\node.js\代码和笔记\03-code\02_npm模块化\02>node index.js
{ url: 'http://hmajax.itheima.net', arraySum: [Function: getArraySum] }
60

 (3)、ECMAScript 标准 - 命名导出和导入

1. 导出:export 修饰定义语句
2. 导入:import { 同名变量 } from '模块名或路径‘

//utils.js模块
/**
 * 目标:基于 ECMAScript 标准语法,封装属性和方法并"命名"导出
 */
export const baseURL = 'http://hmajax.itheima.net'
export const getArraySum = arr => arr.reduce((sum, item) => sum += item, 0)


//package.json文件
{
  "type": "module"
}

//index.js文件
import {baseURL, getArraySum} from './utils.js'
console.log(obj)
console.log(baseURL)
console.log(getArraySum)
const result = getArraySum([10, 21, 33])
console.log(result)

7、包

包:将模块,代码,其他资料聚合成一个文件夹
包分类:
✓ 项目包:主要用于编写项目和业务逻辑
✓ 软件包:封装工具和方法进行使用
要求:根目录中,必须有 package.json 文件(记录包的清单信息)
注意:导入软件包时,引入的默认是 index.js 模块文件 / main 属性指定的模块文件

1、npm - 软件包管理器

使用:
1. 初始化清单文件 :npm init -y(得到 package.json 文件,有则略过此命令)
2. 下载软件包 :npm i 软件包名称
3. 使用软件包
npm - 软件包管理器

下载的包会存放在当前项目下的 node_modules 中,并记录在 package.json 中

2、npm - 安装所有依赖

项目中不包含 node_modules不能正常运行,缺少依赖的本地软件包
自己用 npm 下载依赖比磁盘传递拷贝要快得多

项目终端输入命令:npm i

下载 package.json 中记录的所有软件包

3、npm - 全局软件包 nodemon

软件包区别:
➢ 本地软件包:当前项目内使用,封装属性和方法,存在于 node_modules
➢ 全局软件包:本机所有项目使用,封装命令和工具,存在于系统设置的位置

nodemon 作用:替代 node 命令,检测代码更改,自动重启程序

使用:
1. 安装:npm i nodemon -g(-g 代表安装到全局环境中)
2. 运行:nodemon 待执行的目标 js 文件
需求:启动准备好的项目,修改代码保存后,观察自动重启应用程序
npm - 全局软件包 nodemon

8、node.js常用命令的总结

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值