1、什么是nodeJS
NodeJS一个基于chrome的V8引擎的JAVascript的运行环境。NodeJS使用了一个事件驱动以及非阻塞式的I/O式模型
NodeJS的NPM是全球最大的包管理网站
V8引擎:
内核, 脚本引擎 , 渲染引擎
I/O: input output
什么是npm?
1、包管理器
2、是一个命令
3、是一个网站
npm常用的命令
npm install :安装pack.json中的依赖
npm install <包名> --save 生产环境中的依赖
npm install <包名> --save-dev 开发环境中的依赖
npm install <包名> -g 全局安装(能不用就不用)
npm uninstall <包名> 删除
npm update <包名> 升级
npm cache clean 清除缓存
yarn包管理网站(推荐)
cnpm install yarn -g 安装
yarn init ==npm init
yarn add <包名> 等价于 npm install <包名> -S 生产环境中的依赖
yarn add <包名> -dev 等价于 npm install <包名> -D 开发环境中的依赖
yarn add 包名 -g 全局安装
yarn upgrade [package]
yarn remove [package]
yarn install
安装的过程是异步的,会有缓存,下次安装的时候会缓存中进行安装。
2、NodeJS与JavaScript有什么区别
1、原生JS运行js文件的时候需要依赖于浏览器
2、nodeJS运行文件的时候服务 终端
3、原生JS的东西会有兼容性。Node中不会有兼容性
4、本地文件读写 服务器创建 连接数据库(原生JS无法做到的) nodeJS都可以做到
(原生JS中有BOM,DOM,但是NodeJS是在服务端的JS环境因此是没有BOM,DOM的概念(跨域的概念也没有))
(NodeJS中也有原生JS中没有的属性,process, global,)
(NodeJS可以调用底层的API 文件的读写,服务器的创建,环境变量的配置,连接数据库,操作数据库。。。)
如何进入Nod的交互模式
node回车。
退出:ctrl+c 2次 || ctrl+d
3、nodeJS能做什么?Node的优点和缺点
文件的读写 服务器的创建 连接数据库等等....
优点:做项目中做中间层的使用,高并发。()
缺点:不适合大量的计算
4、模块化
requrieJS modules seaJS(不常用) commonJS
AMD规范 modules CMD规范 commonJS
AMD规范:依赖前置
CMD规范:依赖就近
规范:
一个模块的导入和导出
modulre: import export default export
commonJS: require module.exports
nodeJS中的模块分为哪几个部分?
1,内置模块 :http
2,第三方模块 : 需要通过npm 进行下载的
3,自定义模块 :自己编写的模块
5、路由
路由:根据用户请求的路径返回不同的页面或者数据
前端路由:前端路由主要应用在单页面开发,前端路由用户请求的路径发生改变的时候不会经过后端的,
主要的原理是通过onhashchange 或者是history.js进行页面的切换。前端路由主要是用来做数据渲染
后端路由:根据用户请求的路径返回不同的页面或者数据
5-1:supervisor
步骤:
1. cnpm install supervisor -g
2.json:scripts: dev:“supervisor server”
3.npm run dev
6、get传递的参数在node中通过query进行接收
res:response 响应
常用的属性
res.write 响应 多次
res.end 结束的响应 (一次 )
res.writeHead() 设置响应头与状态码 (下面2个的综合写法)
res.statusCode 设置状态码 (404也是设置的)
res.setHeader() 设置响应头(“content-type” 类型)
req:request 请求
常用的属性
req.url 请求地址
req.method 请求方式(默认是get)
req.headers 请求头
常见的请求头中的类型
1、application/json
2、application/x-www-form-urlencode 数据序列化
key=val&key=val
ajax({
type:
data:
url:
headers:{
content-type:""
},
success:
})
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190819174914833.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2d3NjE2,size_16,color_FFFFFF,t_70)
响应头中content-type常用的类型有哪些?
1、文本类型 text/plain
2、html类型 text/html
3、css类型 text/css
4、js类型 application/x-javascript
5、json类型 application/json
6、图片类型 image/png image/jpg …
3、application/x-www-form-urlencode
form的enctype属性为编码方式:用有两种:application/x-www-form-urlencoded和multipart/form-data,默认为application/x-www-form-urlencoded。 当action为get时候,浏览器用x-www-form-urlencoded的编码方式把form数据转换成一个字串(name1=value1&name2=value2…),然后把这个字串append到url后面,用?分割,加载这个新的url。 当action为post时候,浏览器把form数据封装到http body中,然后发送到server。 如果没有type=file的控件,用默认的application/x-www-form-urlencoded就可以了。 但是如果有type=file的话,就要用到multipart/form-data了。浏览器会把整个表单以控件为单位分割,并为每个部分加上Content-Disposition(form-data或者file),Content-Type(默认为text/plain),name(控件name)等信息,并加上分割符(boundary).
窗体数据被编码为名称/值对。这是标准的编码格式。
4、关于报文 相关文档读 3篇
Node路由:
1、要求引入一个js文件 弹出1
2、引入一个css文件
3、引入10张图片
4、引入写一个选项卡
node模块:
fs
1,fs.readFile:读取文件 参数1:文件路径,参数2:是成功的回调, 回调中参数1:err,参数2:读取到的数据
fs.readFileSync(路径) 返回值是读取到的数据
写文件:
2,fs.writeFile(“文件名”,‘书写的内容’,(err)=>{
})
参数1:文件路径
参数2:书写的内容
参数3:成功的回调
url
解析url转换成功urlObject
qs(querystring)
parse参数:
1、需要转换的字符串
2、分隔符
3、赋值符
stringify参数:
1、需要转换的对象
2、分隔符
3、赋值符
events
//引入核心模块
const EventEmit = require(“events”);
//创建一个类 继承核心模块方法
class MyEmitter extends EventEmit {}
//实例化
const myEvent = new MyEmitter();
addListener 事件绑定
事件的触发emit
on("事件名称",事件函数)
off("事件名称",事件函数)
emit('事件名称')
http
const http = require(“http”);
let url = “http://www.mobiletrain.org/?pinzhuanbdtg=biaoti”;
node服务器与服务器之间进行数据请求的时候数据时一块一块接受的,不像浏览器一下子全部接受。,
//服务端发起了一个get请求
http.get(url,(res)=>{
let str = “”;
res.on(“data”,(data)=>{
str+=data;
})
res.on("end",()=>{
console.log(str);
})
})
客户端,服务器 动态页面,静态页面
node编写服务器
Express框架
插件:
首页:
新闻详情可以传ID
GET,POST请求
标签
<%-%> :输出标签(HTML会被浏览器解析)
<%#%> :代码注释
公共样式:
引入<%- include …/public/name%>
public文件名name:公共样式的名字
for循环:
app.js里写的
Socket.io
针对node
cdnjs网站
httpclient
服务端代理解决跨域开发中间层