Node.JS学习Day01

一、简介

1.1Node.js是什么?

  • Node.js 是什么
    • JavaScript 运行时环境
    • 既不是语言,也不是框架,它是一个平台

1.2 Node.js 能做什么?

  • Web服务器后台
  • 命令行工具
    • npm(node)
    • git(c语言)
    • hexo(node)
  • 对于前端开发工程师来讲,接触node最多的是它的命令行工具
    • 自己写的很少,主要是使用别人第三方开发的
    • webpack
    • gulp
    • npm

1.3 一些资源

1.4 学习内容

  • B/S 编程模型
  • 模块化编程】
    • RequireJS
    • SeaJS
    • @import('文件路径)
    • 以前认知的 JavaScript只能通过script标签来加载
    • 在 Node中可以像@import一样来引用加载JavaScript 脚本文件
  • Node常用API
  • 异步编程
    • 回调函数
    • Promise
    • async
    • generator
  • Express 开发框架
  • EcmaScript6语法
    学习Node可以让我们更好的学习前端高级内容
  • Vue.js
  • React
  • angular

二、起步

2.1 安装Node环境

Hello World

  1. 创建编写JavaScript脚本文件
  2. 打开终端,定位到脚本文件所属目录
  3. 输入node 文件名执行对应的文件
    注意: 文件名不要使用node.js来命名
  • 解析执行JavaScript
  • 读写文件
// 浏览器中的 JavaScript 是没有文件操作的能力的
// 但是 Node中的 JavaScript 具有文件操作的能力

//fs 是 file-system的简写,就是文件系统的意思
// 在NOde中如果想要进行文件操作,就必须引入 fs 这个核心模块
// 在 fs 这个核心模块中,就提供了所有的文件操作相关的Application
// 例如: fs.readFile 就是用来读取文件的

// 1. 使用 require 方法加载 fs 核心模块
var fs = require('fs');

// 2. 读取文件
/**
 * 第一个参数就是要读的文件路径
 * 第二个参数是一个回调函数
 * 	成功
 * 		data 数据
 * 		error null
 *  失败 
 * 		data null
 * 		error 错误对象
 */
fs.readFile('./data/hello.txt',function(error,data){
	//<Buffer 48 65 6c 6c 6f 20 6e 6f 64 65 6a 73>
	//默认文件中存储的其实都是二进制数据 0 1
	//这里卫视么看到的不是 0 和 1 呢? 原因是二进制都转为16进制了
	//但是无论是16进制还是二进制,人类都不认识
	//所以我们可以通过 toString 方法把其转为我们能认识的字符
	console.log(data.toString());
})
var fs = require('fs');

// 第一个参数: 文件路径
// 第二个参数: 文件内容
// 第三个参数: 回调函数
/**
 * 成功: 
 * 	文件写入成功
 * 	error 是 null
 * 失败:
 * 	文件写入失败
 * 	error 就是错误对象
 */
fs.writeFile('./data/你好.md', '大家好,给大家介绍一下,我是Node.js', function(error){
	console.log('文件写入成功');
})
  • http
    • require
    • 端口号
      • ip 地址定位计算机
      • 端口号定位具体的应用程序
    • Content-Type
      • 服务器最好把每次响应的数据是什么内容类型都告诉客户端,而且要正确的告诉
      • 不同的资源对应的 Content-Type 是不一样,具体参照:http://tool.oschina.net/commons
      • 对于文本类型的数据,最好都加上编码,目的是为了防止中文解析乱码问题
    • 通过网络发送文件
      * 发送的并不是文件,本质上来讲发送是文件的内容
      * 当浏览器收到服务器响应内容之后,就会根据你的 Content-Type 进行对应的解析处理
  • os
// 用来获取机器信息的
var os = require('os')

// 用来操作路径的
var path = require('path')

// 获取当前机器的 CPU 信息
console.log(os.cpus())

// memory 内存
console.log(os.totalmem())

// 获取一个路径中的扩展名部分
// extname extension name
console.log(path.extname('c:/a/b/c/d/hello.txt'))

三、Node中的JavaScript

  • ECMAScript
    • 变量
    • 方法
    • 数据类型
    • 内置对象
    • Array
    • Object
    • Date
    • Math
  • 核心模块
  • 第三方模块
  • 用户自定义模块

3.1 核心模块

  • 核心模块是由 Node 提供的一个个的具名的模块,它们都有自己特殊的名称标识,例如
    • fs 文件操作模块
    • http 网络服务构建模块
    • os 操作系统信息模块
    • path 路径处理模块
    • 。。。。
  • 所有核心模块在使用的时候都必须手动的先使用 require 方法来加载,然后才可以使用,例如:
    • var fs = require('fs')

3.2 用户自定义模块

  • require
  • exports

四、Node中的模块系统

  • 在 Node 中没有全局作用域的概念
  • 在 Node 中,只能通过 require 方法来加载执行多个 JavaScript 脚本文件
  • require 加载只能是执行其中的代码,文件与文件之间由于是模块作用域,所以不会有污染的问题
    • 模块完全是封闭的
    • 外部无法访问内部
    • 内部也无法访问外部
  • 模块作用域固然带来了一些好处,可以加载执行多个文件,可以完全避免变量命名冲突污染的问题
  • 但是某些情况下,模块与模块是需要进行通信的
  • 在每个模块中,都提供了一个对象:exports
  • 该对象默认是一个空对象
  • 你要做的就是把需要被外部访问使用的成员手动的挂载到 exports 接口对象中
  • 然后谁来 require 这个模块,谁就可以得到模块内部的 exports 接口对象
  • 还有其它的一些规则,具体后面讲,以及如何在项目中去使用这种编程方式,会通过后面的案例来处理
C:\Users\admin\Desktop\前端开发\Node.js\day6\code\api_server\node_modules\mysql\lib\protocol\Parser.js:437 throw err; // Rethrow non-MySQL errors ^ Error: secretOrPrivateKey must have a value at module.exports [as sign] (C:\Users\admin\Desktop\前端开发\Node.js\day6\code\api_server\node_modules\jsonwebtoken\sign.js:107:20) at Query.<anonymous> (C:\Users\admin\Desktop\前端开发\Node.js\day6\code\api_server\router_handler\2user.js:49:26) at Query.<anonymous> (C:\Users\admin\Desktop\前端开发\Node.js\day6\code\api_server\node_modules\mysql\lib\Connection.js:526:10) at Query._callback (C:\Users\admin\Desktop\前端开发\Node.js\day6\code\api_server\node_modules\mysql\lib\Connection.js:488:16) at Sequence.end (C:\Users\admin\Desktop\前端开发\Node.js\day6\code\api_server\node_modules\mysql\lib\protocol\sequences\Sequence.js:83:24) at Query._handleFinalResultPacket (C:\Users\admin\Desktop\前端开发\Node.js\day6\code\api_server\node_modules\mysql\lib\protocol\sequences\Query.js:149:8) at Query.EofPacket (C:\Users\admin\Desktop\前端开发\Node.js\day6\code\api_server\node_modules\mysql\lib\protocol\sequences\Query.js:133:8) at Protocol._parsePacket (C:\Users\admin\Desktop\前端开发\Node.js\day6\code\api_server\node_modules\mysql\lib\protocol\Protocol.js:291:23) at Parser._parsePacket (C:\Users\admin\Desktop\前端开发\Node.js\day6\code\api_server\node_modules\mysql\lib\protocol\Parser.js:433:10) at Parser.write (C:\Users\admin\Desktop\前端开发\Node.js\day6\code\api_server\node_modules\mysql\lib\protocol\Parser.js:43:10) Node.js v18.12.1
06-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值