webpack是对JavaScript的一种模块打包工具,在webpack中所有的文件都是模块,通过loader来进行文件处理,
然后通过plugin注入钩子,最后所有的文件生成一个大的模块.
loader:模块转换器、将模块的内容转化成你自己想要的
plugin:在webpack构件中的特定时期注入扩展逻辑,用来改变构建的结果
loader:
filte-loader:把文件输入到一个文件夹中,在代码中通过相对应的url去引用输出的文件
url-loader:和file-loader类似,但在文件很小的情况下以base64的方式把文件内容注入到代码中
image-loader:加载并压缩图片
plugin:
mini-css-extract-plugin:分离css文件
html-webpack-plugin:为html文件中引入外部资源。
define-plugin:定义环境变量
优点:
webpack专注于模块化的项目,一步到位。
能够通过plugin进行扩展,完整好用又不缺失灵活性
有着庞大的社区活跃,有着良好的开发体验。
缺点:
只能采用模块化开发的项目
hash模式、history模式
hash模式:最直观的是浏览器会出现#符号,特点是hash虽然出现在url中,但是并不
会被包括在http请求中,对后端完全没有影响,所有改变hash不会导致页面的重新加载。
history模式: 利用了H5新增的pushState()和replaceState()方法。会改变当前的url
但浏览器不会立刻向后端发送请求。url加载可以无需重新加载页面
?
同步模式:后一个任务等待前一个任务结束,再去执行。任务执行的顺序和排列的顺序是一致的、同步的。
异步模式:每一个任务都有一个或者多个的回调函数,在前一个任务结束后,不是马上去执行后一个任务,而是去执行回调函数。后一个任务不是等前一个任务结束就执行,所以任务的执行顺序和任务的排列顺序是不同的。
这里再举出同步的列子和异步的列子。
1、创建一个XMLHttpRequest对象,也就是创建一个异步调用的对象。
2、创建一个http请求,并指定该http的方法,url以及验证的信息
3、设置响应http请求状态变化的函数
4、发送http请求
5、获取异步调用的数据
6、使用JavaScript和Dom进行刷新。
var ajax=new XMLHttpRequest();
ajax.open("get","文件","url");
ajax.send();
ajax.onreadystatechange=function(){
if(ajax.readyState===4&ajax.status===200){
}
}
ajax:
1、ajax适用于mvc模式,并不适用于mvvm的浪潮。
2、ajax的使用需要导入jQuery的库,如果只是为了进行异步请求导入jQuery的库会不合理(不能享受到CDN服务,导致项目体积变大)
axios:
1、从node.js去创建http请求
2、axios本来就是基于promise封装,可以使用promise中的所有API
3、能够防止CSRF攻击
4、提供了一些并发性接口
aixos:
1、自动转换json数据
2、请求拦截和响应拦截
3、进行安全加密
原文:https://www.cnblogs.com/AFBF/p/14614314.html