将js模块化的问题

(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.对这个的整个流程比较模糊
求大神帮助。。。。


翻翻过去那场雪
浏览 612回答 1
1回答

泛舟湖上清波郎朗

答案重置:卧槽,手机版的sf真他妈神了,误点了删除按钮也没个提示就直接把我的答案给删了|_|重新编辑答案:这是一段不太典型的umd格式代码。umd的目标很简单,就是希望这个库能够成功的运行在AMD,&nbsp;CommonJS以及普通的<script>标签加载的环境里。常见的umd声明方式如下:if(&nbsp;typeof&nbsp;define&nbsp;===&nbsp;"function"&nbsp;&&&nbsp;define.amd&nbsp;){&nbsp;&nbsp;&nbsp;&nbsp;//如果使用者的环境是`requirejs`加载器,那把该库的具体实现通过`define`关键字声明 &nbsp;&nbsp;&nbsp;&nbsp;define(factory); }&nbsp;else&nbsp;if(&nbsp;typeof&nbsp;module&nbsp;!=&nbsp;"undefined"&nbsp;&&&nbsp;typeof&nbsp;module.exports&nbsp;!=&nbsp;"undefined"&nbsp;){&nbsp;&nbsp;&nbsp;&nbsp;//如果使用者的环境是nodejs,或者webpack,browserify等加载器,那通过commonjs的模块方式暴露 &nbsp;&nbsp;&nbsp;&nbsp;module.exports&nbsp;=&nbsp;factory(); }&nbsp;else&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;//最后如果使用者就是直接在html里通过<script&nbsp;src="xxx">的方式引入该库,那把该库的内容直接挂在window对象上&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;window["Sortable"]&nbsp;=&nbsp;factory(); }factory就是你要开发的库的具体实现体
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript