NodeJS

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 …

面试题:

1、传统的DOM渲染方式?
纯后端渲染
纯前端渲染
服务端和js渲染结合前端渲染
2、什么是模块化?模块化的好处
模块化是一种将系统分离成独立功能部分的方法,可将系统分割成独立的功能部分,严格定义模块接口、模块间具有透明性。
( 1.灵活架构,焦点分离
2.方便模块间组合、分解
3.方便单个模块功能调试、升级
4.多人协作互不干扰)

企业项目中为什么要使用NodeJS ?

AMD&&CMD之间的区别:
AMD依赖前置; CMD依赖就近
浏览器渲染页面的流程:

1, 浏览器会将HTML解析成一个DOM树,DOM 树的构建过程是一(更具体的解析HTML过程看上一篇博客:点击打开链接)
2,将CSS解析成 CSS Rule Tree(css规则树) 。
3,解析完成后,浏览器引擎会根据DOM树和CSS规则树来构造 Render Tree。注意:Render Tree 渲染树并不等同于 DOM 树,因为一些像Header或display:none的东西就没必要放在渲染树中了。
4,渲染。有了Render Tree,浏览器已经能知道网页中有哪些节点、各个节点的CSS定义以及他们的从属关系。下一步进行layout,进入布局处理阶段,即计算出每个节点在屏幕中的位置。,
5,再下一步就是绘制,即遍历RenderTree,并使用用户界面后端层绘制每个节点。根据计算好的信息绘制整个页面。
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篇
5、当输入www.baidu.com的时候按下回车会发生什么事情?
当输入www.baidu.com时
DNS解析
找到相应的服务器
TCP的三次握手
找到相应的资源库
返回相对应的页面及进行页面的解析-{css,js,html,img,}
解析完成后客户端

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);
})

})

客户端,服务器 动态页面,静态页面
NodeJS_第1张图片
node编写服务器
NodeJS_第2张图片

Express框架
在这里插入图片描述
NodeJS_第3张图片
NodeJS_第4张图片

插件:
NodeJS_第5张图片
首页:NodeJS_第6张图片
NodeJS_第7张图片

NodeJS_第8张图片
新闻详情可以传ID
NodeJS_第9张图片NodeJS_第10张图片
NodeJS_第11张图片

GET,POST请求
NodeJS_第12张图片
标签
<%-%> :输出标签(HTML会被浏览器解析)
<%#%> :代码注释
公共样式:
引入<%- include …/public/name%>
public文件名name:公共样式的名字

for循环:
NodeJS_第13张图片
app.js里写的
NodeJS_第14张图片

你可能感兴趣的:(NodeJS)