我即将开始为应用构建一个小的javascript模块。我已经接触过两种组织代码的方式:对象文字和IIFE。我知道,对于IIFE,所有变量和函数都保持私有,除非另有公开,但是还有其他原因我会在对象文字上使用它吗?
为什么我要使用对象文字:
var gojiraSays = 'Toxic Garbage Island!!!'
var app = {
printStuff: function(){
console.log(gojiraSays)
}
}
......说IIFE版本:
var app = (function(){
var gojiraSays = 'Toxic Garbage Island!!!'
var yellGojira = function(){
console.log(gojiraSays);
}
return{
yellGojira: yellGojira
}
}());
app.yellGojira();
答案 0 :(得分:2)
模块模式
参考this答案,了解使用Object literal以及显示模块模式(RMP)的优势。
IIFE
请参阅this链接以获取有关使用IIFE进行项目结构化的优势的信息。
我的建议
我更喜欢使用 RMP ,因为它可以让您有效地分离关注并同时改善可读性。
答案 1 :(得分:1)
您应该学习第三种更好的组织模块的方法,即ES6模块,这使得所有这些都无关紧要。
// app.js
const gojiraSays = 'Toxic Garbage Island!!!'
export function printStuff() {
console.log(gojiraSays)
}
// consumer.js
import {printStuff} from './app';
printStuff();
您需要一些基础设施,例如Babel转换步骤,才能使其发挥作用。