首页 > 代码库 > 【转】require.js学习笔记(一)
【转】require.js学习笔记(一)
一、立即执行函数
for (var i = 0; i < elems.length; i++) { (function (lockedInIndex) { elems[i].addEventListener(‘click‘, function (e) { e.preventDefault(); alert(‘I am link #‘ + lockedInIndex); }, ‘false‘); })(i); //入参}
使用立即执行函数,可以达到不暴露私有成员的目的
var module1 = (function(){ var _count = 0; var m1 = function(){ //... }; var m2 = function(){ //... }; return { m1 : m1, m2 : m2 }; })(); //无法读取_count
对比立即执行函数
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title></head><body> <script> var a = function() { alert(12) var _count=1; var m1 = function(){ alert(1); }; var m2 = function(){ alert(2); }; return { m1 : m1, m2 : m2 }; }; var b = a(); b.m1(); var a2 = (function() { alert(12); var _count=1; var m1 = function(){ alert(1); }; var m2 = function(){ alert(2); }; return { m1 : m1, m2 : m2 }; })(); a2.m2(); </script></body></html>
二、模块规范
目前主要的模块规范有commonJS与AMD
1.commonJS
commonJS是服务器端模块规范,nodeJs遵循此规范。因为服务端JS文件存放于本地,加载速度快,所以其加载模块(一个文件即一个模块)方式为同步加载,不适用于浏览器。
function foobar(){ this.foo = function(){ console.log(‘Hello foo‘); } this.bar = function(){ console.log(‘Hello bar‘); }} exports.foobar = foobar; //通过export实现与外部通信
var foobar = require(‘./foobar‘).foobar, test = new foobar(); test.bar();2.AMD采用异步加载模块,加载完成后通过回调函数实现相应操作,适用与浏览器。
require([‘math‘], function (math) { math.add(2, 3); });
原文地址:
http://www.ruanyifeng.com/blog/2012/10/javascript_module.html
http://www.cnblogs.com/TomXu/archive/2011/12/31/2289423.html
http://javascript.ruanyifeng.com/nodejs/commonjs.html
【转】require.js学习笔记(一)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。