使用line-height垂直居中时,要注意border的设置
将border设置为一个很粗的值时再进行垂直居中设置,line-height和height和border都在同一个元素设置时,会有偏差,这时候解决的方法就是将border的设置放置在此对象的外层
使用line-height,越大的时候,安卓和ios差距越大,尽量在移动端不要使用line-height进行垂直居中,多使用flex
flex左边固定宽度,右边动态高度实现
1 | .line { |
1 | <div class="test"> |
将border设置为一个很粗的值时再进行垂直居中设置,line-height和height和border都在同一个元素设置时,会有偏差,这时候解决的方法就是将border的设置放置在此对象的外层
使用line-height,越大的时候,安卓和ios差距越大,尽量在移动端不要使用line-height进行垂直居中,多使用flex
1 | .line { |
1 | <div class="test"> |
状态码 | 英文 | 描述 |
---|---|---|
200 | OK | 请求成功。一般用于GET与POST请求 |
301 | Moved Permanently | 永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替 |
302 | Found | 临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI |
304 | Not Modified | 协商缓存。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源 |
400 | Bad Request | 客户端请求的语法错误,服务器无法理解 |
401 | Unauthorized | 请求要求用户的身份认证 |
403 | Forbidden | 服务器理解请求客户端的请求,但是拒绝执行此请求 |
404 | Not Found | 服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置”您所请求的资源无法找到”的个性页面 |
500 | Internal Server Error | 服务器内部错误,无法完成请求 |
501 | Not Implemented | 服务器不支持请求的功能,无法完成请求 |
502 | Bad Gateway | 作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应 |
503 | Service Unavailable | 由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中 |
504 | Gateway Time-out | 充当网关或代理的服务器,未及时从远端服务器获取请求 |
1 | Function.prototype.myCall = function(context) { |
1 | Function.prototype.myApply = function(context) { |
1 | const oneOf = (value, validList) => { |
1 | // 祖先组件 |
使用mixins时,如果有定义created等函数的,会先执行mixins里的created,然后再执行组件里的created。如果mixins里有定义方法,然后组件里也定义了一个同样名称的方法,组件里的方法会覆盖mixins里的方法。
1 | // 同一个组件 |
1 | const PENDING = 'pending'; |
1 | const promiseAll = (arr) => { |
1 | const promiseRace = (arr) => { |
配置host:
1 | sudo vim /etc/hosts |
安装nginx:
1 | sudo apt-get install nginx |
查看有没有nginx占用:
1 | ps -ef | grep nginx |
强制删除所有nginx进程:
1 | sudo pkill -9 nginx |
获取root权限
1 | sudo su |
退出root权限模式
1 | ctrl+d |
一台Linux服务器(CentOS/Ubuntu)服务器
一款Web服务器(Nginx/Apache/Tomcat)
一个属于自己的独立域名(cn/com/org/…)
本次流程以CentOS和Nginx配置为例
/dist/
设置为线上地址://www.yuuhei.site/dist/
1 | tar -xzvf node-v10.15.2-linux-x64.tar.xz |
1 | mv node-v10.15.2-linux-x64 /usr/local/node |
1 | ls -n /usr/local/node/bin/node /usr/local/bin/ |
1 | # 改成user root |
部署了前端静态资源html的服务器配置nginx,达到代理请求转发的效果,例如果配置了/api/,在项目里请求的地址就是/api/xxx/xxx,且需在本地配置代理方便开发,代理配置在vue.config.js
1 | { |
www.baidu.com
baidu.com
单页面的项目,就算js,css等文件做了hash的处理,在发完版后进入去的第一次,会有白屏的问题。原因就是index.html被缓存,之前的js的hash都变了,然后旧的html加载了不存在的js,导致报错白屏
重点是location / 的add_header Cache-Control "no-cache, no-store";
,不设置缓存,其余的是代理的设置
1 | server { |
实现jsonp,需要前后端都需要改造,后端需要增加支持返回js函数,主要约定是url的key字段,由于jquery默认的jsonp请求的关键字key默认是callback,后端一般都会使用callback关键字,当然也可以定义另一个名称,而这个key对应的value使用什么都可以,jquery是使用随机数,后台会获取这个随机数,作为返回js函数的函数名。这是大多数情况,原理是如此,但可能有所不同。
除此之外,还需要注意要使用随机数,不然jsonp由于是js脚本,如果请求参数相同,就会使用缓存的结果,而不会使用最新的结果,jquery的jsonp默认有随机数参数
jsonp有以下弊端:服务端也需要改造,请求只能是get。由于请求是get,一般只能用来请求一些获取数据的接口,而不能用于修改用户信息等类型的接口(需要用到post)。由于这个缺点,一般很少接口会用到jsonp,解决跨域问题还需要找其他解决办法
一般请求路径是:Client(调用方) - Apache/Nginx(http服务器) - Tomcat(被调用方后台应用服务器)。其中Apache/Nginx会处理来自client的请求,判断该请求为什么类型的请求,如果是静态请求,则直接处理返回给client,如果是动态请求,则转发给后台的应用服务器,处理完毕后则原路返回。
动态请求指,跟用户数据有关的请求,xhr等
静态请求指,跟用户数据无关的请求,例如img,js,css
解决跨域的思路有两种,一种是在被调用方后台应用服务器上做处理,在响应头上增加字段,告诉浏览器允许对方调用,浏览器就不会报跨域问题;第二种是隐藏跨域的思路,在http服务器上做处理,做一个http请求转发,浏览器发现所有的请求都是同一个域,就不会报跨域问题。
1 | <form name="form2" action="/manage/product/upload.do" method="post" encType="multipart/form-data"> |
字段说明:
默认的使用上述提交表单,选择完图片提交后会进行页面跳转,这不是所期望的。由于兼容性问题,会分为IE10+和非IE10的情况。
IE9和IE9以下只能用iframe表单上传拿回调,target=”rfFrame”调取的是下面这个iframe的id值。作用是为了提交表单时防止页面跳转,不兼容Formdata。
IE10+和其他浏览器可以使用ajax的post去send一个Formdata的js对象,可以实现提交表单不跳转。
FormData类型其实是在XMLHttpRequest 2级定义的,它是为序列化表以及创建与表单格式相同的数据(当然是用于XHR传输)提供便利,使用FormData的最大优点就是我们可以异步上传一个二进制文件,兼容性需要IE10+。
1 | // ... |
注意事项:
form原始处理form的回调这样做的:监听form指向的隐藏iframe的onLoad事件,取iframe里的innerHTML,因为它的innerHTML会直接返回一个对象,可以直接使用;有可能会返回其他东西,具体看后台怎样返回,前端再具体处理
jquery可以使用ajaxForm插件实现form的提交回调
仅供参考,内嵌xhr请求实现,react版。
注意事项:
源码: