web前端.js--seajs--非CMD模块的javascript文件兼容封装方案

随着网站前台页面设计越来越花哨,其实现逻辑也越来越复杂。javascript库百花齐放,各种插件也层出不穷,在使用中,管理各种js文件依赖成为了一个令人头疼的问题。因此我们需要用软件工程的方式来编写javascript“程序”,即模块化编程。在制定中的ECMAScript第六版,也将引入模块这一概念。

目前常见的javascript模块规范有以RequireJS为代表的AMD规范和以SeaJS为代表的CMD规范,这两种都能达成浏览器端模块化开发的目的

这几天我就在研究最近很火的支付宝大牛玉伯所写的SeaJS。

SeaJS为国人所写,因此中文文档看起来很爽。但不幸的是,很多著名的javascript框架和插件都不支持CMD规范,比如用得最多的jQuery和它的插件。如果想用它们进行模块化开发,就必须手动将他们封装成CMD模块。

对于jquery,一般这样封装:

1
2
3
4
define( function (){
     jquery code..
     return $.noConflict( true );
});

封装后,jquery就成为标准CMD模块了,可以使用SeaJS的use方法或require方法直接读取:

1
2
3
seajs.use( "jquery" , function ($){
     $( "p" ).css(......)
});

但是,这样封装以后存在隐患。比如某个新来的php程序员不懂这些,他可能像往常一样,引入<script src="jquery.js"></script>,然后$("p")调用,结果只会发现一行报错:$ is not a function。

因为jquery文件模块化以后,全局作用域已经不存在jquery或者$了,当然会报错。

所以我们需要一种兼容非模块化引用的封装方案 :

01
02
03
04
05
06
07
08
09
10
( function (factory) {
     if ( typeof define === 'function' ){
         define(factory);
     } else {
         factory();
     }
})( function (require){
     jquery code..
     if (require) return $.noConflict( true );
});

原理看出来了吧,把一个匿名函数当做变量传入闭包,判断有无SeaJS提供的define方法。若有,则为CMD模块读取,返回$.noConflict(true);若无,则为普通的脚本引入,执行原生的jquery代码。

这样封装以后,就不怕程序员的误操作了。同理,其他的javascript文件也可以进行类似的封装。

文章来自:http://www.jackyrao.com/archives/383

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: jfinal2.0是一款基于Java语言的轻量级开源Web应用框架。它具有简单易用、快速开发、高效稳定等特点。采用了MVC架构模式,通过注解方式配置路由,可以实现快速、灵活地进行控制器的映射。同时,它也支持AOP、ORM等常用的开发模式,通过简化繁琐的代码操作,提高了开发效率。 bootstrap是一款HTML、CSS和JavaScript框架,用于开发响应式、移动设备优先的网站和Web应用。它提供了丰富的CSS样式和JavaScript插件,可以快速搭建出漂亮的、兼容性良好的界面。同时,bootstrap还支持自定义主题、响应式布局等功能,常适合用于快速构建用户友好的界面。 seajs是一款用于JavaScript模块化开发的框架。它采用了CMD规范,通过define和require等方法对模块进行定义和引用。seajs可以帮助开发人员管理和加载模块,实现代码的模块化,提高了代码的可维护性和复用性。除此之外,seajs还支持插件机制、异步加载等功能,更好地适应了复杂的Web应用开发需求。 fullcalender.js是一款基于JavaScript和jQuery的全功能日历插件。它提供了丰富的功能,如日程管理、事件编辑、拖拽操作等。同时,fullcalender.js还支持各种视图模式的切换,如月、周、日视图,并且支持自定义样式和事件处理函数,可以方便地适应各种日历需求。使用fullcalender.js可以使用户在Web应用中更加方便地管理和查看日期和事件信息。 ### 回答2: jfinal2.0是一种基于Java的轻量级MVC框架,它具有简单易用、高效快速的特点。通过JFinal2.0,开发人员可以快速搭建Java Web应用程序,并且具有良好的扩展性和灵活性。 Bootstrap是一种前端开发框架,它提供了丰富的组件和样式,可以帮助开发人员快速构建美观且响应式的网页。通过Bootstrap,开发人员可以使用预定义的样式和布局,使网页在不同的设备上显示效果一致。 Seajs是一种模块加载器,它可以帮助开发人员更好地组织和管理JavaScript代码。通过Seajs,开发人员可以将代码分割成独立的模块,通过异步加载的方式进行模块依赖管理,提高前端开发的效率。 FullCalendar.js是一种用于显示和操作日历的JavaScript。它可以帮助开发人员在网页中嵌入交互式的日历控件,并且支持事件的添加、编辑和删除等功能。通过FullCalendar.js,开发人员可以轻松实现日历功能,例如会议安排、活动管理等。 综上所述,jfinal2.0、bootstrap、seajs和fullcalender.js都是在不同场景中用于简化开发工作的工具和框架。它们可以使开发人员更高效地开发应用程序,并提供了丰富的功能和易用的界面,为用户提供更好的体验。 ### 回答3: JFinal 2.0是一款基于Java语言的开源Web开发框架,它提供了简单易用的API和插件机制,可以帮助开发者快速构建高性能的Web应用程序。JFinal 2.0具有轻量级和灵活的特点,拥有良好的MVC架构和面向切面编程的支持。它还提供了丰富的插件来扩展应用的功能,例如插件管理、权限控制、缓存管理等。JFinal 2.0还集成了Bootstrap、Sea.js和FullCalendar.js等优秀的前端框架和组件,使开发者可以更方便地实现各种前端交互效果和页面布局。 Bootstrap是一款开源的前端框架,它提供了丰富的CSS和JavaScript组件,能够帮助开发者快速构建响应式的Web页面。Bootstrap具有简洁美观的设计风格和灵活的布局系统,可以适应不同屏幕大小的设备,并提供了丰富的样式和组件,例如按钮、表单、导航条等,可以帮助开发者快速构建出现代化的Web界面。 Sea.js是一款用于浏览器端JavaScript模块化开发的工具。它采用的是CMD规范,可以将JavaScript代码按照模块化的方式进行组织和管理,提供了便捷的模块定义和加载机制。Sea.js还提供了丰富的插件系统和调试工具,可以帮助开发者更高效地进行JavaScript开发。 FullCalendar.js是一款功能强大的日历插件,它基于jQuery开发,提供了丰富的日历展示和日程管理功能。FullCalendar.js可以将日历事件以可视化的方式展示,并支持日程的拖拽和编辑功能,可以方便地进行日程的增删改查操作。FullCalendar.js还提供了多种日历视图和自定义配置选项,可以适应不同的日程管理需求。 综上所述,JFinal 2.0结合Bootstrap、Sea.js和FullCalendar.js前端框架和组件,可以帮助开发者高效地构建性能优越、界面美观、功能丰富的Web应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值