如何模块化的组织AngularJS的代码

angular 标准目录结构_如何更好地组织Angular项目 虽然 Angular 官网 已经给出了Angular 项目结构的建议,不过有些地方实践起来还是有需要注意的地方,这里就结合 ng-alain 来讲讲如何更好地组织一个 Angular 项目。layout和 routes模块首先,我们来看看 ng-alain 的目录结构。可以看到, app 文件夹下面被分成了core、layout、routes、shared几个目录。先看layout 和 route... 阅读详情

刚开始学AngularJS的时候,觉得模块这个东西很拽,但是学了路由之后,会导致一个js文件里面放置了很多JS代码,如果程序的代码量再继续扩大,那么,AngularJS的代码就会变得难以维护了。那么此时,我们就需要对我们的代码进行模块化组织了:

Index.html

<!DOCTYPE html>
<html ng-app="myApp">
<head>
    <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" />
    <link rel="stylesheet" href="//netdna.bootstrapcdn.com/font-awesome/4.0.0/css/font-awesome.css" />
    <script src="~/Scripts/angular.js"></script>
    <script src="~/Scripts/angular-route.js"></script>
    <script src="~/AngularFiles/app.js"></script>
    <script src="~/AngularFiles/controllers.js"></script>
    <script src="~/AngularFiles/ServiceModule.js"></script>
</head>
<body>
    <header>
        <nav class="navbar navbar-default">
            <div class="container">
                <div class="navbar-header">
                    <a class="navbar-brand" href="/">Angular Routing Example</a>
                </div>
                <ul class="nav navbar-nav navbar-right">
                    <li><a href="#/"><i class="fa fa-home"></i> 雅安校区</a></li>
                    <li><a href="#/about"><i class="fa fa-shield"></i> 成都校区</a></li>
                    <li><a href="#/contact"><i class="fa fa-comment"></i> 都江堰校区</a></li>
                </ul>
            </div>
        </nav>
    </header>
    <div id="main">
        <div ng-view></div>
    </div>
</body>
</html>
app.js,程序的入口,就相当于我们C语言的Main函数。
(function () {
    'use strict';
    var myApp = angular.module('myApp', ['ngRoute', "controllersModule"]);//申明对controllers的依赖

    //配置路由
    myApp.config(["$routeProvider", function ($routeProvider) {
        $routeProvider
          //home
          .when('/', {
              templateUrl: '/Template/home.html',
              controller: 'mainController'
          })
          //about
          .when('/about', {
              templateUrl: '/Template/about.html',
              controller: 'aboutController'
          })
          //contact
          .when('/contact', {
              templateUrl: '/Template/contact.html',
              controller: 'contactController'
          });
    }]);
}())


controller.js,这里我们主要将所有的控制器代码放置到一个文件下面,便于日后的管理和维护。

(function () {
    'use strict';
 var app = angular.module("controllersModule", ["common"]);//声明对common模块的依赖
    app.controller('mainController', ["$scope", "MathService", "$http", function ($scope, MathService, $http) {
        // create a message to display in our view
        $scope.message = '四川农业大学(Sichuan Agricultural University)简称“四川农大”,是由四川省人民政府主管的一所以生物科技为特色、农业科技为优势,农、理、工、经、管、医、文、教、法、艺多学科协调发展的重点大学,是国家“211工程”重点建设院校之一,入选“111计划[1]  “、“卓越农林人才教育培养计划”、“援疆学科建设计划”、“国家建设高水平大学公派研究生项目”,是国家“973计划”承担高校,“四川2011计划”高校[2]  ,是全国首批高等学校新农村发展研究院[3]  试点单位,是中华人民共和国教育部与四川省人民政府共建的省部共建大学,[4]  四川省首批人才优先发展试验区2所试点高校之一, [5]  具备自主招生资格[6]  。';
        $scope.img_path = "/IMG/ya.jpg";
        $scope.add = MathService.add;
    }]);
    //about控制器
    app.controller('aboutController', ["$scope", "$location", function ($scope, $location) {
        $scope.img_path = "/IMG/cd.jpg";
        $scope.message = '学校最早起源于1906年(清光绪三十二年)在成都创办的“四川通省农业学堂”,学校前身为原四川大学农学院。1956年,四川大学农学院迁往雅安独立办学,定名“四川农学院”;1985年,学校更名为四川农业大学。';
    }]);
    //contact控制器
    app.controller('contactController', ["$scope", "$location", function ($scope, $location) {
        $scope.img_path = "/IMG/djy.jpg";
        $scope.message = '截止2015年7月,学校拥有三个校区,分别位于雅安市雨城区(校本部校区)、成都市温江区(成都校区)和都江堰市(都江堰校区),校园总面积约4500亩;全日制在校生37000余人,其中:本科生32000余人,硕士和博士研究生近4000人。同时学校在成都市崇州市建有占地2300余亩的现代农业研发基地,在四川农业大学邛崃现代农业专家大院示范基地安置有我国第二台(世界第三台)毫米波扫描昆虫雷达。';
    }]);
}())

