我正在研究一个Web服务的实现,我们正在使用CoffeeScript编写我们的前端代码。我偶然发现的问题是,当项目越来越多时,功能必须在不同的文件中分离。我真正需要的是一个简单的结构,其中在utils.coffee
文件,我将有哪些是从每一页所需的基本功能,并在每个独立的文件,我将有page_foo.coffee
page_bar.coffee
的特定功能。我怎样才能正确构建它,所以我也确保utils.coffee
首先加载,并且可以从每个人都可以访问?组织多个CoffeeScript文件
回答
你可以检查它是如何在gae-init完成项目(免责声明:我的创造者)。
其基本思想是将所有*.coffee
文件放在一个特定目录中,然后生成一个编译所有文件并将其放入正确路径的构建脚本。
由于您希望能够在调试过程中轻松进行调试,因此构建脚本应该有一个选项来编译它们,以及另一个选项来组合它们。
执行顺序推崇的浏览器,所以只包括utils.js
第一。
像CodeKit(http://incident57.com/codekit/)这样的工具可以编译和缩小+将所有.coffee
文件合并到一个.js
中,这对于shell脚本也很容易实现。
如果你的应用程序是真正的大,在require.js和Asynchoronous Module Loading阅读起来。它可以让你很轻松地管理依赖关系,并只加载什么是必要的:
# page_foo.coffee
define ['lib/utils'], ($) ->
// code that uses 'utils'
用于require.js的+1 - 它对我们非常有用。 – domenukk 2013-06-30 14:27:31
我要做的就是写一个蛋糕任务按照预定的顺序加入和编译文件,例如
task 'build', 'join and compile *.coffee files', ->
exec "coffee -j #{outJS}.js -C#{strFiles}", exerr
其中outJS
是我想要编译的JavaScript的文件名,而strFiles
是一串文件名。
此外,您可以添加任务以使用YUICompressor或您最喜欢的工具缩小编译的代码。和发展过程中观看,连接,编译也可以自动
task 'watch', 'watch and compile changes in source dir', ->
watch = exec "coffee -j #{outJS}.js -cw #{strFiles}"
watch.stdout.on 'data', (data)-> process.stdout.write data
看一看this gist
随着CoffeeToaster你必须包括你需要他们的顶部文件的能力,确保您的最终“.js”文件(也将合并您的所有CoffeeScript文件)将按照正确的顺序排列,供浏览器内部使用。
采取的文档看:
http://github.com/serpentem/coffee-toaster
它还配备了一个包装系统,该系统启用时会使用你的文件夹的层次结构,如果你想使空间中声明你的类,那么你可以extends类从多个文件,做进口和儿子,比如像:
#<< another/package/myclass
class SomeClass extends another.package.MyClass
构建配置极为简约:
# => SRC FOLDER
toast 'src_folder'
# => VENDORS (optional)
# vendors: ['vendors/x.js', 'vendors/y.js', ... ]
# => OPTIONS (optional, default values listed)
# bare: false
# packaging: true
# expose: ''
# minify: false
# => HTTPFOLDER (optional), RELEASE/DEBUG (required)
httpfolder: 'js'
release: 'www/js/app.js'
debug: 'www/js/app-debug.js'
甚至有一个调试选项可单独编译文件以简化调试过程和其他有用的功能。
如何显示复杂的命名空间acme.sales.admin,这是我的应用程序的根? – 2012-07-11 21:31:06
您可以相互创建这些文件夹,并将文件放在“acme/sales/admin/yourfile.coffee”中。 – 2012-10-25 17:11:23
CoffeeToaster已经[已停用](https://github.com/arboleya/coffee-toaster/wiki)并分发给一个新项目[Polvo](https://github.com/polvo/polvo)。 – 2017-06-13 20:13:10
- 1. 组织一个多文件Go项目
- 2. 组织多个onChange事件
- 3. 如何组织补丁文件?许多文件或单个?
- 4. 与coffeescript的多个文件通信
- 5. 多文件夹组织和参考CSS
- 6. 组合和多个文件和组织在bash
- 7. Sqlalchemy文件组织
- 8. SUSY组织文件?
- 9. 源文件组织
- 10. 如何组织一个蓝图与多个路线文件
- 11. 使用多个css文件或按注释组织的单个文件
- 12. 如何组织一个基本少的文件和多个少数文件?
- 13. 从nodejs的另一个CoffeeScript文件中请求CoffeeScript文件
- 14. 如何在多个文件中组织JS功能
- 15. PHP cachelite将文件组织成多个目录
- 16. 如何在多个文件中组织视图
- 17. 目标文件组织c
- 18. 组织文件在Cocos2d
- 19. 源文件的组织
- 20. 如何组织css文件?
- 21. 组织Objective-C源文件
- 22. VC2010 C++ - 组织源文件
- 23. Python源文件组织
- 24. 如何组织头文件
- 25. 文件组织PowerShell脚本
- 26. 文件组织程序
- 27. 文件组织成目录
- 28. 组织Rails的源文件
- 29. Django静态文件组织
- 30. 组织文件和文件夹结构
这不是特定于CoffeeScript,而是JavaScript的一般问题。这是说...看到[“构造咖啡代码?”](http://stackoverflow.com/questions/6150455/structuring-coffeescript-code),特别是我的答案[这里](http://stackoverflow.com /问题/ 6150455 /结构,CoffeeScript的代码/ 8303780#8303780)。 – shesek 2012-01-07 12:49:54