Node.js02--01

node第一天

为什么学习node.js

  • 企业需求

    • 全栈开发工程师
    • 学习node的目的就是打开服务端学习大门,了解服务端才能更好的配合服务端
  • 基本的网站开发能力

    • 服务端
    • 前端
    • 运维部署
  • 学习node帮助学习前端高级内容

    • vue
    • react
    • angular

node是什么

  • 采用Javascript为基础,实现的后端语言
    ·node.js不是一门语言
    ·不是库、不是框架
    ·是一个javascript运行时环境
    ·简单点来讲就是node.js可以解析执行JavaScript代码
    ·以前只有浏览器可以执行解析JavaScript代码
    ·也就是说现在的JavaScript可以完全脱离浏览器来运行

  • 浏览器中的JavaScript

    • ecmascript
      • 基本语法
      • if
      • var
      • 。。。。
    • DOM
    • BOM
  • 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来进行解析处理
-------------本文结束感谢您的阅读-------------