gpt4 book ai didi

angularjs - gulp-angular-filesort 对于 gulp-inject 到底有什么作用?

转载 作者:行者123 更新时间:2023-12-03 06:38:41 25 4
gpt4 key购买 nike

有人可以举例说明 gulp-angular-filesort 的真正用途以及如何正确使用它吗?

问题是,我最近意识到我的 gulp-angular-filesort 根本不排序 angularjs 文件,但是我的 AngularJS 应用程序有很多文件工作正常。所以,我想出了两个问题:

  1. AngualarJs 对源文件顺序仍然敏感吗?对我来说,似乎并非如此。
  2. gulp-angular-filesort 实际上做了什么?我看不到它的任何工作结果。

我认为 gulp-angular-filesort 会查看 angular.module 语句并根据括号中指定的依赖关系对文件进行排序。看来我错了。

请看下面我的示例。

//文件:Gulpfile.js

'use strict';

var
gulp = require('gulp'),
connect = require('gulp-connect'),
angularFilesort = require('gulp-angular-filesort'),
inject = require('gulp-inject');


gulp.task('default', function () {

gulp.src('app/index.html')
.pipe(inject(
gulp.src(['app/js/**/*.js']).pipe(angularFilesort()),
{
addRootSlash: false,
ignorePath: 'app'
}
))
.pipe(gulp.dest('app'))
;

connect.server({
root: 'app',
port: 8081,
livereload: true
});

});

//a_services.js

'use strict';

angular.module('myServices', [])
.factory('MyService', function () {
return {
myVar:1
};
})
;

//b_controllers.js

'use strict';

angular.module('myControllers', ['myServices'])
.controller('MyController', function ($scope, MyService) {
$scope.myVar = MyService.myVar;
})
;

//c_app.js

'use strict';

angular.module('myApp', ['myControllers']);

gulp-inject 的结果如下:

<!-- inject:js -->
<script src="js/c_app.js"></script>
<script src="js/b_controllers.js"></script>
<script src="js/a_services.js"></script>
<!-- endinject -->

我期望完全相反的顺序来使应用程序正常工作(但它仍然有效)。因此,使用 gulp-angular-filesort 只是按字母顺序对文件进行排序,尽管 Angular.module(...,[...]) 中指定了所有依赖项

这是怎么回事?

最佳答案

实际上在你的情况下你不需要gulp-angular-filesort因为你为每个文件声明了一个模块。 Angular 的依赖注入(inject)机制将根据您的依赖关系找出调用模块的正确方法。

您需要gulp-angular-filesort仅当您有一个模块分布在多个文件中时。因此,对于您的示例,如果所有文件都使用“myApp”作为模块名称。然后插件将对文件进行正确排序:始终将具有依赖项的文件排在其他文件之前。

这里修改了您的示例,以便 gulp-angular-filesort需要:

//a_services.js

'use strict';

angular.module('myApp')
.factory('MyService', function () {
return {
myVar:1
};
})
;

//b_controllers.js

'use strict';

angular.module('myApp')
.controller('MyController', function ($scope, MyService) {
$scope.myVar = MyService.myVar;
})
;

//c_app.js

'use strict';

angular.module('myApp', []);

在这种情况下,这仍然是:

  1. c_app.js
  2. b_controller.js
  3. a_service.js

关于angularjs - gulp-angular-filesort 对于 gulp-inject 到底有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35961853/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com