angularjs – 如何在Angular Yeoman模板dist中使用ng-include?

前端之家收集整理的这篇文章主要介绍了angularjs – 如何在Angular Yeoman模板dist中使用ng-include?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经使用Yeoman生成器创建了AngularJS模板(Angular 1)并且正在开发它.

为了保持我的代码清洁我有一个主要的html文件然后我使用ng-include将部分html视图添加到这个主html视图.

当我运行grunt服务时,我的项目运行正常.

但是,当我运行grunt构建来构建应用程序的分发版本时,ng-includes停止工作,没有任何内容显示在它们应该的位置.

我猜测Yeoman生成器带来的开箱即用的咕噜声任务有人会以阻止ng-includes工作的方式剥离或缩小文件

如果是这样,应该在grunt文件中更改什么以允许ng-includes工作?

这是生成的grunt文件

// Generated on 2016-04-24 using generator-angular 0.15.1
'use strict';

// # Globbing
// for performance reasons we're only matching one level down:
// 'test/spec/{,*/}*.js'
// use this if you want to recursively match all subfolders:
// 'test/spec/**/*.js'

module.exports = function (grunt) {

  // Time how long tasks take. Can help when optimizing build times
  require('time-grunt')(grunt);

  // Automatically load required Grunt tasks
  require('jit-grunt')(grunt,{
    useminPrepare: 'grunt-usemin',ngtemplates: 'grunt-angular-templates',cdnify: 'grunt-google-cdn'
  });

  // Configurable paths for the application
  var appConfig = {
    app: require('./bower.json').appPath || 'app',dist: 'dist'
  };

  // Define the configuration for all the tasks
  grunt.initConfig({

    // Project settings
    yeoman: appConfig,// Watches files for changes and runs tasks based on the changed files
    watch: {
      bower: {
        files: ['bower.json'],tasks: ['wiredep']
      },js: {
        files: ['<%= yeoman.app %>/scripts/{,*/}*.js'],tasks: ['newer:jshint:all','newer:jscs:all'],options: {
          livereload: '<%= connect.options.livereload %>'
        }
      },jsTest: {
        files: ['test/spec/{,tasks: ['newer:jshint:test','newer:jscs:test','karma']
      },styles: {
        files: ['<%= yeoman.app %>/styles/{,*/}*.css'],tasks: ['newer:copy:styles','postcss']
      },gruntfile: {
        files: ['Gruntfile.js']
      },livereload: {
        options: {
          livereload: '<%= connect.options.livereload %>'
        },files: [
          '<%= yeoman.app %>/{,*/}*.html','.tmp/styles/{,*/}*.css','<%= yeoman.app %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}'
        ]
      }
    },// The actual grunt server settings
    connect: {
      options: {
        port: 9000,// Change this to '0.0.0.0' to access the server from outside.
        hostname: 'localhost',livereload: 35729
      },livereload: {
        options: {
          open: true,middleware: function (connect) {
            return [
              connect.static('.tmp'),connect().use(
                '/bower_components',connect.static('./bower_components')
              ),connect().use(
                '/app/styles',connect.static('./app/styles')
              ),connect.static(appConfig.app)
            ];
          }
        }
      },test: {
        options: {
          port: 9001,connect.static('test'),dist: {
        options: {
          open: true,base: '<%= yeoman.dist %>'
        }
      }
    },// Make sure there are no obvIoUs mistakes
    jshint: {
      options: {
        jshintrc: '.jshintrc',reporter: require('jshint-stylish')
      },all: {
        src: [
          'Gruntfile.js','<%= yeoman.app %>/scripts/{,*/}*.js'
        ]
      },test: {
        options: {
          jshintrc: 'test/.jshintrc'
        },src: ['test/spec/{,*/}*.js']
      }
    },// Make sure code styles are up to par
    jscs: {
      options: {
        config: '.jscsrc',verbose: true
      },test: {
        src: ['test/spec/{,// Empties folders to start fresh
    clean: {
      dist: {
        files: [{
          dot: true,src: [
            '.tmp','<%= yeoman.dist %>/{,*/}*','!<%= yeoman.dist %>/.git{,*/}*'
          ]
        }]
      },server: '.tmp'
    },// Add vendor prefixed styles
    postcss: {
      options: {
        processors: [
          require('autoprefixer-core')({browsers: ['last 1 version']})
        ]
      },server: {
        options: {
          map: true
        },files: [{
          expand: true,cwd: '.tmp/styles/',src: '{,dest: '.tmp/styles/'
        }]
      },dist: {
        files: [{
          expand: true,dest: '.tmp/styles/'
        }]
      }
    },// Automatically inject Bower components into the app
    wiredep: {
      app: {
        src: ['<%= yeoman.app %>/index.html'],ignorePath:  /\.\.\//
      },test: {
        devDependencies: true,src: '<%= karma.unit.configFile %>',ignorePath:  /\.\.\//,fileTypes:{
          js: {
            block: /(([\s\t]*)\/{2}\s*?bower:\s*?(\S*))(\n|\r|.)*?(\/{2}\s*endbower)/gi,detect: {
                js: /'(.*\.js)'/gi
              },replace: {
                js: '\'{{filePath}}\','
              }
            }
          }
      }
    },// Renames files for browser caching purposes
    filerev: {
      dist: {
        src: [
          '<%= yeoman.dist %>/scripts/{,*/}*.js','<%= yeoman.dist %>/styles/{,'<%= yeoman.dist %>/images/{,svg}','<%= yeoman.dist %>/styles/fonts/*'
        ]
      }
    },// Reads HTML for usemin blocks to enable smart builds that automatically
    // concat,minify and revision files. Creates configurations in memory so
    // additional tasks can operate on them
    useminPrepare: {
      html: '<%= yeoman.app %>/index.html',options: {
        dest: '<%= yeoman.dist %>',flow: {
          html: {
            steps: {
              js: ['concat','uglifyjs'],css: ['cssmin']
            },post: {}
          }
        }
      }
    },// Performs rewrites based on filerev and the useminPrepare configuration
    usemin: {
      html: ['<%= yeoman.dist %>/{,*/}*.html'],css: ['<%= yeoman.dist %>/styles/{,js: ['<%= yeoman.dist %>/scripts/{,options: {
        assetsDirs: [
          '<%= yeoman.dist %>','<%= yeoman.dist %>/images','<%= yeoman.dist %>/styles'
        ],patterns: {
          js: [[/(images\/[^''""]*\.(png|jpg|jpeg|gif|webp|svg))/g,'Replacing references to images']]
        }
      }
    },// The following *-min tasks will produce minified files in the dist folder
    // By default,your `index.html`'s <!-- Usemin block --> will take care of
    // minification. These next options are pre-configured if you do not wish
    // to use the Usemin blocks.
    // cssmin: {
    //   dist: {
    //     files: {
    //       '<%= yeoman.dist %>/styles/main.css': [
    //         '.tmp/styles/{,*/}*.css'
    //       ]
    //     }
    //   }
    // },// uglify: {
    //   dist: {
    //     files: {
    //       '<%= yeoman.dist %>/scripts/scripts.js': [
    //         '<%= yeoman.dist %>/scripts/scripts.js'
    //       ]
    //     }
    //   }
    // },// concat: {
    //   dist: {}
    // },imagemin: {
      dist: {
        files: [{
          expand: true,cwd: '<%= yeoman.app %>/images',gif}',dest: '<%= yeoman.dist %>/images'
        }]
      }
    },svgmin: {
      dist: {
        files: [{
          expand: true,*/}*.svg',htmlmin: {
      dist: {
        options: {
          collapseWhitespace: true,conservativeCollapse: true,collapseBooleanAttributes: true,removeCommentsFromCDATA: true
        },cwd: '<%= yeoman.dist %>',src: ['*.html'],dest: '<%= yeoman.dist %>'
        }]
      }
    },ngtemplates: {
      dist: {
        options: {
          module: 'onedaylikethisApp',htmlmin: '<%= htmlmin.dist.options %>',usemin: 'scripts/scripts.js'
        },cwd: '<%= yeoman.app %>',src: 'views/{,dest: '.tmp/templateCache.js'
      }
    },// ng-annotate tries to make the code safe for minification automatically
    // by using the Angular long form for dependency injection.
    ngAnnotate: {
      dist: {
        files: [{
          expand: true,cwd: '.tmp/concat/scripts',src: '*.js',dest: '.tmp/concat/scripts'
        }]
      }
    },// Replace Google CDN references
    cdnify: {
      dist: {
        html: ['<%= yeoman.dist %>/*.html']
      }
    },// Copies remaining files to places other tasks can use
    copy: {
      dist: {
        files: [{
          expand: true,dot: true,dest: '<%= yeoman.dist %>',src: [
            '*.{ico,png,txt}','*.html','images/{,*/}*.{webp}','styles/fonts/{,*/}*.*'
          ]
        },{
          expand: true,cwd: '.tmp/images',dest: '<%= yeoman.dist %>/images',src: ['generated/*']
        },cwd: 'bower_components/bootstrap/dist',src: 'fonts/*',dest: '<%= yeoman.dist %>'
        }]
      },styles: {
        expand: true,cwd: '<%= yeoman.app %>/styles',dest: '.tmp/styles/',*/}*.css'
      }
    },// Run some tasks in parallel to speed up the build process
    concurrent: {
      server: [
        'copy:styles'
      ],test: [
        'copy:styles'
      ],dist: [
        'copy:styles','imagemin','svgmin'
      ]
    },// Test settings
    karma: {
      unit: {
        configFile: 'test/karma.conf.js',singleRun: true
      }
    }
  });


  grunt.registerTask('serve','Compile then start a connect web server',function (target) {
    if (target === 'dist') {
      return grunt.task.run(['build','connect:dist:keepalive']);
    }

    grunt.task.run([
      'clean:server','wiredep','concurrent:server','postcss:server','connect:livereload','watch'
    ]);
  });

  grunt.registerTask('server','DEPRECATED TASK. Use the "serve" task instead',function (target) {
    grunt.log.warn('The `server` task has been deprecated. Use `grunt serve` to start a server.');
    grunt.task.run(['serve:' + target]);
  });

  grunt.registerTask('test',[
    'clean:server','concurrent:test','postcss','connect:test','karma'
  ]);

  grunt.registerTask('build',[
    'clean:dist','useminPrepare','concurrent:dist','ngtemplates','concat','ngAnnotate','copy:dist','cdnify','cssmin','uglify','filerev','usemin','htmlmin'
  ]);

  grunt.registerTask('default',[
    'newer:jshint','newer:jscs','build'
  ]);
};

解决方法

为了在Yeoman生成的Angular应用程序(yo:angular)中使用grunt服务时看到模板正常显示,您应该将模板文件路径放在单引号内,如下所示:

<div ng-include="'views/templates/header.html'"></div>

我有一个类似的问题,使用grunt构建,我看不到如何在构建的应用程序中继续使用ng-include(在ngTemplate任务运行之后,所有视图都在一个大的.js文件中…

有人之前做过这个或者有一些指示吗?

猜你在找的Angularjs相关文章