node.js简介,模块化语法,nodejs中有三种类型的模块,Ajax是什么,它的用法和功能,MVC模块的简单介绍及其优缺点,require和import有什么区别?

node.js简介

node.js是什么?

node.js是一个基于Chrome-v8设计的单线程的基于事件驱动的非阻塞I/O模型的一个js运行环境

node.js有什么特点?

单线程
node.js的主线程是程序员写的线程,这个线程的代码是v8在运行,它提供的异步函数是底层c/c++在开启线程执行任务

非阻塞I/O模型
I/O 耗时操作,非阻塞I/O能让计算机的多核发挥功能,同时执行任务

基于事件驱动–回调函数
把任务添加到事件池(event-loop),让异步任务去子线程中执行 ,然后注册一个事件 ,任务执行完毕以后,就回到主线程执行回调函数

模块化
把功能按照模块来封装,方便扩展,维护管理 ,也更有利于开发大型项目
npm 社区是nodejs的模块化社区并且它是全世界最大的模块市场 ,2018被微软收购

node.js是单线程还是多线程? 为何是单线程还可以不阻塞?

单线程,虽然是单线程,但它提供的异步函数是底层c/c++在开启线程执行任务,所以又可以非阻塞

目前node.js它的地位

node是一个开源的免费的环境,性能好速度快,资源占用小,但它不是很安全

模块化语法

什么是模块化?

就是将一系列类似的功能全部封装到一个块中,方便我们使用,就叫模块化

nodejs中有三种类型的模块

  1. 内置模块也就是核心模块,是node.js自带的,在安装node.js时就已经把这些模块安装好了
  2. 第三方模块,所谓的第三方就是需要去下载的,不是nodejs本身就有的
  3. 自定义模块,就是我们可以自己写一些方便自己用的模块

在nodejs中使用require()来引入模块

这就是一个自带的核心模块
var http = require("http");
这就是一个第三方的模块
var mime = require("mime");

引入自定义模块一般括号里是写的模块所在的相对文件路径

这就是一个自定义模块
var mymodule=require("./mymodule.js")
mymodule.js 就是自己封装的一个模块

是怎么样去找模块资源的呢?

先去当前项目中的node_modules文件夹中找fs1文件夹中的package.json中main字段对应的路径,找到了就引入

没有就去node的安装包中的全局安装路径中找,找到就引入

还没有就去核心库找,找到就引入

如果核心库都还没有,那么就会报错( Cannot find xxx)

怎么安装第三方模块

一般的的没有找到模块的报错都是因为没有安装第三方的模块
那么第三方模块怎么下载呢?

在dos窗口中下载,xxx 代表你要下载的模块名
npm i xxx

i 和 install 是一样的,i 是简写

-g 表示下载到全局安装路径中

npm i xxx -g

–save 表示模块下载到项目安装路径

npm i xxx 或者 npm i xxx --save 是一样的

下载了第三方模块后 npm会在项目配置文件中的依赖项中写入下载的第三方模块名和版本
这些是都可以下载的,以后下载的模块多了后文件就会很大,那么当需要把文件传输给别人的时候就可以只传输其他文件和npm的配置文件

别人接收后运行前自己下载npm模块就好,模块太多一个一个下载就很麻烦那么就可以直接** npm i **就可以了,它就可以根据npm的配置文件进行下载需要的模块了,非常方便

Ajax

什么是Ajax

Ajax 不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的Web应用程序的技术

Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术

Ajax = 异步 JavaScript 和 XML 或者是 HTML(标准通用标记语言的子集)。Ajax 是一种用于创建快速动态网页的技术

使用 JavaScript 向服务器提出请求并处理响应而不阻塞用户核心对象XMLHttpRequest。通过这个对象,JavaScript 可在不重载页面的情况与 Web 服务器交换数据,即在不需要刷新页面的情况下,就可以产生局部刷新的效果

传统的网页(不使用 Ajax)如果需要更新内容,就必须重载整个网页页面,这样就会造成资源浪费,因为只有一部分是需要更新的,而其余的不用更新的又要重新加载一遍,就很耗时耗资源

Ajax是干什么的

Ajax 主要是实现页面和 web 服务器之间数据的异步传输,用在开发网站上

它有一个明显的特点就是局部刷新,也就是说当执行网页中的一小部分的代码时,不用将整个网页提交上去的,只需要提交你改动的网页的局部信息就行

Ajax 优点

它的最大优点就是能在不更新整个页面的前提下维护数据

这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变的信息

Ajax可使因特网应用程序更小、更快,更友好

Ajax 是一种独立于 Web 服务器软件的浏览器技术

AJAX请求步骤

一共五个步骤

  1. 创建ajax对象
  2. 配置ajax,创建http连接
  3. 创建ajax对象变化的监听
  4. 向服务器发送请求
  5. 接收服务器端的响应数据

实例

<button onclick="load1()">ajax请数据</button>
<script>
	function load1(){
		//1.创建ajax对象,new后面一段是在做兼容设计
		let xhr=new XMLHttpRequest()||new ActiveXObject("Micsoft.XMLHTTP")				
		//2.配置连接信息(http连接)
		// 第三个参数值为布尔类型,用于指定是否用异步方式。true表异步,false表同步,默认为true。
		xhr.open("GET",`http://192.168.6.60:8080/ajax1?name=karen&count=20`,true)				
		//3.发送网络请求
		xhr.send()				
		//4.等待
		xhr.readyState == 4
		// 设置回调函数,在回调函数中对不同的响应状态进行处理
		xhr.onreadystatechange=function(){
			// 4就表示网络连接响应成功,而status的数值是表示业务数据的成功或失败
			if(xhr.readyState==4&&xhr.status==200){
				console.log(xhr.responseText)
			}else if(xhr.readyState==4&&xhr.status==404){
				console.log(xhr.responseText)
			}
		}
	}
</script>

执行结果

node.js简介,模块化语法,nodejs中有三种类型的模块,Ajax是什么,它的用法和功能,MVC模块的简单介绍及其优缺点,require和import有什么区别?_第1张图片

MVC框架

MVC:是一种设计思想
M:modul(数据模型) 数据模型层
V:view(视图) 视图层
C:Controller 逻辑控制层
MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。其中,View的定义比较清晰,就是用户界面,C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新

MVC框架的优缺点

优点

  1. 耦合性低
  2. 重用性高
  3. 部署快,生命周期成本低
  4. 可维护性高
    缺点
  5. 完全理解MVC比较复杂。
  6. 调试困难。
  7. 不适合小型,中等规模的应用程序
  8. 增加系统结构和实现的复杂性
  9. 视图与控制器间的过于紧密的连接并且降低了视图对模型数据的访问

require和import有什么区别?

require 和 import 分别是不同模块化规范下引入模块的语句
他们的出现的时间、地点不同,不同端(客户端/服务器)的使用也是有限制的
require/exports 是运行时动态加载,import/export 是静态编译
他们的用法也不一致

require/exports 的用法
const fs = require('fs')
exports.fs = fs
module.exports = fs

exports 是对 module.exports 的引用,相当于
exports = module.exports = {};

并且import/export 只能在模块顶层使用,不能在函数、判断语句等代码块之中引用,但是require/exports 可以
它们的严格模式也不同:CommonJs模块和ES6模块的区别:
CommonJs模块默认采用非严格模式
ES6 的模块自动采用严格模式,不管你有没有在模块头部加上 “use strict”;
CommonJS 模块输出的是一个值的拷贝,ES6 模块输出的是值的引用

你可能感兴趣的:(node.js,ajax,mvc)