【发布时间】:2017-01-16 20:05:15
【问题描述】:
我正在研究 List.js 框架。 这是一个起始代码。如果我删除它(甚至删除函数 e 周围的“()”),代码不起作用。
这是什么?我认为它已经在 Javascript 方法中定义了。
(function e(t,n,r){
function s(o,u){
if(!n[o]){
if(!t[o]){
var a=typeof require=="function"&&require;
if(!u&&a) return a(o,!0);
if(i)return i(o,!0);
var f=new Error("Cannot find module '"+o+"'");
throw f.code="MODULE_NOT_FOUND",f
}
var l=n[o]={exports:{}};
t[o][0].call(l.exports,function(e){
var n=t[o][1][e];
return s(n?n:e)
},l,l.exports,e,t,n,r)
}
return n[o].exports
}
var i=typeof require=="function"&&require;
for(var o=0;o<r.length;o++)
s(r[o]);
return s
}
)
【问题讨论】:
-
它是允许您使用模块的缩小代码。浏览器不支持开箱即用的模块(目前),并且有像 Browserify 这样的工具允许您在浏览器中使用 CommonJS 样式模块。
-
OT,将缩小后的代码与原始源代码进行比较可以帮助:) 缩小的“逆”名称显然是“源图”。
-
我不同意这个问题是重复的。 @MikeCluck 的答案是我正在寻找的,它不在所谓的原版中。
-
那段代码在浏览器中定义了“require”。这是非缩小版:github.com/browserify/browser-pack/blob/master/prelude.js
标签: javascript minify