您肯定应该连接您的 javascript 文件。提供许多文件真的很糟糕。我现在使用的是Grunt。它是一个 nodejs 任务运行器。我们有两个环境
- development/local - 在本地环境中 Grunt 连接文件,但不要缩小它们。它还在每个文件上方添加了一个信息性注释,因此如果您在 DevTools 中看到一些错误,您需要滚动一下以查看确切的文件
- 生产 - 最终文件被缩小并删除评论。
使用这种方法,我们仍然将所有内容拆分到不同的文件中,但只提供一个文件。我们实际上不仅将 Grunt 用于 javascript,还用于 html 模板、CSS、生成缓存清单和主 index.html 文件。这是我们的 package.json 文件的样子:
{
"name": "project",
"version": "0.0.1",
"description": "project",
"repository": {},
"devDependencies": {
"grunt": "0.4.1",
"grunt-contrib-concat": "0.3.0",
"grunt-contrib-watch": "0.4.4"
}
}
还有我们的 Gruntfile.js:
module.exports = function(grunt) {
grunt.initConfig({
// contcatenation
concat: {
// javascript
js: {
src: ['src/**/*.js'],
dest: 'bin/scripts.js',
options: {
process: function(src, filepath) {
// do something here
return "\n/* " + filepath + " */\n" + src;
}
}
},
// CSS
css: {
src: ['src/**/*.css'],
dest: 'bin/styles.css',
options: {
process: function(src, filepath) {
return src;
}
}
},
// HTML templates
html: {
src: ['src/**/*.html', '!src/index.html'],
dest: 'tmp/templates.html',
options: {
process: function(src, filepath) {
return src;
}
}
}
},
// custom task for generating index.html (it's a single page app)
'generate-index': {
index: {
src: '<%= concat.html.dest %>',
dest: 'bin/index.html',
template: 'src/index.html'
}
},
// custom task for generating cache manifest file
'generate-manifest': {
manifest: {
dest: 'bin/cache.manifest'
}
},
// watching all the files and performa the specific tasks
watch: {
js: {
files: ['<%= concat.js.src[0] %>'],
tasks: ['concat:js', 'generate-manifest']
},
css: {
files: ['<%= concat.css.src[0] %>'],
tasks: ['concat:css', 'generate-manifest']
},
html: {
files: ['<%= concat.html.src[0] %>'],
tasks: ['concat:html', 'generate-index', 'generate-manifest']
},
img: {
files: ['bin/img/**/*.png', 'bin/img/**/*.jpg', 'bin/img/**/*.gif'],
tasks: ['generate-manifest']
}
}
});
// loading modules
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadTasks('tasks');
// grunt.registerTask('default', ['concat', 'less']);
grunt.registerTask('default', ['concat', 'generate-index', 'generate-manifest', 'watch']);
}