为了账号安全,请及时绑定邮箱和手机立即绑定

将js模块化的问题

将js模块化的问题

翻翻过去那场雪 2018-08-10 10:09:08
(function(factory) {    if (typeof define === 'function') {        // 如果define已被定义,模块化代码         define('sayHello', ['jquery'], function(require, exports, moudles) {             factory(require('jquery')); // 初始化插件             return jQuery; // 返回jQuery         });     } else {        // 如果define没有被定义,正常执行jQuery         factory(jQuery);     } } (function($) {    console.log('init', $);     $.sayHello = function() {        console.log("Hello");     }; }));我的疑问在于1.这个也属于自执行函数的一种写法吗?2.factory是什么意思。3.对这个的整个流程比较模糊求大神帮助。。。。
查看完整描述

1 回答

?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

答案重置:

卧槽,手机版的sf真他妈神了,误点了删除按钮也没个提示就直接把我的答案给删了|_|

重新编辑答案:

这是一段不太典型的umd格式代码。

umd的目标很简单,就是希望这个库能够成功的运行在AMDCommonJS以及普通的<script>标签加载的环境里。

常见的umd声明方式如下:

if( typeof define === "function" && define.amd ){    //如果使用者的环境是`requirejs`加载器,那把该库的具体实现通过`define`关键字声明
    define(factory);
} else if( typeof module != "undefined" && typeof module.exports != "undefined" ){    //如果使用者的环境是nodejs,或者webpack,browserify等加载器,那通过commonjs的模块方式暴露
    module.exports = factory();
} else {    //最后如果使用者就是直接在html里通过<script src="xxx">的方式引入该库,那把该库的内容直接挂在window对象上 
    window["Sortable"] = factory();
}

factory就是你要开发的库的具体实现体


查看完整回答
反对 回复 2018-09-15
  • 1 回答
  • 0 关注
  • 605 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信