项目之间的Javascript IIFE代码共享

项目之间的Javascript IIFE代码共享,javascript,iife,Javascript,Iife,寻找纯JavaScript的答案请 将iLife用于JavaScript游戏。实际上,多个网页上有多个游戏。假设所有这些游戏都需要使用一段通用代码。比如说,掷骰子的人;1d20、3d6等 正确的方法是什么?IIFEs是否应全部设置为具有唯一名称的全局?我担心进入全球市场(也许我太担心了) 掷骰子的人需要进入游戏生活吗?如何正确地做到这一点?我想你想要的是一个显示模块模式,而不是生活模式 //Revealing Module Pattern (Public & Private) w Pub

寻找纯JavaScript的答案请

将iLife用于JavaScript游戏。实际上,多个网页上有多个游戏。假设所有这些游戏都需要使用一段通用代码。比如说,掷骰子的人;1d20、3d6等

正确的方法是什么?IIFEs是否应全部设置为具有唯一名称的全局?我担心进入全球市场(也许我太担心了)


掷骰子的人需要进入游戏生活吗?如何正确地做到这一点?

我想你想要的是一个显示模块模式,而不是生活模式

//Revealing Module Pattern (Public & Private) w Public Namespace 'game'
var game = (function() {

    // object to expose as public properties and methods such as game.roll
    var pub = {};

    //game.roll
    pub.roll = function () {
        //do your thing
        return randomIntFromInterval(1,6);
    };

    function randomIntFromInterval(min,max){
        return Math.floor(Math.random()*(max-min+1)+min);
    }

  //API
  return pub;
}());

在2016年,我认为您应该使用类似于
npm
bower
的东西,将您的源代码打包到一个小的可测试模块中,然后在主项目中声明您的依赖关系。然后您应该使用类似于
browserify
webpack
的方法将模块包含在代码中,
var dicerroller=require('dicerroller')
或在ES6中
从“Dicerroll”导入Dicerroll
我不想为npm上的私人服务付费。我不用凉亭。另外,是否不需要节点的一部分?我没有使用node。只要javascript和简单的html文件。您可以使用私有npm,因为它接受任何。将您的代码打包成小块是模块的用途(您可以使用npm样式,通过
require.js
browserify
…、amd或带有
import
)的新ES6产品使用
require
),您的浏览器中将包含模块!好的,我应该用一个设定器来通过掷骰机。掷骰子机不仅仅是一个RNG,它还具有辅助功能。你的方法可能是我应该做的。谢谢。
显示模块模式,而不是IIFE模式
这是错误的,因为您演示的模块是IIFE。唯一认为IIFE是一个立即调用的函数**eexpression,所以通常这
(function(){})(
是一个IIFE。它与显示模块(或模块模式上的任何其他排列)并没有完全不同,事实上,它们都利用它,因为IIFE提供了它们所需的隔离级别作为基础,然后在此基础上构建。“模块模式非常类似于立即调用的函数表达式(IIFE-请参阅命名空间模式一节了解更多信息),但返回的是对象而不是函数。”