而为了提供文件在互联网中的可访问性,前端还是需要依赖 静态资源服务 ;最常用的做法就是Node服务和Nginx服务。
Node服务最常见的,就是WebpackServer, 在前端开发联调时经常用到, 启动后我们就可以通过 http://localhost:8907/bundle.05a01f6e.js 的形式来访问构建资源;除此之外,我给大家安利另一款Node服务库: serve , 它也能快速启动一个静态资源服务。
但在生产环境,我们一般用Nginx来处理,不是Node不好,而是Nginx已经够好了。通常整个大前端会有很多前端项目,我们都将构建结果放在一台服务器上(一般有备份机器)的某个文件夹下,然后通过安装Nginx来创建一个静态资源服务供所有前端资源的访问;比如文件夹static下有A,B,C,D四个前端项目资源, 我们通过nginx配置:
我们即可通过 http://static.closertb.site/A 访问A项目,通过 http://static.closertb.site/C 访问C项目, 从而做到一鸡多吃,这种玩法在HTTPS与HTTP2的时代特别常见。
以上就是Nginx作为Web服务的简单用法,接下来我们了解一下反向代理服务
作为一个开发者,可能经常听到 代理 两字,但很多人区分不清楚正向和反向的区别:
如上图左侧所示,正向代理是用户的主动行为,如我们fq时访问goggle所做的;右侧反向代理是我们访问的服务器行为,作为用户的我们是不能控制也无需关注的。
反向代理在服务部署中,是一种非常常见的技术,比如负载均衡、容灾、缓存。
而对于前端开发来说,反向代理多用于请求转发,来处理 跨域 问题。当我们把前端静态资源服务都指向一个域名(static.closertb.site)时,与服务端请求域名(server.closertb.site)不一致,就会造成跨域。如果服务端不配合的话,那通过nginx,前端也是可以轻松做到的,在前面的配置上,我们添加:
所以当网页发出一个请求: http://static.closertb.site/a 时,实际请求地址是: http://server.closertb.site/a ,这就简单实现了一个服务代理。其原理与WebpackServer的proxy相似.
以上就是Nginx的web服务和代理服务在前端开发中的两个典型使用场景, 接下来我们说点零碎又有用的
当请求 http://static.closertb.site/site/a/logo.png )时,将会返回服务器上的/home/static/static/a/logo.png文件,即'/home/static'+'/static/a/logo.png',其 拼接的地址是匹配字符串及其以后的
而对于alias:
当请求 http://static.closertb.site/static/a/logo.png )时,将会返回服务器上的/home/static/a/logo.png文件,即'/home/static'+'/a/logo.png',其 拼接的地址是除了匹配字符串以后的地址
你可能见过A这种:
也可能见过B这种
有什么区别?
两者与root 和 alias有相似之处,只不过这种差别,只适用于:
所以当收到一个请求: http://static.closertb.site/api/user/get ) 时,配置A将会把请求代理到: http://server.closertb.site/api/user/get )配置B将会把请求代理到: http://server.closertb.site/user/get )
这个知识,在代理配置中真的相当重要
当我们下架一个前端服务,或者用户访问了某个根本不存在的页面,我们不希望用户看到的是404,而是将其引导到一个模糊正确的页面,这时候我可以用rewrite服务;反手一个配置,直接就将流量打到了网站首页
另一个比较常用的,就是网站开启https,我们需要将所有http请求重定向到https:
上面同是rewrite,但还是有不一样的 ,一个是redirect(302), 另一个是permanent(301),这两个还是有很大区别的;
web 性能优化是前端的一门学问,好的静态资源加载速度,会显著提升用户体验,而nginx作为最常用的静态资源服务器,也是有诸多渠道来帮助我们来提升静态资源加载速度,简单来讲,可以三个方面,直接上配置:
``if ( ) {
expires 365d
add_header Cache-Control max-age=31536000
}</pre>
expires与max-age两种配置方式都可以达到告诉浏览器资源一年以后过期的目的,更多关于http缓存的可以 看这一篇文章 ;
前端也不用买啥域名服务器,本地不救可以了。个人网站的话一般就主机和域名
主机包括了云服务器和虚拟主机,只不过云服务器比较灵活功能也更多,虚拟主机只能跑web程序。
域名解析一般都是面板里自带的功能,一些网站也提供免费服务没必要买。
推荐支持16G+512G内存的电脑。
学习建议
学好Web框架,熟悉掌握HTML、服务器端脚本语言、CSS和JavaScript之后,学习Web框架可以加快Web开发速度,节约时间。PHP程序员可选的框架包括CakePHP、CodeIgniter、Zend等,Python程序员喜欢使用Django和 webpy,Ruby程序员常用RoR。
Amaze UI国内首个开源HTML5跨屏前端框架产品系列,中文排版支持更优、本土化组件丰富。该产品系列中有专门针对移动端的HTML5混合应用开发框架Amaze UI Touch以及针对跨屏HTML5网页开发的Amaze UI Web。其中,Amaze UI Touch可以帮助开发者通过丰富的组件,快速构建出与原生APP相媲美的专属移动端的HTML5应用。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)