多个文件的AngularJS约定

时间:2013-08-14 19:59:41

标签: javascript angularjs convention

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

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

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

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

2 个答案:

答案 0 :(得分:2)

您可以查看此应用:https://github.com/angular-app/angular-app

这是一个很好的例子。

  

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

例如,它可以由grunt观察者自动完成。我使用这样的配置来完成这项任务:

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>

答案 1 :(得分:0)

有一些公约,并没有出现任何“最佳实践”。

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