nodejs的基础介绍与安装

引子

前端其实只有三种技术:

html,css,js

后端有很多技术:

java,php,python,Ruby(github 就是ruby做的),.net…….

node.js(我们选择的),

凡是能用JS能实现的,最终都会用js实现

其实他们都可以实现相同的功能

node.js是什么?

他不是什么:

  • 不是一个语言
  • 不是库
  • 不是框架

浏览器中的Javascript

ecmascrpt:

  • 基本的语法
  • if
  • var
  • funciton
  • ….

bom

浏览器对象模型

dom

文档对象模型

node.js中的javascript

没有bom.dom :不处理页面的

在node.js这个运行环境中为javascript提供了一些服务器级别的api

  • 文件的读写
    网络服务的构建
    网络通信
    http服务等
    ….

官网源说明

  • Node.js® is a JavaScript runtime(运行时) built on Chrome’s V8 JavaScript engine.(它可以解析执行Js,以前只有浏览器可以解析执行js,可以说是一个运行环境,构建于chrome的V8
  • Node.js uses an event-driven(事件驱动), non-blocking(非阻塞,简单来讲就是异步操作) I/O model that makes it lightweight and efficient.
  • Node.js’ package ecosystem, npm, is the largest ecosystem of open source libraries in the world. (源自官网)(npm是基于nodejs开发的包管理工具)
    绝大多数的javascript包都存放在了npm上,目的是让开发人员更方便的使用

node.js介绍

能做什么?

  • web服务器后台
  • 命令行工具
    npm(基于node开发的)
    git(c语言开发的)
    hexo
    ….

对于前端开发工程师来讲,我们接触node 最多的其实是它的命令行工具

自己写的很少,大多是用第三方的

webpack

gulp

npm

hexo

预备知识

简单的命令行操作

cd

dir

is

mkdir

rm

推荐的书籍

《深入浅出node.js》:纯理论,纯底层,可以帮助理解底层(不推新手阶段看)

《node.js权威指南》:API讲解,没有实战,没有业务,偏理论

《node入门》很重要,要看

node.js官方API

node.js中文社区:

《JavaScript 高级编程》第三版

《JavaScript 语言精粹》

能学到啥?

b/s编程模型:

browser-server

back-end

任何服务端技术 B/S 编程模型都是一样的.和语言无管。就只是语言和api不同

模块化编程:

requireJs

SeaJs

以前认知的js只能通过script标签加载,在node中可以像@import一样引用加载JS脚本文件

node.js常用的API

异步编程

回调函数

promise

async

generator

express web 开发框架

ecmascript6

一个新语法而已

安装node环境

下载:

http://nodejs.org/en/download

重新安装就会覆盖升级

确定node是否安装成功:

cmd->node --version

node 中的JavaScript

1.emcaScript

没有dom 和 bom

2.核心模块

node为JavaScript提供了很多服务器级别的API,这些API绝大多数都被包装到一个具名的核心模块中去了

例如:文件操作的fs模块,http服务构建的http模块,path路径操作模块,os操作系统信息获取……核心模块想要使用需要引用。require就是用来加载模块的

require

require 是一个方法,他的作用就是来加载模块并执行里面代码,在node中,模块有三种

具名的核心模块,例如:fs,http

用户自己编写的:就是自己写的js文件,相对路径必须加./,因为去了之后,node会把路径当做核心模块

require('./b.js')//.js的后缀名可以省略

在node中没有全局作用域,只有模块作用域

不同文件之间不会互相影响,就算调用,外部访问不到内部,内部也访问不到外部

3.第三方模块(也可以是用户自定义模块)

要想访问到, 可以用以下方法:

每个模块(文件)都有一个exports对象,要想让这个文件中的元素被外界访问到,就需要把元素挂在到exports对象中。

require有两个作用:

1.加载模块文件并执行

2.拿到exports这个接口对象

IP和端口号

ip:一台计算机只有一个物理网卡,在同一个局域网中,IP地址必须是唯一的。网卡是通过IP地址来进行定位的。

IP地址用来定位计算机。端口用来定位计算机中的软件。

可以同时开启多个服务,但是一定要确定占用的端口号不一样(计算机中,同一个端口号,同一时间,只能被一个程序占用)

响应内容类型(Concent-Type)

中文乱码问题

在服务器默认发送的数据,UTF8编码的内容,但是浏览器不知道我们是UTF8编码的内容,会按照计算机默认的操作系统去解析(中文操作系统时GBK编码)

解决方法:正确的告诉浏览器,我给你发送的内容是什么编码的

res.setHeader(‘Content-Type’,’text/plain;charset:utf-8’)

要想让浏览器按照一定方式去渲染代码,concent-type应有不同的形式:

text/html,text/plain

猜你喜欢

转载自blog.csdn.net/weixin_42194583/article/details/80681050