Node.js - 基本使用方法

Node.js

1、什么是Node.js?

Node.js是一个跨平台JavaScript运行环境,使开发者可以搭建服务器端的JavaScript应用程序,主要是用Node.js编写服务器端程序,编写数据接口,提供网页资源浏览功能等,它是前端工程化的基础。

2、前端工程化

前端工程化是指项目开发直到上线过程中集成的所有工具和技术,相应的工具和技术有:格式化工具、压缩工具、打包工具、转换工具、手脚架工具等,Node.js是前端工程化的基础,因为Node.js可以主动读取前端代码内容。

3、Node.js为何能执行JS?

  • 浏览器能执行JS代码,依靠的是内核中的V8引擎(C++程序)
  • Node.js是基于Chrome V8引擎进行封装(运行环境)
  • 浏览器和Node.js都支持ECMAScript标准语法,Node.js有独立的API
  • 注意:Node.js环境没有DOM和BOM等
    • 浏览器:document、window、XMLHttpRequest
    • ECMAScript:String、Number、setTimeout、console、Promise
    • Node.js:fs、path、http

4、Node.js安装

1、首先我们先进入node.js个版本下载连接,选择下载自己需要的版本。

2、下载完成后运行安装包,除了安装路径需要你选择你自己想要安装的位置以外,其他都直接点击next。

3、安装完成后按wim + R输入cmd进入命令行界面,输入node -v可以查看当前安装的node的版本,输入npm -v显示npm版本,如果都能显示则安装成功。

5、fs模块-读写文件

模块:类似插件,封装了方法/属性

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

//加载fs模块对象
const fs = require('fs')
//写入文件内容
fs.writeFile('文件路径', '写入内容', err => {
  //写入后的回调函数
})
//读取文件内容
fs.writeFile('文件路径', (err, data) => {
  //读取后的回调函数
  //data是文件内容的Buffer数据流
})

6、path模块-路径处理

在Node.js代码中,相对路径是根据终端所在路径来查找的,可能无法找到你想要的文件,因此在Node.js代码中,尽可能的使用绝对路径,Node.js中提供了一个内置变量__dirname他会获取当前模块目录的绝对路径,其中path.join()会使用特定于平台的分隔符,作为定界符,将所有给定的路径片段连接在一起。

const fs = require('fs')
const path = require('path')
fs.writeFile(path.join(__dirname, '../test.txt'), (err, data) => {
  if (err) console.log(err);
  else console.log(data.toString())
})

7、压缩前端html

我们在对项目进行封装打包时就会需要把有些文件进行初步压缩,这时候就需要把相关文件中我们为了方便阅读的格式进行压缩。

const fs = require('fs')
const path = require('path')
fs.readFile(path.join(__dirname, '相对路径'), (err, data) => {
  if (err) console.log(err)
  else{
    const htmlStr = data.toString()
    const resultStr = htmlStr.replace(/[\r\n]/g, '')
    console.log(resultStr)
    fs.writeFile(path.join(__dirname, '相对路径'), resultStr, err => {
      if (err) console.log(err);
      else console.log('写入成功')
    })
  }
})

8、URL中的端口号

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

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

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

  • 常见的服务程序
    • 21端口:FTP 文件传输服务
    • 22端口:SSH协议、SCP(文件传输)、端口号重定向
    • 23/tcp端口:TELNET 终端仿真服务
    • 25端口:SMTP 简单邮件传输服务
    • 53端口:DNS 域名解析服务
    • 69/udp:TFTP
    • 80/8080/3128/8081/9098端口:HTTP协议代理服务器
    • 110/tcp端口:POP3(E-mail)
    • 119端口:Network
    • 123端口:NTP(网络时间协议)
    • 135、137、138、139端口: 局域网相关默认端口,应关闭
    • 161端口:SNMP(简单网络管理协议)
    • 389端口:LDAP(轻量级目录访问协议)、ILS(定位服务)
    • 443/tcp 443/udp:HTTPS服务器
    • 465端口:SMTP(简单邮件传输协议)
    • 873端口:rsync
    • 1080端口:SOCKS代理协议服务器常用端口号、QQ
    • 1158端口:ORACLE EMCTL
    • 1433/tcp/udp端口:MS SQLSERVER数据库server、MS SQLSERVER数据库monitor
    • 1521端口:Oracle 数据库
    • 2100端口:Oracle XDB FTP服务
    • 3389端口:WIN2003远程登录
    • 3306端口:MYSQL数据库端口
    • 5432端口:postgresql数据库端口
    • 5601端口:kibana
    • 6379端口:Redis数据库端口
    • 8080端口:TCP服务端默认端口、JBOSS、TOMCAT、Oracle XDB(XML 数据库)
    • 8081端口:Symantec AV/Filter for MSE
    • 8888端口:Nginx服务器的端口
    • 9000端口:php-fpm
    • 9080端口:Webshpere应用程序
    • 9090端口:webshpere管理工具
    • 9200端口:Elasticsearch服务器端口
    • 10050端口:zabbix_server 10050
    • 10051端口:zabbix_agent
    • 11211端口:memcache(高速缓存系统)
    • 27017端口:mongoDB数据库默认端口
    • 22122端口:fastdfs服务器默认端口

