目录

  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) {
}

其他

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

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

AngularJS 项目开发实战的更多相关文章

  1. Swift项目开发实战-基于分层架构的多版本iPhone计算器-直播公开课

    Swift项目开发实战-基于分层架构的多版本iPhone计算器-直播公开课 本课程采用Q Q群直播方式进行直播,价值99元视频课程免费直播.完整的基于Swift项目实战,手把手教你做一个Swift版i ...

  2. AngularJS进阶(三十六)AngularJS项目开发技巧之利用Service&Promise&Resolve解决图片预加载问题(后记)

    AngularJS项目开发技巧之利用Service&Promise&Resolve解决图片预加载问题(后记) 前言 在"AngularJS项目开发技巧之图片预加载" ...

  3. AngularJS进阶(三十一)AngularJS项目开发技巧之获取模态对话框中的组件ID

    AngularJS项目开发技巧之获取模态对话框中的组件ID 需求 出于项目开发需求,需要实现的业务逻辑是:药店端点击查看"已发货""已收货"订单详情时,模块弹出 ...

  4. AngularJS进阶(三十)AngularJS项目开发技巧之图片预加载

    AngularJS项目开发技巧之图片预加载 绪 项目(移动端采用Ionic 框架)开发完毕,测试阶段发现移动APP首页的广告图片(图片由服务器端返回相应url地址)很难加载,主要原因还是网速.如下图左 ...

  5. AngularJS进阶(二十九)AngularJS项目开发技巧之localStorage存储

    AngularJS项目开发技巧之localStorage存储       注: localStorage深度学习 绪 项目开发完毕,测试阶段发现后台管理端二维码生成有问题,问题在于localStora ...

  6. iOS项目开发实战——学会使用TableView列表控件(四)plist读取与Section显示

    文本将会实现把数据存储到plist文件里.然后在程序中进行读取.在TableView控件中依据不同的类别显示Section. 有关TableView 的其它实现,请參考<iOS项目开发实战--学 ...

  7. 聚合数据 iOS 项目开发实战:条码查询器

    记录下,聚合数据 iOS 项目开发实战:条码查询器:视频地址:http://www.jikexueyuan.com/course/324.html 条码查询API:https://www.juhe.c ...

  8. 《微信小程序项目开发实战:用WePY、mpvue、Taro打造高效的小程序》(笔记1)WePY开发环境的安装

    WePY的安装或更新都通过npm进行,全局安装或更新WePY命令行工具,使用以下命令: npm install wepy-cli -g 稍等片刻,成功安装后,即可创建WePY项目. 注意:如果npm安 ...

  9. 微信小程序项目开发实战:用WePY、mpvue、Taro打造高效的小程序》(笔记4)支持React.js语法的Taro框架

    Taro本身实现的情况类似于mpvue,mpvue的未来展望中也包含了支付宝小程序,现在的版本中,也可以使用不同的构建命令来构建出百度小程序的支持,如第10章所示,但是现在Taro先于mpvue实现了 ...

随机推荐

  1. shell 中| 用法

    | 运算符 管道符号,是unix一个很强大的功能,符号为一条竖线:"|".用法: command 1 | command 2 他的功能是把第一个命令command 1执行的结果作为 ...

  2. disk或者Partition镜像的制作

    备份镜像还原一般都是在client-server端这边才有涉及,不过作为平时爱折腾的咸鱼,表示偶尔玩玩这种操作也不错: 工具:pc  X  1(装有 大白菜,装机吧,一类制作pe软件的即可,大同小异) ...

  3. while循环语句基础

    while循环语句基础 一while循环语句介绍 循环语句命令常用于重复执行一条指令或一组指令,直到条件不再满足时停止,   Shell脚本语言的循环语句常见的有while, until, for及s ...

  4. CDN技术之--流媒体CDN系统的组成

    流媒体业务是一种对实时性.连续性.时序性要求非常高的业务,无论从带宽消耗上还是质量保障上来说,对best-effort的IP网络都是一个不小的冲击 –高带宽要求–高QoS要求–组播.广播要求(目前IP ...

  5. 从输入 URL 到页面展示,到底发生了什么

    从输入 URL 到页面展示,到底发生了什么 1.输入URL 当我们开始在浏览器中输入网址的时候,浏览器其实就已经在智能的匹配可能得 url 了,他会从历史记录,书签等地方,找到已经输入的字符串可能对应 ...

  6. 【Tomcat】使用Tomcat部署Spring Boot项目生成的jar包

    介绍 简单来说,Tomcat是一个免费的,用于Java Web应用以及其它Web应用的一个Web服务器.(简单地概括一下,可能有误) 下载与安装 本文章目标是把Spring Boot Web项目生成的 ...

  7. 筆記本 wifi走外网线 網卡走內網

    筆記本 wifi走外网线  網卡走內網 ,案列 -------------------------------------------------------- route print        ...

  8. pythy标准库之Tkinter(hello world窗口显示)

    Tkinter :Tkinter,python内置的图形开发库GUI python3.x中: import tkinter #注意不要写成Tkinter, 一.用tkinter创建hello worl ...

  9. postgresql的规则系统

    " class="wiz-editor-body wiz-readonly" contenteditable="false"> Postgres ...

  10. python中的pow()函数解释

    转载自:https://blog.csdn.net/wuxiaobingandbob/article/details/47776209 Python中pow(),里面可以有两个或三个参数,它们的意义是 ...