5

我想知道在 AngularJS 中是否有避免单一 js 文件的最佳实践。

我想避免拥有非常大的 controllers.js/filters.js/services.js 文件。相反,为了便于管理,我希望将每个控制器/过滤器/服务放在自己的文件中。

我想知道,就目录结构和命名约定而言,这种方法是否有推荐的约定。

另外,避免在我的 app/index.html 中为我创建的每个新文件添加脚本标签的最佳方法是什么?

4

2 回答 2

2

你可以检查这个应用程序:https ://github.com/angular-app/angular-app

这是一个很好的例子。

另外,避免在我的 app/index.html 中为我创建的每个新文件添加脚本标签的最佳方法是什么?

例如,它可以由grunt watcher 自动化。我为此任务使用了这样的配置:

grunt.initConfig({
    index: {
        files: ['app/js/**/*.js'],
        tasks: 'index:scripts'
    }
})

grunt.registerMultiTask('index', 'Create index.html',
        function() {        
            var files = grunt._watch_changed_files || grunt.file.expand(this.data);
            var now = new Date().getTime();
            var scripts_str = '';
            var tpl = grunt.file.read('app/index.html.tmpl');


            files.forEach(function(file) {
                file = file.replace(/^app\//, '');
                scripts_str += '<script src="' + file + '?bust=' + now + '"></script>' + "\n";
            });   

            grunt.file.write('app/index.html', grunt.template.process(tpl, {
                data: {
                    scripts: scripts_str
                }
            }))
            console.log('File "index.html" created.');

        });

index.html.tmpl

<html>
<body>
    ...
    <%=scripts%>
</body>
</html>
于 2013-08-14T21:05:08.180 回答
0

那里有一些约定,但似乎还没有出现任何“最佳实践”。

话虽如此,我喜欢的两个约定将每个控制器/过滤器/服务/等放在自己的目录中。至于目录结构,对于较小的项目,我已经看到了每种文件类型的目录。对于大型项目,我已经看到每个模块的目录,该文件夹中包含该模块的所有控制器/过滤器/服务。这也迫使您将应用程序拆分为模块,这是一个很好的副作用。

于 2013-08-14T20:07:29.610 回答