使用AngularJS进行文件散列

Shr*_*tty 12 javascript hash requirejs angularjs gruntjs

我目前正在研究基于angularAMD的Angualar JS项目.

链接:http://marcoslin.github.io/angularAMD/#/home

这里我们只包含控制器所需的必要依赖文件,而不是所有文件.

例如.

define(['angularAMD', 'common/services/service1', 'module1/services/service2',], function (angularAMD) {
    'use strict';

    angularAMD.controller('abcController', function ($scope, service1, service2) {

              // controller code goes here 
    }
Run Code Online (Sandbox Code Playgroud)

我尝试过Grunt Hashing,
Grunt提供哈希,但哈希文件的位置发生了变化.

这不会更改单个控制器内文件的路径,因此应用程序无法运行.即service1, service2

问题
我想知道当我们包含新文件时是否有办法散列文件?

有没有其他方法可以解决这个问题?

提前致谢

cir*_*ian 2

你如何设置你的模块。你的 main.js 可能看起来像这样

'use strict';
require.config({
    waitSeconds: 0,
    urlArgs: "bust=v1.0.0",
    paths: {
        bootstrap: 'Scripts/bootstrap.min',
        jquery: 'Scripts/jquery-1.10.2.min',
        angular: 'Scripts/angular.min',
        angularRoute: 'Scripts/angular-route.min',
        angularAMD: 'Scripts/angularAMD.min',
        app: 'ngApp/app',
        appConfig: 'ngApp/app.config',

        /*register Services - Start*/
        service1: 'ngServices/Common/service1',
        service2: 'ngServices/module/service2',
        /*register Services - End*/

        /*register Filters - Start*/

        /*register Filters - End*/

        /*register Controllers - Start*/

        /*register Controllers - End*/



    },

    // specifying library dependencies
    shim: {
        'bootstrap':{ deps:['jquery']},
        'angular': { deps: ['jquery'], exports: 'angular' },
        'angularRoute': { deps: ['angular'] },
        'angularAMD': { deps: ['angular'] }
    },

    // define application bootstrap
    deps: ['app']
});
Run Code Online (Sandbox Code Playgroud)

并在你的index.html中

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1">
</head>

<body data-ng-controller="appController as appCtrl" ng-cloak>
        <div >
                <ng-view></ng-view>
        </div>
    </div>
    <script data-main="main" src="Scripts/require.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

并在你的控制器中

'use strict';
define(['angularAMD', 'service1', 'service2'],
function (angularAMD) {

    angularAMD.controller('abcController', ['service1', 'service2',
    function (service1, service1) {
        var self = this,
         // your code
    }]);
});
Run Code Online (Sandbox Code Playgroud)