// 在 Node 中,采用 EcmaScript 进行编码
// 没有 BOM、DOM
// 和浏览器中的 JavaScript 不一样
console.log(window)
console.log(document)
第一点区别就是:浏览器中的JavaScript是没有文件操作的能力的
读取文件:
写文件:writefile:
浏览器是不认识node.js代码的
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<!-- <script src="00-helloworld.js"></script> -->
<!-- <script src="01-没有bom和dom.js"></script> -->
<script src="02-读取文件.js"></script>
</body>
</html>
读取,写入文件 error中的值是null,if则是false,错误,返回的是对象,那么是true
根据这个给出提示语 回调函数的作用
随时用一个node开一服务器吗? http
导入node核心模块
注册request请求事件:
注册 request 请求事件
// 当客户端请求过来,就会自动触发服务器的 request 请求事件,然后执行第二个参数:回调处理函数
server.on('request', function () {
console.log('收到客户端的请求了')
})
创建服务器简单四步走:1.加载核心模块,2,创建web服务器实例3,注册请求事件,
4.绑定端口号,启动服务器
// 接下来,我们要干一件使用 Node 很有成就感的一件事儿
// 你可以使用 Node 非常轻松的构建一个 Web 服务器
// 在 Node 中专门提供了一个核心模块:http
// http 这个模块的职责就是帮你创建编写服务器的
// 1. 加载 http 核心模块
var http = require('http')
// 2. 使用 http.createServer() 方法创建一个 Web 服务器
// 返回一个 Server 实例
var server = http.createServer()
// 3. 服务器要干嘛?
// 提供服务:对 数据的服务
// 发请求
// 接收请求
// 处理请求
// 给个反馈(发送响应)
// 注册 request 请求事件
// 当客户端请求过来,就会自动触发服务器的 request 请求事件,然后执行第二个参数:回调处理函数
server.on('request', function () {
console.log('收到客户端的请求了')
})
// 4. 绑定端口号,启动服务器
server.listen(3000, function () {
console.log('服务器启动成功了,可以通过 http://127.0.0.1:3000/ 来进行访问')
})
怎么说呢:一个是请求事件函数request,一个是参数request,
// 上面的方式比较麻烦,推荐使用更简单的方式,直接 end 的同时发送响应数据
// res.end('hello nodejs')
就是res.end(这里只能是字符串,或者二进制)
意思应该是,我想在是个数组,而你要求的是字符串,
所以我输出会出错,但是你转化成字符串就不会出错了
用Json.stringify ,然后就可以转了,它就会以为是字符串了,原样给你输出
就是说,我这里不能填数组,
所以你必须填你转化之后的数组,我才能认识是字符串
这就是数据接口吗?
大概有十几个
菜鸟教程只是列出了一些基础的API,想要了解更多的话,
只能上官网
在js中,当想要执行多个文件,就是Css,或者js文件时,直接引入就可以了
那么在node中怎么引入多个文件呢
这个require的执行顺序有点像递归啊!
require的作用就是加载模块啊
在 Node 中,没有全局作用域,只有模块作用域
外部访问不到内部
// 内部也访问不到外部
默认都是封闭的
// 既然是模块作用域,那如何让模块与模块之间进行通信
// 有时候,我们加载文件模块的目的不是为了简简单单的执行里面的代码,更重要是为了使用里面的某个成员
就是说,你导入的文件,里面的东西还是里面的,它不会暴露出来,只能是我自己的文件才可以访问
加载模块的后缀名可以省略,那意思是说什么文件都可以导入咯
require 方法有两个作用:
// 1. 加载文件模块并执行里面的代码
// 2. 拿到被加载文件模块导出的接口对象
// 这两个是同时进行的
// 在每个文件模块中都提供了一个对象:exports
// exports 默认是一个空对象
// 你要做的就是把所有需要被外部访问的成员挂载到这个 exports 对象中
所以在使用核心模块,我们接受的时候,它是已经封装好的export了的,直接用就好了
要注意的是,自己导出的和原来封装好的API的一些区别,作用肯定是不一样的
一个是加载一个是导出
服务器不也是一台电脑吗?也有自己的ip地址,
那当我访问百度是,肯定经过DNS服务器解析,
然后找到百度这台服务器
软件就是通过端口来识别的
这些什么的啊,Apache服务,之类的都是软件
卸载了就没了啊
当客服端发送过来的消息是qq,浏览器页面请求,那我怎么识别,
就是通过端口号进入不同的房间 就是用来定位应用程序的
我打开服务器之后,127.0.0.1,也可以是我电脑的ip地址
在这个局域网中都可以访问
// ip 地址用来定位计算机
// 端口号用来定位具体的应用程序
// 所有需要联网通信的应用程序都会占用一个端口号
可以开启多个服务,但是端口号必须是唯一的
urf-8是所有的语言都支持的,
默认当前操作系统去解析中文操作系统默认是gbk
解决方法就是正确的告诉浏览器我给你发送的内容是什么编码的
// 在 http 协议中,Content-Type 就是用来告知对方我给你发送的数据内容是什么类型
这句话会出现在响应头中
// res.setHeader('Content-Type', 'text/plain; charset=utf-8')
然后这一节讲的conrent-Type,字符编码的问题
希望浏览器帮我们解析成什么语言
读取到的文件内容是放在data中的
本来data的内容应该是一个二进制的,但是res.end(),已经帮转了吧
node和vue有什么关系,应该是都不要DOM吧
都是使用核心的API
服务器里面的文件修改了,不用重启,但是
修改了服务器的内容是要重启的
content-Type 对照表 http://tool.oschina.net/commons
就是不用写:charset
url 统一资源定位符
# Node.js 第1天
## 上午总结
- Node.js 是什么
+ JavaScript 运行时
+ 既不是语言,也不是框架,它是一个平台
- Node.js 中的 JavaScript
+ 没有 BOM、DOM
+ EcmaScript 基本的 JavaScript 语言部分
+ 在 Node 中为 JavaScript 提供了一些服务器级别的 API
* 文件操作的能力
* http 服务的能力
## 总结
- Node 中的 JavaScript
+ EcmaScript
* 变量
* 方法
* 数据类型
* 内置对象
* Array
* Object
* Date
* Math
+ 模块系统
* 在 Node 中没有全局作用域的概念
* 在 Node 中,只能通过 require 方法来加载执行多个 JavaScript 脚本文件
* require 加载只能是执行其中的代码,文件与文件之间由于是模块作用域,所以不会有污染的问题
- 模块完全是封闭的
- 外部无法访问内部
- 内部也无法访问外部
* 模块作用域固然带来了一些好处,可以加载执行多个文件,可以完全避免变量命名冲突污染的问题
* 但是某些情况下,模块与模块是需要进行通信的
* 在每个模块中,都提供了一个对象:`exports`
* 该对象默认是一个空对象
* 你要做的就是把需要被外部访问使用的成员手动的挂载到 `exports` 接口对象中
* 然后谁来 `require` 这个模块,谁就可以得到模块内部的 `exports` 接口对象
* 还有其它的一些规则,具体后面讲,以及如何在项目中去使用这种编程方式,会通过后面的案例来处理
+ 核心模块
* 核心模块是由 Node 提供的一个个的具名的模块,它们都有自己特殊的名称标识,例如
- fs 文件操作模块
- http 网络服务构建模块
- os 操作系统信息模块
- path 路径处理模块
- 。。。。
* 所有核心模块在使用的时候都必须手动的先使用 `require` 方法来加载,然后才可以使用,例如:
- `var fs = require('fs')`
- http
+ require
+ 端口号
* ip 地址定位计算机
* 端口号定位具体的应用程序
+ Content-Type
* 服务器最好把每次响应的数据是什么内容类型都告诉客户端,而且要正确的告诉
* 不同的资源对应的 Content-Type 是不一样,具体参照:http://tool.oschina.net/commons
* 对于文本类型的数据,最好都加上编码,目的是为了防止中文解析乱码问题
+ 通过网络发送文件
* 发送的并不是文件,本质上来讲发送是文件的内容
* 当浏览器收到服务器响应内容之后,就会根据你的 Content-Type 进行对应的解析处理
- 模块系统
- Node 中的其它的核心模块
- 做一个小管理系统:
+ CRUD
- Express Web 开发框架
+ `npm install express`
来源:https://www.cnblogs.com/Py-king/p/11242169.html