nodejs是什么?
Node.js 是一个基于 Chrome V8 引擎的 JavaScirpt 运行环境。
Node.js不是一门新的语言
Node.js不是一个库、框架。
Node.js是一个JavaScript运行时环境。
Node.js可以解析和执行JavaScript代码
以前只有浏览器可以解析执行JavaScript代码
现在JavaScript可以完全脱离浏览器的运行,一切都归功于,Node.js
浏览器中的JavaScript
EcmaScript:js的基本语法规则,例如:if、var、function、Object、Array
BOM
DOM
node.js中的JavaScript
没有BOM、DOM
EcmaScript语法
在Node这个JavaScript执行环境中为JavaScript提供了一些服务器级别的操作API
- 读写文件
- 网络服务的构建
- 网络通信
- http服务器
构建于chrome的V8引擎智商
- 代码只是具有特定格式的字符串而已
- 引擎可以认识它,引擎可以帮你去解析和执行
- Google Chrome 的V8引擎是目前工人的解析执行JavaScript代码最快的
- Node.js的作者把Google Chrome 中的V8引擎移植了出来,开发了一个独立的JavaScript运行时环境。
node.js的特点
event-driven 事件驱动
non-blocking I/O model 非阻塞IO模型(异步)
lightweight and efficient 轻量和高效
node.js有完整的生态系统
node内置npm命令,npm是世界上最大的开源生态系统
绝大多数与JavaScript相关的包都存放在npm,方便开发人员更方便的去下载和使用
例如:npm install jquery
node.js能做什么
web服务器后台
开发命令行工具
npm
hexo
这门课的主要内容
B/S编程模型
- Brower-Server
- back-end
- 任何服务器技术这种BS编程模型都是一样,和语言无关
- Node是作为我们学习BS编程模型的一个工具
模块化编程
- RequireJS
- SeaJS
- @import('文件路径') // css文件引入
- 以前认知的JavaScript只能通过script标签来加载
- 在Node中可以像@import()一样来引用加载JavaScript脚本文件,因为浏览器是不认识import和export
Node常用API
异步编程
- 回调函数
- Promise
- async
- generator
Express开发框架
Koa开发框架
Node.js的安装
//查看自己电脑当前的node版本
node --version
node的下载地址
左边的是稳定版,右边是最新特性版,
在公司选择稳定版,学习可以安装最新特性版
node执行js文件
创建一个helloworld.js的文件
var hello = 'Hello World'
console.log(hello)
node helloworld.js
执行结果
在node.js中是没有bom和dom
但是有global
console.log(document)
console.log(window)
console.log(global)
node.js如何读写文件
读取文件
var fs = require('fs');
fs.readFile('./world.txt',function(error,data) {
//<Buffer e4 bd a0 e5 a5 bd>输出十六进制数据
console.log(data);
//需要toString()转化成我们能看懂的数据
console.log(data.toString());
})
写入文件
var fs = require('fs');
fs.writeFile('./你好.md','你好哈哈哈哈',function(error) {
if(error){
console.log('写入失败')
} else {
console.log('写入成功')
}
})
http模块
http.js
// 引入http模块
var http = require('http');
//使用http.createServer() 创建一Web服务器
//返回一个Server实例
var server = http.createServer();
// 当客户端请求过来,就会自动触发服务器的request请求时间,然后执行第二个参数:回调处理
server.on('request',function(resquest,response) {
// 获取浏览器请求地址
console.log(resquest.url);
// 返回的文字
response.write('hello ');
response.write('world');
// 必须要写上,否则不能结束返回,不能加载资源
response.end()
})
//绑定端口号,启动服务器
server.listen(3000,function() {
console.log('服务器启动成功了,可以通过http://127.0.0.1:3000/来进行访问');
})