<link rel="stylesheet" type="text/css" href="/styles/global.css">
<link rel="stylesheet" type="text/css" href="/styles/posts.css">
<link rel="stylesheet" type="text/css" href="/styles/forms.css">
<link rel="stylesheet" type="text/css" href="/styles/users/styles.css">
<link rel="stylesheet" type="text/css" href="/styles/headers/home.css">
<script src="/vendor/jquery.js"></script>
<script src="/vendor/underscore.js"></script>
<script src="/vendor/backbone.js"></script>
<script src="/vendor/handlebars.js"></script>
<script src="/client/models/user.js"></script>
<script src="/client/models/post.js"></script>
<script src="/client/collections/users.js"></script>
<script src="/client/collections/posts.js"></script>
Le soluzioni più comuni intervengono in tre modi:
<link rel="stylesheet" href="/dist/css/vendor.min.css" type="text/css">
<link rel="stylesheet" href="/dist/css/app.min.css" type="text/css" >
<script src="/dist/js/vendor.min.js"></script>
<script src="/dist/js/app.min.js"></script>
Tipicamente questi approcci si adattano molto bene al caso delle Single Page Web Application,
Nel progetto ci sarà tipicamente un file package.json in cui descrivere ed elencare tutti i pacchetti npm di cui abbiamo bisogno come dipendenza
The Javascript task runner
npm install -g grunt-cli
grunt-contrib-concat
// grunt initConfig...
pkg: grunt.file.readJSON('package.json'),
concat: {
options: { separator: ';' },
js: {
src: ['src/**/*.js'],
dest: 'dist/<%= pkg.name %>.js'
},
vendor: {
src: ['vendor/jquery.js', 'vendor/underscore.js', 'vendor/**/*.js'],
dest: 'dist/vendors.js'
}
}
// loadTask here...
grunt-contrib-uglify
// Project configuration.
grunt.initConfig({
uglify: {
options: {
mangle: false
},
my_target: {
files: {
'dest/output.min.js': [
'src/input.js',
'src/input2.js'
]
}
}
}
});
// loadTask here...
grunt-contrib-cssmin
grunt.initConfig({
cssmin: {
target: {
files: { 'dist/style.min.css': ['styles/style.css'] }
}
}
}
// loadTask here...
"grunt-contrib-connect"
grunt.initConfig({
connect: {
server: {
options: {
port: 8000,
base: ".",
livereload: true,
open: true
}
}
}
});
grunt.loadNpmTasks( 'grunt-contrib-connect' );
grunt.registerTask( 'default', [ 'connect' ] );
"grunt-contrib-watch"
grunt.initConfig({
watch: {
options: {
livereload: true
},
html: {
files: [ "./src/**/*.html" ]
},
markdown: {
files: [ "./src/**/*.md" ]
}
}
});
grunt.loadNpmTasks( 'grunt-contrib-watch' );
grunt.registerTask( 'default', [ 'watch' ] );
grunt-contrib-copy
copy: {
main: {
files: [
// makes all src relative to cwd
{expand: true, cwd: 'path/', src: ['**'], dest: 'dest/'},
// flattens results to a single level
{expand: true, flatten: true, src: ['path/**'], dest: 'dest/', filter: 'isFile'},
],
},
}
grunt-preprocess
grunt-jsdoc
Esercitazione 01
Scrivere la documentazione con JSDoc
Esercitazione 02
Generare la documentazione con un task Grunt
Esercitazione 03...
Esercitazione 03
Le direttive di grunt-preprocess che utilizzerete sono le seguenti:
@include-static file.html
: per includere il contenuto di un frammento esterno@exclude / @endexclude
: per escludere la parte che si trova tra apertura e chiusura del tag
Alca Società Cooperativa http://alcacoop.it
Released under CC BY-NC-SA 3.0