AngularJS 项目开发实战

目录

  1. 啰嗦一下
  2. 你问我答
  3. 目录结构
  4. 压缩
  5. 其他

啰嗦一下

最近在开发一个项目时,调研了一下AngularJS,发现这个框架功能很丰富,而且用起来也很方便,所以深入了解了一下,在此分享一下我的感悟。

AngularJS是一个MVVM框架,所谓MVVM框架,即:Model-View-ViewModel,通俗一点的解释是:当数据发生变化时,框架自动进行数据绑定,自动更新页面上的数据。

这一点可以说是非常“神奇”的功能,可以减少我们很多的工作量。把我们从复杂的DOM结构中解脱出来,用剩余的时间去干一点有用的事情。

试想一下,当你和女神谈天说地,聊得不亦乐乎的时候,你突然发现自己的操作DOM的代码有点问题,改来改去改了好久才把问题解决掉,再回头和女神聊天,发现女神的笑容依旧那么美丽,但确是和隔壁使用AngularJS框架的王哥,这是多么悲伤场景啊!也许就在你修改代码期间,一段美好的姻缘就随风消逝了。这不能说是你们没有缘分,而是你选错了框架啊!

说了很多AngularJS的好话,也要澄清一点,没有东西是完美的,AngularJS也有一些缺点,比如说,AngularJS自身框架的一些bug,不适合界面频繁交互的场景(如:游戏类网站)等,好在现在的网站大部分都是CRUD型的应用,你可以放心用了。

下面我们就正式介绍一下AngularJS的相关知识点以及在项目中的应用,先进入到你问我答环节,看看群众们有哪些疑惑。

你问我答

问: AngularJS 适合构建什么类型的应用?
答: AngularJS 适合做单页面应用程序(SPA应用),但是需要注意的是,并不是一个项目只能有一个页面应用,例如:做管理系统时,你可能需要为三种不同的账户提供三种不同的页面入口,master、guest、friend,你可以创建三个页面入口,每个页面是一个应用,并提供相应的页面入口即可。

问: 我以前做前端时,都是使用JQuery开发的,他们有什么区别吗?
答: 有本质的区别,推荐你看一篇文章 jQuery开发者眼中的AngularJS

问: AngularJS不能做游戏网站,但是Jquery可以啊,这么说来AngularJS没JQuery好用啊?
答: 如果你要是做游戏网站的话,你确实需要使用偏底层的JQuery,但是却不能说哪个好不好用,场景不同,需求也就不同,使用的技术也不同。

问: 如果用了AngularJS,我之前使用的JQuery或JS插件是不是就不能用了啊?
答: 是的,他们不能同时使用,有一些JS插件通过修改可以在AngularJS中使用,如滑动插件iScroll,但是大多数插件都不行,如果你想实现一些效果,可以在网上找一找AngularJS的插件,很多插件都有相应的AngularJS实现,或者是兼容AngularJS的方法。

其他问题后期再收集整理,看一下项目规划的目录结构把!

目录结构

|-css
|-js
    |-controllers
        |-index
            |-a.controller.js
            |-b.controller.js
        |--demo
    |-directives
    |-filters
    |-services
    |-main.config.js
    |-main.route.js
|-templates
|-libs

目录结构大概就是这样的,过滤器放在filters中,指令放在directives中,服务放在services中,main.config.js创建本服务的module和监控路由变化的事件等,

angular.module('moduleApp', ["ngRoute", "ngTouch", "ngAnimate"]);

main.route.js中配置路由信息,如:

 function Route($routeProvider) {
    $routeProvider.when('/demo', {
        templateUrl: 'a.html'
    }).otherwise({
        redirectTo: '/index'
    });
}

控制器放在controllers中,在controllers中需要分成具体的功能,这样防止在一个controllers有很多个js文件。

压缩

当开发完项目时,你会发现,里面有好多个JS文件,每个文件的大小都不大,但是对于前端来说,会发起很多请求,影响性能,所以我们要对文件进行压缩,可以使用gulp压缩,具体的压缩方法可以自己在网上查找,有很多文档可以查找,压缩后最常出现的问题是找不到所对应的依赖,AngularJS是通过参数名称注入的,如果不手动添加依赖,压缩之后就找不到对应的以来名称,如果你按照我前一段时间发的规范Angularjs书写规范开发的话,压缩不会有什么问题。

手动添加依赖
angular
    .module('app')
    .controller('Dashboard', Dashboard);

Dashboard.$inject = ['$location', '$routeParams', 'common', 'dataservice'];

function Dashboard($location, $routeParams, common, dataservice) {
}

其他

一个项目中会遇到很多问题,只有自己一点点去尝试,过一段时间会把项目中遇到的问题及解决办法整理一下,供大家参考。