9、http模块-创建Web服务

http模块用于创建Web服务并相应内容给浏览器,类似模拟后端处理前端发起的请求问题。

// 加载http模块,创建Web服务对象
const http = require('http')
const server = http.createServer()

// 监听request请求
server.on('request', (req, res) => {
  // 设置响应头:内容类型,普通文本:编码格式utf-8
  res.setHeader('Content-Type', 'text/plain;charset=utf-8')
  res.end('欢迎使用Node.js')
})

//配置端口号3000
server.listen(3000, () => {
  console.log('Web服务已启动');
})

10、模块化

CommonJS模块是为Node.js打包JavaScript代码的原始方式。Node.js还支持浏览器和其他JavaScript运行时使用的ECMAScript模块标准。在Node.js中,每个文件都被视为一个单独的模块。每个项目是由多个模块文件组成的,这样可以提高代码的复用性,按需加载,独立作用域,如果不同js文件之间有数据传递,需要标准语法导出和导入进行使用。

10.1、CommonJS标准

CommonJS标准简单来教就是对每个js文件模块之间的私有属性进行封装,可以提供给其他js文件进行使用,一般应用在Node.js项目环境中。

//导出
module.exports = {
  属性名1:,
  属性名2:}
//导入
require('模块名或路径')

10.2、ECMAScript标准-默认导出和导入

CommonJS规范是Node.js环境中默认的,而ECMAScript 标准语法是后面官方推出的,但是ECMAScript标准是可以在浏览器和Node.js之间都可以使用的。但是Node.js默认支持CommonJS标准语法,因此我们如果需要使用ECMAScript标准语法,需要在运行模块所在文件夹新建package.json文件,并设置{"type" : "module"}

//导出
export default{
  属性名1:,
  属性名2:}
//导入
import 变量名 from '模块名或路径'

10.3、ECMAScript标准-命名导出和导入

ECMAScript 标准的语法有很多,常用的就是默认和命名导出和导入,一般应用在前端工程化项目中。

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

//例如
export const URL = ''
import { URL } from './test.js'

默认和命名两种方式使用情况都比较多,但是如果我们只是按需加载,就推荐使用命名导入导出,如果是全部加载,就推荐使用默认导入导出。

11、包

  • 包:将模块,代码,其他资料聚合成一个文件夹

  • 包的分类:

    • 项目包:主要用于编写项目和业务逻辑
    • 软件包:封装工具和方法进行使用

在根目录种,必须有package,json文件(记录包的清单信息),导入软件包时,引入的默认时index.js模块文件/main属性指定的模块文件。

{
  "name": "cz_utils",	//软件包名称
  "version": "1.0.0",	//软件包当前版本
  "description": "描述信息",	//软件包简短描述
  "mian": "index.js",	//软件包入口点
  "author": "xia",	//软件包作者
  "license": "MIT"	//软件包许可证(商用后可以用作者名字宣传)
}

12、npm-软件包管理

npm是Node.js标准的软件包管理器,是作为下载和管理Node.js包依赖的方式,但其现在也已经成为前端JavaScript种使用的工具。

使用方法:

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

13、npm-安装所有依赖

通常情况下我们在拿到别人编写的项目时,里面是node_modules的,因此我们需要安装项目所有需要的依赖软件包,并运行 index.js 代码看是否正常!

14、npm-全局软件包nodemon

软件包的区别:

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

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

使用方法:

  • 安装:npm i nodemon -g(-g代表安装到全局环境中)
  • 运行:nodemon待执行的目录js文件

在执行目录文件中如果出现报错问题,那是因为系统禁止运行脚本,我们需要用管理员身份重新打开vscode,然后在终端中执行get-ExecutionPolicy命令,显示Restricted(表示状态是禁止的),我们只需要用set-ExecutionPolicy RemoteSigned

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值