Coffeescript 将所有功能封装在一个文件中。这很好,但给我带来了一个问题:
假设我有一个咖啡脚本库,假设math.coffee
有返回第 x 个素数的函数gimme_prime(x)
,你需要在一堆文件中使用这个函数。
那么,本质上,我如何重用咖啡脚本代码?
Coffeescript 将所有功能封装在一个文件中。这很好,但给我带来了一个问题:
假设我有一个咖啡脚本库,假设math.coffee
有返回第 x 个素数的函数gimme_prime(x)
,你需要在一堆文件中使用这个函数。
那么,本质上,我如何重用咖啡脚本代码?
根据 OP 的要求:
我评论说他可能需要的是模块模式,这将他引向了这篇文章。我自己会仔细看看这篇文章,因为乍一看它看起来很有希望。
为了限制对模块仅对部分代码公开的函数的访问,您可以将这些文件中的对象传递给模块的 IIFE,并将所有文件也包装在 IIFE 中。这样,使用全局变量(对不起)来回传递对象,undefined
您可以尽快分配给该变量。
由于 JS 是从上到下处理的,因此文件链接到页面的顺序以及分配undefined
给该全局变量的位置确实很重要......但在某些时候,该模块可以被其他人访问文件,除非您使用某种库,否则在某些时候这将需要一个全局变量
你有两个选择:
直接访问全局对象,例如window.gimme_prime = function() ...
使用一些实现 AMD 架构的 JS 工具包(参见例如 Dojo 工具包)。