每个人都有自己擅长的做事方法,但是不能因为有一些我们不熟悉就不去接受它的思想

转载于:https://www.cnblogs.com/tgwang/p/4830093.html

<最新AngularJS开发宝典视频教程> ├最新AngularJS开发宝典—第001讲 什么是Angular及与Jquery实例对比分析.mp4 ├最新AngularJS开发宝典—第002讲 模块、控制器、视图模型、双向数据绑定模型、双向数据绑定.mp4 ├最新AngularJS开发宝典—第003讲 MVVM双向数据绑定图例分析(1).mp4 ├最新AngularJS开发宝典—第004讲 声明模块与控制器规范与依赖注入分析.mp4 ├最新AngularJS开发宝典—第005讲 $scope的基本使用方法.mp4 ├最新AngularJS开发宝典—第006讲 表达式与ng-bind及ng-cloak解决闪屏问题.mp4 ├最新AngularJS开发宝典—第007讲 ng-model在表单中双向绑定实例分析讲解.mp4 ├最新AngularJS开发宝典—第008讲 ng-value的使用实例讲解.mp4 ├最新AngularJS开发宝典—第009讲 实例讲解angular控制单选框.mp4 ├最新AngularJS开发宝典—第010讲 实例讲解angular操作checkbox复选框.mp4 ├最新AngularJS开发宝典—第011讲 实例讲解angular操作select列表框.mp4 ├最新AngularJS开发宝典—第012讲 函数使用方法大小写转换与对象深拷贝.mp4 ├最新AngularJS开发宝典—第013讲 函数使用对象扩充与数据遍历.mp4 ├最新AngularJS开发宝典—第014讲 json数据转换与本地存储及$scope数据序列化提交到后台.mp4 ├最新AngularJS开发宝典—第015讲 数据类型判断函数与数据比较方法的使用.mp4 ├最新AngularJS开发宝典—第016讲 ng-init与ng-trim及表单中表单value与$scope数据提交差异分析.mp4 ├最新AngularJS开发宝典—第017讲 使用ng-if、ng-show、ng-disabled、ng-init超简单实现网站注册协议设置.mp4 ├最新AngularJS开发宝典—第018讲 ng-repeat实例详细讲解与后盾人网站进行分析.mp4 ├最新AngularJS开发宝典—第019讲 g-selected、ng-disabled、ng-readonly实例讲解.mp4 ├最新AngularJS开发宝典—第020讲 超简单实现表单的全选与反选.mp4 ├最新AngularJS开发宝典—第021讲 ng-model-options设置数据同步时机提交网站性能.mp4 ├最新AngularJS开发宝典—第022讲 通过ng-class动态改变样式类实例操作.mp4 ├最新AngularJS开发宝典—第023讲 使用ng-style动态改变样式.mp4 ├最新AngularJS开发宝典—第024讲 事件处理指令讲解.mp4 ├最新AngularJS开发宝典—第025讲 AngularJS+flex弹性盒模型+bootStrap 开发微信菜单前端之手机界面预览.mp4 ├最新AngularJS开发宝典—第026讲 AngularJS+flex弹性盒模型+bootStrap 开发微信菜单前端之右侧编辑区域.mp4 ├最新AngularJS开发宝典—第027讲 AngularJS 弹性盒模型+bootStrap 开发微信菜单前端之根据微信SDK文档部署数据.mp4 ├最新AngularJS开发宝典—第028讲 弹性盒模型+bootStrap 开发微信菜单前端之根据菜单类型控制表单显示.mp4 ├最新AngularJS开发宝典—第029讲 弹性盒模型+bootStrap 开发微信菜单前端之添加菜单处理.mp4 ├最新AngularJS开发宝典—第030讲 弹性盒模型+bootStrap 开发微信菜单前端之使用fontawesome设置ui界面.mp4 ├最新AngularJS开发宝典—第031讲 弹性盒模型+bootStrap 开发微信菜单前端之underscore与lodash前端库介绍.mp4 ├最新AngularJS开发宝典—第032讲 弹性盒模型+bootStrap 开发微信菜单前端之使用underscore完成微信菜单删除操作.mp4 ├最新AngularJS开发宝典—第033讲 修复删除菜单时一级菜单选项不显示的问题.mp4 ├最新AngularJS开发宝典—第034讲 filter变量调节器分析与货币变量调节器处理.mp4 ├最新AngularJS开发宝典—第035讲 lowercase与uppercase过滤器使用.mp4 ├最新AngularJS开发宝典—第036讲 使用limitTo过滤器截取字符.mp4 ├最新AngularJS开发宝典—第037讲 使用date过滤器处理时间.mp4 ├最新AngularJS开发宝典—第038讲 orderBy数据排序与filter筛选过滤器.mp4 ├最新AngularJS开发宝典—第039讲 控制器中如何使用顾虑器服务.mp4 ├最新AngularJS开发宝典—第040讲 callee与过滤器结合制作表格升降排序实例.mp4 ├最新AngularJS开发宝典—第041讲 使用$scope处理升降序.mp4 ├最新AngularJS开发宝典—第042讲 $scope.$watch监听数据变化.mp4 ├最新AngularJS开发宝典—第043讲 使用$watch与$filter过滤器制作数据筛选实例.mp4 ├最新AngularJS开发宝典—第044讲 自定义过滤器之手机加星过滤器实例.mp4 ├最新AngularJS开发宝典—第045讲 SPA应用与自定义指令使用场景应用场景分析.mp4 ├最新AngularJS开发宝典—第046讲 自定义指令directive的restrict属性说明.mp4 ├最新AngularJS开发宝典—第047讲 自定义指令名称的标准规范.mp4 ├最新AngularJS开发宝典—第048讲 自定义指令template函数式操作实例讲解.mp4 ├最新AngularJS开发宝典—第049讲 自定义指令replace属性详解.mp4 ├最新AngularJS开发宝典—第050讲 自定义指令transclude与templateUrl属性详解.mp4 ├最新AngularJS开发宝典—第051讲 controller控制器scope父子集作用域实例讲解一 .mp4 ├最新AngularJS开发宝典—第052讲 controller控制器scope父子集作用域实例讲解二.mp4 ├最新AngularJS开发宝典—第053讲 指令scope作用域分析一.mp4 ├最新AngularJS开发宝典—第054讲 scope隔离作用域之@单向文本绑定.mp4 ├最新AngularJS开发宝典—第055讲 scope隔离作用域之=双向文本绑定.mp4 ├最新AngularJS开发宝典—第056讲 scope隔离作用域之=&调用父作用域中函数.mp4 ├最新AngularJS开发宝典—第057讲 指令directive的controller属性.mp4 ├最新AngularJS开发宝典—第058讲 指令directive的link属性详解.mp4 ├最新AngularJS开发宝典—第059讲 tab面板组件的指令实现.mp4 ├最新AngularJS开发宝典—第060讲 服务server应用分析与使用场景.mp4 ├最新AngularJS开发宝典—第061讲 使用$scope.$apply进行数据脏检查.mp4 ├最新AngularJS开发宝典—第062讲 $timeout与$interval实际使用场景分析与实例讲解.mp4 ├最新AngularJS开发宝典—第063讲 $window服务的实例讲解.mp4 ├最新AngularJS开发宝典—第064讲 $sce服务安全的处理html数据.mp4 ├最新AngularJS开发宝典—第065讲 $cacheFactory的缓存实例讲解.mp4 ├最新AngularJS开发宝典—第066讲 $http服务获取后台数据.mp4 ├最新AngularJS开发宝典—第067讲 $http服务请求缓存操作减少服务器压力加快页面展示.mp4 ├最新AngularJS开发宝典—第068讲 $http服务简写操作.mp4 ├最新AngularJS开发宝典—第069讲 $http服务之后台接收POST数据的几种方式.mp4 ├最新AngularJS开发宝典—第070讲 spa项目的server层分析与使用factory创建服务.mp4 ├最新AngularJS开发宝典—第071讲 多个控制器共享服务server数据的处理实例.mp4 ├最新AngularJS开发宝典—第072讲 使用service创建自定义服务.mp4 ├最新AngularJS开发宝典—第073讲 SPA应用的路由使用分析.mp4 ├最新AngularJS开发宝典—第074讲 uiRouter默认路由规则操作.mp4 ├最新AngularJS开发宝典—第075讲 uiRouter链接上实例路由跳转方式.mp4 ├最新AngularJS开发宝典—第076讲 uiRouter路由模板设置方式实例.mp4 ├最新AngularJS开发宝典—第077讲 uiRouter路由控制器使用方式详解.mp4 ├最新AngularJS开发宝典—第078讲 uiRouter路由控制器或指令中执行路由跳转.mp4 ├最新AngularJS开发宝典—第079讲 uiRouter路由参数设置与$stateParams服务的使用.mp4 ├最新AngularJS开发宝典—第080讲 uiRouter路由定义高效的父子级嵌套路由.mp4 ├最新AngularJS开发宝典—第081讲 uiRouter路由定义超灵活的嵌套路由视频.mp4 └最新AngularJS开发宝典—第082讲 uiRouter路由多个view下的父子级视频图嵌套使用.mp4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值