引言当今互联网飞速发展,网络用户的需求瞬息万变,瞬息万变。大多数网站的更新周期是以天、小时甚至分钟为单位。在这种情况下,网站前端成为变化最频繁的部分。随着互联网公司越来越重视前端开发,前端开发人员的数量也越来越多。然而,技术人员的投入总是有限的。面对快速变化的需求,前端编码标准、前端性能优化、前端安全漏洞防范等诸多问题被提出。为了解决这些问题,一种具有先进开发思想和良好设计模式的前端模块化技术正在逐渐成熟,并受到越来越多企业的青睐。1前端模块化技术应用现状前端模块化开发是将网站前端按照布局和功能划分成若干个模块,每个模块完成特定的功能[1],进而形成所有模块按照一定的组织方式组成一个整体。完成整个系统的功能。这大大减少了程序员在开发过程中的相互干扰,更有利于多人协同开发。而且,基于前端模块化开发技术的应用还具有提高网页浏览速度、高效组织和维护网络信息资源、减少代码冗余等优点。为了解决前端模块化开发技术在开发过程中遇到的各种问题,出现了一些开发工具,如:CSSSprites、YUICompressor等。为了提高前端模块化开发的效率,一些javascript组件库应运而生,如Jquery、YahooUILibrary、mootools等,这些工具和组件库只是弥补了前端模块化开发的技术空白,在某些方面提高了工作效率,但并不能彻底解决问题.而且,随着前端模块化开发技术的蓬勃发展,大量网站需求转移到前端处理,甚至将网页制作成交互应用。这种趋势迅速增加了前端开发代码量,进一步增加了前端模块化开发的难度。可见,目前的前端模块化开发已经发展成为一个系统工程。开发者必须多方面考虑,多角度分析,从细节做起,共同努力,才能实现前端模块化开发的目标。目前,国内仅有腾讯、百度、新浪、豆瓣等少数网站设计了自己的前端模块化开发框架结构,并有自己的开发策略,但这些公司在前端应用方面还不是很熟练模块化开发技术。因此,对前端模块化开发策略的研究还是很有必要的。2前端模块化技术开发策略前端模块化开发的基本思想类似于模块化编程,即以模块为基本单元对Web上的信息进行划分和组织,将内容分离将网页组成几个相对独立的模块。模块只是存放基本页面元素的容器,常用的页面元素也做成模块,方便对这些页面元素的调用和管理。因此,前端模块化技术没有复杂的逻辑操作,主要着眼于以HTML为骨架,以CSS为表现层,以JavaScript为实现行为的组装组合和代码重用,以减少循环它们之间的依赖关系,减少耦合,提高设计效率。这时候就需要有一个有效的开发策略,所有的模块都在这个策略下设计,工作任务按照这个策略来划分。常见的开发策略有以下三种。2.1传统的模块化开发策略传统的模块化开发首先将每个页面划分为许多基本模块,如logo、导航、内容1、内容2、尾部导航、版权信息等,然后为每个模块生成一个单独的模块。文档。当页面需要加载时,使用CSS加载,单独使用Ajax技术加载。这看起来简单易行,但问题很多。首先,会有大量的模块,不仅不方便管理,还会导致请求量飙升。比如一个页面有四个模块,至少会产生4(模块)×2(类型:CSS/JS)=8个请求,再加上一些函数库,请求就会更多。另外,如果不对内容进行压缩,会造成严重的性能问题,阻塞页面的显示。其次,这种方式不适合团队开发。2.2页面级模块化开发策略页面级模块化开发是指根据不同页面的模块划分,设置需要的JavaScript和CSS模块。比如A页面设??置了header.js、list.js、info.js、header.css、list.css和info.css六个模块,B页面设置了info.css和info.js两个模块。所有页面及其依赖的模块关系都由开发者编写在页面级别的配置文件中。当一个页面请求它需要的模块时,通过一些工具,比如Minitools,根据设置文件合并最小化需要的模块,这样一次请求就可以得到请求页面需要的所有模块,解决了问题解决了传统模块化开发中请求数量过多,内容未压缩的问题。虽然页面级模块化开发策略有效的解决了请求量和压缩的问题,但是仍然存在很多问题。首先,它不容易维护。当一个页面需要移除时,该页面依赖的所有模块也应该被移除,但是不能绝对确定其他页面不会使用被移除的依赖模块,最终导致模块越来越多。第二,在线调试非常困难。因为混淆后的代码已经发布,所以几乎无法调试。因此,需要进一步调整发展战略来解决问题。2.3模块级模块化开发策略模块级模块化开发是指开发者自己定义页面模块的依赖关系,即每个页面所需模块的设置,而不是记录在页面级模块化开发中。在中央设置文件中。当用户请求某个页面时,该页面的Controller会指定需要加载的页面,但不需要指定该页面依赖于哪些模块。这些需要加载的模块会由加载的Loader自己计算。然后,Loader会与服务器进行交互,对需要的模块进行分组、合并、压缩,然后并行下载到请求下载的浏览器。目前有很多框架都是基于这种模块级的模块化开发规范,比如RequireJS、YUI3。RequireJS是目前使用非常广泛的框架。只要定义了模块的依赖关系,所需的模块就会自动依次加载,无需任何配置。在线发布时,可以使用Node.js提供的r.js进行合并和最小化。但是RequireJS仍然存在发布时间长,在线调试困难的问题。相比之下,YUI3的Loader下载方式就更优秀了,它使用了一种叫做ComboHandler[5]的机制,它会直接以GET的形式指定在线文件的路径,并动态合并和最小化。由于GET的长度限制,YUILoader会根据模块的加载顺序,总数和当前浏览器的GET长度限制,自动将ComboHandler的请求分成若干份,并行下载,解决了RequireJS的问题。到问题。3结语可以看出,依托目前新兴的各种框架和工具,并进行适当的修改,可以很好地实现模块级的模块化开发策略,从而有效解决前端模块化开发中的诸多问题,方便团队开发,具有发布速度快、在线调试维护方便、性能提升等优点。但与此同时,新的问题也在不断出现,比如页面模块的划分、模块的粒度、模块的继承等。