Servicer.js,主要包括服务的各种代码.

(function () {
    'use strict';
    var app = angular.module('common', []);
    app.factory("MathService", function () {
        var add = function (x, y) {
            return x + y;
        }
        var minus = function (x, y) {
            return x - y;
        }
        var multiply = function (x, y) {
            return x * y;
        }
        var divide = function (x, y) {
            if (y == 0) {
                throw Error;
            }
            return x / y;
        }
        return {
            add: add,
            minus: minus,
            multiply: multiply,
            divide: divide
        }
    });
})()


如果还有各种filters,也是按照这个道理组织。

经过这样处理之后的代码,就变得井井有条了,以后无论我们的业务逻辑怎样扩展,我们的程序照样可以很好的组织。

TIPS:

1.在AngularJS中建议大家使用立即函数,即:

(function () {
    //angularjs代码
}())

2.希望大家在写AngularJS代码的时候启用JavaScript的严格模式,这样可以避免一些不必要的错误。

3.在编写模块的时候,希望大家采用第二种方式书写,这样可以避免在代码压缩的时候,AngularJS报错:

不推荐的做法:

app.controller('aboutController',  function ($scope, $location) {
        $scope.img_path = "/IMG/cd.jpg";
        $scope.message = '学校最早起源于1906年(清光绪三十二年)在成都创办的“四川通省农业学堂”,学校前身为原四川大学农学院。1956年,四川大学农学院迁往雅安独立办学,定名“四川农学院”;1985年,学校更名为四川农业大学。';
    });
推荐的做法:
app.controller('mainController', ["$scope", "MathService", "$http", function ($scope, MathService, $http) {
        // create a message to display in our view
        $scope.message = '四川农业大学(Sichuan Agricultural University)简称“四川农大”,是由四川省人民政府主管的一所以生物科技为特色、农业科技为优势,农、理、工、经、管、医、文、教、法、艺多学科协调发展的重点大学,是国家“211工程”重点建设院校之一,入选“111计划[1]  “、“卓越农林人才教育培养计划”、“援疆学科建设计划”、“国家建设高水平大学公派研究生项目”,是国家“973计划”承担高校,“四川2011计划”高校[2]  ,是全国首批高等学校新农村发展研究院[3]  试点单位,是中华人民共和国教育部与四川省人民政府共建的省部共建大学,[4]  四川省首批人才优先发展试验区2所试点高校之一, [5]  具备自主招生资格[6]  。';
        $scope.img_path = "/IMG/ya.jpg";
        $scope.add = MathService.add;
    }]);


Ionic 应用开发的 AngularJS 风格指南实战指南 本文还有配套的精品资源,点击获取 简介:本文详细探讨了在Ionic移动应用程序开发中应用AngularJS风格指南的各个方面,确保代码质量与可维护性。涵盖模块化组织、依赖注入、指令设计、服务使用、控制器与模型分离、模板语法、数据绑定、事件处理、路由配置、测试驱动开发、性能优化、持续集成、文档注释以及版本控制等关键实践。此外,还介绍了社区资源和最佳实践的学习途径。 ... 阅读详情

相关推荐

如何组织你的javascript代码

如何组织你的javascript代码, asp/jsp 程序员必备工具书!

常用AngularJs代码段

