[英]Is there a way to include file in coffee script?
我想知道是否有办法在咖啡脚本中包含文件。 类似于C中的#include
或者require
PHP ...
如果你将coffeescript与node.js一起使用(例如,当使用命令行工具coffee
),你可以使用node的require()
函数,就像使用JS文件一样。
假设您要在main.coffee
included-file.coffee
main.coffee
:
在included-file.coffee
:声明并导出要导出的对象
someVar = ...
exports.someVar = someVar
在main.coffee
您可以说:
someVar = require('included-file.coffee').someVar
这为您提供了干净的模块化,并在包含外部代码时避免了命名空间冲突。
coffeescript-concat是一个预处理和连接CoffeeScript源文件的实用程序。
它使您可以轻松地将CoffeeScript代码保存在单独的单元中,并且仍可轻松运行它们。 您可以保持源在逻辑上分离,而不必将它们放在一起运行或嵌入到网页中。 此外,coffeescript-concat将为您提供单个源文件,可以轻松编译为单个Javascript文件。
如果您想要的是在浏览器中运行的单个JS文件,我建议使用像Grunt (或Gulp ,或Cake ,或Mimosa或任何其他 )的构建工具来预处理您的Coffeescript,以及包含/ require / import模块将包含的文件连接到编译输出中,如下所示:
exports/require
API,然后提取并连接浏览器可包含文件中所需的所有内容。 存在Grunt , Gulp , Mimosa以及其他大多数人。 直到今天,我认为如果您在兼容Node和浏览器之后(甚至是其他方式)它可能是最好的解决方案 如果您宁愿避免构建工具的额外复杂性,您可以使用Browserify独立,或者不基于Node的require
替代方案,如coffeescript-concat或Coffee-Stir
如果你是专门为浏览器编写的,并且不介意,或者更确切想要,你的脚本分布在通过AJAX获取的几个文件中,你可以使用如下的无数工具:
你可以尝试这个库来解决同样的问题咖啡 - 搅拌它非常简单。 只需键入#include以及要包含的文件的名称
#include MyBaseClass.coffee
我发现在处理它们之前使用“gulp-concat”合并我的咖啡脚本就可以了。 它可以使用npm轻松安装到您的项目中。
npm install gulp-concat
然后编辑你的gulpfile.js:
var gulp = require('gulp')
,coffee = require('gulp-coffee')
,concat = require('gulp-concat');
gulp.task('coffee', function(){
gulp.src('src/*.coffee')
.pipe(concat('app.coffee')
.pipe(coffee({bare: true}).on('error', gulp.log))
.pipe(gulp.dest('build/')
})
这是我用来连接所有咖啡脚本的代码,然后gulp将其处理成最终的构建Javascript。 唯一的问题是文件按字母顺序处理。 您可以明确说明要处理哪个文件以实现自己的文件顺序,但是您失去了添加动态.coffee文件的灵活性。
gulp.src(['src/file3.coffee', 'src/file1.coffee', 'src/file2.coffee'])
.pipe(concat('app.coffee'))
.pipe(coffee({bare: true}).on('error', gulp.log))
.pipe(gulp.dest('build/')
2015年2月25日的gulp-concat可在此网址获取。
Rails使用sprockets来执行此操作,此语法已适用于https://www.npmjs.org/package/grunt-sprockets-directives 。 对我来说效果很好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.