node第一天
为什么学习node.js
企业需求
基本的网站开发能力
- 服务端
- 前端
- 运维部署
学习node帮助学习前端高级内容
- vue
- react
- angular
node是什么
采用Javascript为基础,实现的后端语言
·node.js不是一门语言
·不是库、不是框架
·是一个javascript运行时环境
·简单点来讲就是node.js可以解析执行JavaScript代码
·以前只有浏览器可以执行解析JavaScript代码
·也就是说现在的JavaScript可以完全脱离浏览器来运行浏览器中的JavaScript
- ecmascript
- 基本语法
- if
- var
- 。。。。
- DOM
- BOM
- ecmascript
node.js中的JavaScript
- 没有BOM DOM
- EcmaScript
- 在node这个JavaScript执行环境中为JavaScript提供了一些服务器级别的操作API
- 例如文件读写
- 网络服务的构建
- 网络通信
- http 服务器
- 。。。。
构建与chrome v8引擎之上
- 代码只是一串特殊的字符串
- 引擎可以认识它,引擎可以帮忙去解析和执行
- Google chrome v8的引擎目前是公认的解析执行JavaScript代码最快的
事件驱动
非阻塞I/O模型(异步)
清凉和高效
npm是世界上最大的开源库生态系统
- 绝大多的JavaScript相关的包都放在了npm上,这样做的目的是为了让更多的开发人员更方便的下载使用
能做什么
- web服务器后台
- 命令行工具
- npm
- git(C)
- hexo
- 。。。
- 对于前端开发工程师来说,使用最多的是它的命令行工具
一些资源
《深入浅出node.js》 —朴灵,偏理论没有任何实战内容 理解底层原理有帮助
《node.js权威指南》 —API讲解,无实战
js标准参考教程:http://javascript.ruanyifeng.com/
node入门:http://www.nodebeginner.org/index-zh-cn.html
官方API文档:https://nodejs.org/dist/latest-v6.x/docs/api
CNODE社区:http://cnodejs.org
CNODE新手入门:http://cnode.org/getstart
能学到啥
- B/S编程模型
- brower server
- 任何服务器端这种BS编程模型都是一样,与语言无关
- node 只是我们学习BS编程模型的一个工具而已
- 模块化编程
- Require JS
- SeaJS
- @import(‘’)
- 以前认知的js只能用script标签来加载
- 在node中可以向@import()一样来引用加载js脚本文件
- node常用API
- 异步编程
- 回调函数
- Promise
- async
- generator
- express 开发框架
- ES6
helloworld
1、创建js脚本文件
2、打开终端,定位到脚本所属目录
3、输入‘node文件名’执行相应文件
注意:文件名不能以node.js来命名,不然会打开文件,且最好不要使用中文 code代码中的 01-noBOMandDOM.js
读写文件
读文件和写文件全部通过实例代码编写放在code代码文件夹里面
http
http服务请求最简单的如04-http.js相关代码文件注释
node中的js
·EcmaScript
·核心模块
·第三方模块
·用户自定义模块
核心模块
node为JavaScript提供了很多服务器级别的API,这些API绝大多数都被包装到了一个具名的核心模块中了。
例如文件操作的fs核心模块,http服务构建的http模块,path路基那个操作模块,os操作系统信息模块。。。。
已经给我们封装起来了,直接使用不过就是要引入模块
用户自定义模块
- 相对路径必须加./
- 在node中没有全局作用域,只有模块作用域,简单来讲就是文件作用域,只在文件作用域中有效,出了文件以后就无效,也不会污染其它文件
- 相对路径中的./不能省略(会把它当成核心模块名来进行加载了)
- 可以省略后缀名
端口号
- 计算机中只有一个物理网卡,而且同一份局域网中,网卡的地址必须是唯一的。
- 网卡是通过唯一的ip地址来进行定位的。
- IP地址用来定位计算机,端口号用来定位具体的应用程序(所有需要联网的程序都需要端口号)。
- 服务器(相当于是一台24小时不关机的计算机)里面可能会有很多软件的内存,但是这一台服务器在一个相同的局域网内,当另外一台计算机访问服务器想要获取内容时候,必须得根据相对应的软件来在服务器中找到相对应的软件,所以这就需要端口号,用来表示同一个局域网同一台计算机中的不同软件。即通过端口号来寻找在同一个服务器上的不同应用程序
- 一切需要联网通信的软件都会占用一个端口号
- 端口号的范围在0-65536
- 计算机有一些默认的端口号,最好不要去使用
- 例如http服务的80
- 使用一些好记的且没有含义的就可以3000 5000 8000
- 可以同时开启多个服务,但是要保证服务的端口号不一样
- 同一时间,同意端口号只能被同意程序占用
content-type
用来高速浏览器我发给你的数据是什么内容
解决方法就是告诉浏览器使用什么编码
res.setHeader(‘Content-Type’,’text/plain;charset=utf-8’)
- text/plain 就是普通文本
- 如果发送的是html格式的字符串,则也要高速浏览器发送的是html文档 text/html
- 图片不需要指定编码了,因为我们常说的编码一般是:字符编码
- 通过网络发送文件
- 发送的不是文件而是文件的内容
- 根据content-type来进行解析处理