一,ng-repeat/filter/orderby使用 数据结构: { "result":true, "ItemWeekIndex":"第二周", "Content":[ { "weekIndex":1, "courseInfo":"11教501高等数...

weixin_34163553的博客 147

angularjs高级程序设计 代码

angularjs高级程序设计(Adam Freeman)随书代码,去掉了一些安装包,仅仅保留代码部分

跟我读AngularJs的源代码

你要相信,再牛逼的框架他的本质也是javascript代码,只要你会js代码你就能看懂!别怂!AngularJs是一个很简单的框架(其设计思想很前卫,涉及领域很广,使得它表现出很难的特性,但是你要相信,你使用起来还是很简单的。)我这里分析的是AngularJS v1.5.7,官网最新版的是2.x(新版的2.x比1.x改进了很多很多,改天再细致分析一遍)我们来分析一下angular的核心文件(),打开

极客神殿 3355

win10系统下使用Mask_Rcnn训练自己的数据

版权所有,翻版必究。https://mp.youkuaiyun.com/console/editor/html/106094147 运行环境:WIN10,pycharm,相应的CUDA,CUDNN,tensorflow1.15.0,tensorflow-gpu-1.14.0,Anaconda3 第一步:Mask RCNN开源项目:https://github.com/matterport/Mask_RCNN 第一步:数据准备 首先安装labelme进行数据的标注。安装方法pip install labe

fightingxyz的博客 1750

新能源知识库(62)组串式、集中式和高压直挂式

因需多台PCS及独立监控设备,单位功率成本比集中式高15%–20%。高压直挂式因省去变压器,大容量项目成本更低(>5MW时优势显著)。组串式储能、集中式储能和高压直挂式储能是当前主流的三类技术路线,其核心差异源于系统架构和控制逻辑的设计差异。组串式交流侧需变压器升压至10kV/35kV,高压直挂式可直接输出6kV/35kV电压,减少转换损耗。多台小功率PCS并联(每簇独立管理)单台大功率PCS(多簇直流侧并联)环流导致容量衰减(损失5%–8%)无变压器损耗(效率>99%)高压直挂电站(≥10MW)

竹君子之家 1517

如何组织大型JavaScript应用中的代码

http://www.youkuaiyun.com/article/2013-04-27/2815077-code-organization-angularjs-javascript 如何组织大型JavaScript应用中的代码? 作者Cliff Meyers JavaScriptAngular 摘要:我们常常看到Web应用中将JavaScript、CSS、图片文件分别按文件类型区分,这一

每天问问自己,你今天努力了吗? 844

Appstore开发者必读:3.2(f)违规预警与高效申诉指南

本文为AppStore开发者提供了应对3.2(f)违规通知的完整指南。文章深度解析了3.2(f)条款下的隐瞒性、关联性与真实性违规类型,并提供了黄金48小时内的自查、申诉信撰写与提交全流程策略。同时,文章强调遵循App Review Guidelines,建立内部合规清单与保持账号独立,是预防违规、维护开发者账号安全的关键。

weixin_29214559的博客 273

AngularFun最佳实践:代码组织与架构设计的黄金法则

AngularFun作为AngularJS Reference Architecture的典范项目,为开发者提供了一套清晰的代码组织与架构设计方案。本文将深入剖析其核心架构原则和最佳实践,帮助你快速掌握AngularJS应用的构建精髓。 ## 一、模块化架构:构建高内聚低耦合的应用 AngularFun采用了严格的模块化设计,将应用功能拆分为独立的模块单元。通过分析项目结构,我们可以看到清晰的

gitblog_00401的博客 707

Label Studio 图像分割自动标注接入教程:从模型预测到一键上传 Predictions

这篇文章详细介绍了如何使用Label Studio进行图像分割任务的自动标注流程。主要内容包括: 环境准备:安装Label Studio和模型推理依赖 项目配置:启动Label Studio服务,创建项目并配置BrushLabels标注界面 数据准备:导入待标注图片,获取API访问凭证 模型推理:运行训练好的分割模型生成预测mask 结果上传:将预测结果转换为Label Studio格式并通过API上传为Predictions 文章提供了完整的操作指南,包括: 详细的命令行参数说明 推荐的项目目录结构 标注

. 452

ISP Tuning实战指南:从基础到高级的色彩与亮度优化

本文详细介绍了ISP Tuning的基础概念与高级调优技术,包括黑电平校正(BLC)、自动白平衡(AWB)、色彩校正矩阵(CCM)和Gamma曲线调整等核心算法。通过实战案例和调试技巧,帮助工程师提升摄像头成像质量,解决高光过曝、暗部噪点等常见问题,适用于智能门铃、车载摄像头等多种场景。

weixin_30879169的博客 108

如何组织大型JavaScript应用中的代码?(转)

我们常常看到Web应用中将JavaScript、CSS、图片文件分别按文件类型区分,这一习惯在过去的Web开发场景中尚可胜任。但随着Web App的发展,JavaScript应用越来越复杂,开发者需要更清晰、高效的文件结构。 本文作者Cliff Meyers是一个前端工程师,熟悉HTML5、JavaScript、J2EE开发,他在开发过程中总结了自己在应对JavaScript应用越...

aogaoxin7927的博客 145

YOLOv10精度上不去?QAT量化感知训练全流程,INT8推理mAP只掉0.8%

普通PTQ量化虽简单,但无法应对YOLOv10的小目标特征和激活分布波动,导致精度暴跌。QAT通过“模拟量化误差+联合优化权重与量化参数”,让INT8模型精度接近FP16,同时速度提升1.8倍,完美适配实时检测场景(如安防监控、自动驾驶)。该流程已在工业级项目中验证,针对YOLOv10的优化策略(敏感层保护、小目标加权、分阶段训练)可直接迁移至其他YOLO系列(v8/v9),量化后精度损失均可控制在1%以内。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 916

AngularJS 的路由 工程模块化 (三)

在上一篇文章中,我们使用了 app.config 定义了 路由匹配规则 <script> var app = angular.module("app", ["ngRoute"]); app.config(["$routeProvider", fun...

chenjiaquan4321的博客 191

ansys 求解过程中出现未知错误。检查“求解信息”对象上的“求解器输出”,查找可能的原因。-静力学分析遇到的,这是什么原因——An unknown error occurred ——未找到解决方法

点击“确定”关闭弹窗后,进入Workbench的‌“求解信息”对象‌,查看‌“求解器输出”‌,搜索“Error”“Fatal”“Warning”等关键词,找到具体的错误描述,比如材料未定义、网格质量问题、内存不足等,这是精准解决问题的关键。进入“工具-选项-mechanical APDL”,取消勾选“分布式”,GPU加速器选择“none”。在“求解进程设置-高级”中调整内存分配参数,或切换为迭代求解器(如PCG求解器),它更省内存。尝试简化模型,比如删除非关键细节、合并重复部件,分步验证模型,定位问题源。

qq_15963745的博客 623

ElectrolyteGPT:首个电池电解液逆向设计的生成式 AI 系统 —— 算法原理与复现解析

数据驱动的重要性:1100 万→100 万的精心筛选,比单纯增大模型更有效领域适配:fLine 表示法、正则分词、化学感知的数据增强(SMILES randomization)都是关键小模型的力量:6M 参数在特定化学空间的表现,远超通用大模型在相同任务上的零样本能力条件生成的极限:10 维条件导致模型崩溃,提示我们需要更好的条件编码策略(如 diffusion guidance、RLHF-style 偏好优化)未来方向配方实验验证。

ASKCOS博客 124

AngularJS中module的导入导出

关于AngularJS中module的导入导出,在Bob告诉我之前还没写过,谢谢Bob在这方面的指导,给到我案例代码。在AngularJS实际项目中,我们可能需要把针对某个领域的各个方面放在不同的module中,然后把各个module汇总到该领域的一个文件中,再由主module调用。就是这样: 以上,app.mymodule1, app.mymodule2,app.mymodule都是针对...

weixin_30532759的博客 192

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

AngularJS + RequireJS

http://www.startersquad.com/blog/AngularJS-requirejs/ While deliveringsoftware projects for startups, we’ve come to loveangularjs. We’ve also come to struggle with clean modularity, both th...

dechen6073的博客 124

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

如何组织大型JavaScript应用中的代码?

文章源自:http://www.youkuaiyun.com/article/2013-04-27/2815077-code-organization-angularjs-javascript 本文作者Cliff Meyers是一个前端工程师,熟悉HTML5、JavaScript、J2EE开发,他在开发过程中总结了自己在应对JavaScript应用越来越庞大情况下的文件结构,深得其他开发者认可。以下为C...

weistar103的专栏 113

AngularJs1.X 项目文件结构

我们使用很多时间写代码,在项目早期,代码不是很多,因此目录结构很容易被人忽视。

u010381707的专栏 2682

angular简介和其特点介绍

以前开发(web或者移动端)前端主要使用jQuery+原生js,如果使用某些前端UI框架的话,它自己还可能提供一些API可以使用。而且目前很多UI框架都是基于jQuery的,所以说一下由jQuery跨到angularjs跨度较大,研究了一段时间的angularjs ,下面从整体上说说感受吧: 关于和jquery的比较 首先angular是一个mvc框架,它与jquery不同之处在于,前

fuckof的博客 785

angular js中的模块化

模块(module)及模块中注册对象 模块将丑陋的、全局定义的控制器模块化,目前代码如下: 1、var HelloCtrl = function($scope){        $scope.name = 'World'; } 模块化的代码如下: angular.module('hello',[])     .controller('Helloctrl',function($

zxh的专栏 928

AngularJS笔记---数据绑定

一.数据绑定 1.简单绑定 下面实现了一个简单的加法运算的绑定, A.ng-app:表示该div以内都在AngularJS的应用, 去掉ng-app="" 那么后面的绑定都将无效 B.ng-models : 用于数据绑定, 也就是两个input的里面输入的信息都会绑...

angwanli1764的博客 218
上一篇: 在BackGroundWorker中使用ArcGIS组件
下一篇: 如何在ASP.NET MVC中使用ajax
遛狗的代码
博客等级 码龄11年 10粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值