js中没有类的概念,但js开发愈来愈复杂,须要有模块化的需求,因而不少技术应运而生。html
commonjs前端
amdnode
cmdjquery
他们的区别浏览器
requirejs是什么,它和commonjs的区别模块化
别着急慢慢搞清楚,函数
请搞清楚后,本身手写在这里,禁止复制粘贴requirejs
相关连接:http://www.cnblogs.com/dolphinX/p/4381855.htmlui
搜索关键词:前端模块化spa
请眼熟这个结构:
;(function (factory) { 'use strict'; if (typeof define === 'function' && define.amd) { // Register as an anonymous AMD module: define([ 'jquery', 'jquery.ui.widget' ], factory); } else if (typeof exports === 'object') { // Node/CommonJS: factory( require('jquery'), require('./vendor/jquery.ui.widget') ); } else { // Browser globals: factory(window.jQuery); } }(function ($) { 'use strict'; // code here }));
肢解它:
;();
function (factory) { 'use strict'; if (typeof define === 'function' && define.amd) { // Register as an anonymous AMD module: define([ 'jquery', 'jquery.ui.widget' ], factory); } else if (typeof exports === 'object') { // Node/CommonJS: factory( require('jquery'), require('./vendor/jquery.ui.widget') ); } else { // Browser globals: factory(window.jQuery); } }(function ($) { 'use strict'; // code here })
function (factory) { 'use strict'; if (typeof define === 'function' && define.amd) { // Register as an anonymous AMD module: define([ 'jquery', 'jquery.ui.widget' ], factory); } else if (typeof exports === 'object') { // Node/CommonJS: factory( require('jquery'), require('./vendor/jquery.ui.widget') ); } else { // Browser globals: factory(window.jQuery); } } //下面的部分,做为参数传入上面那个函数中 (function ($) { 'use strict'; // code here })
进一步
amd
function (factory) { // Register as an anonymous AMD module: define([ 'jquery', 'jquery.ui.widget' ], factory); }
node/commonJS
function (factory) { // Node/CommonJS: factory( require('jquery'), require('./vendor/jquery.ui.widget') ); }
浏览器原生
function (factory) { // Browser globals: factory(window.jQuery); }
至关于:
amd
//amd 常见的写法 define( ['jquery','jquery.ui.widget'] , function ($) { // code here } );
node/commonJS
// 有待研究。。。。。。。
function (factory) { // Node/CommonJS:
(function ($) { 'use strict'; // code here })( require('jquery'), require('./vendor/jquery.ui.widget') );
}
浏览器原生:
//比较常见的写法: (function ($) { 'use strict'; // code here })(window.jQuery);