angularjs学习笔记之完整的项目结构


Posted in Javascript onSeptember 26, 2015

今天的主要讲解部分有以下几点:1.演示一个完整的项目结构 2.$scope的含义 3.模块化和依赖注入。

一.演示一个完整的项目结构。

下面的所有这些代码,都是转载于@大漠穷秋 老师的。我转载来之后放到了github上,大家可以去这个链接看源代码。一边看,一边学习,效果最好了~~~~

下面我们来看这个截图,

angularjs学习笔记之完整的项目结构

这就是一个完整的angularjs项目应该有的目录结构。下面我来讲解每一个文件夹对应的分别是什么含义。

1.css:不用说了,就是放一些css的样式文件。

2.framework:这里一般放一些除了angularjs之外的第三方需要的前端框架(ui),比如bootstrap、ueditor等等。

3.imgs:也不用说,放图片文件。

4.index.html:主要文件,当然,如果项目文件比较多,也可以单独建个文件夹放页面。

5.js:不用多说,放自己新建的js文件。

6.tpls:全称是templates,意思是模版。里面放的是部分html代码。与angualrjs的directive命令中的templateUrl属性合用。

下面我们主要看一下tpls的使用方法:这里的tpls文件夹下有一个test.html文件,代码如下:

<ul>
  <li>
    第一行test
  </li>
  <li>
    第二行test
  </li><li>
    第三行test
  </li>
</ul>

我们上面也说,这里的文件只是html的一部分,比如这里只是一个ul的部分代码。那有些人就奇怪了,这样写有什么用呢,我该怎么使用呢?不急,下面我来告诉大家怎么使用:

其实我们上节课提到过了,不知道的人点击这里,你可以看到第三点,我提到的directive方法。它的意思呢就是定义一个html标签,然后返回的html内容就是就是这里的ul部分啦。

下面来看具体使用代码:

var appModule = angular.module('app', []); //app是html中ng-app指令的名称

 appModule.directive('hello', function() { //定义一个指令,名称叫hello
   return {
     restrict: 'E',
     //template: '<div>Hi there</div>',
     templateUrl:'/tpls/test.html',
     replace: true
   };
 });

对上面代码的解释:就是定义了一个hello标签,使用此标签的时候,返回的是test.html的内容(使用template和templateUrl都行)。

为什么我们要把上面的ul内容放到单独的文件夹呢?现在想明白了吗??就是为了当返回的内容很多时,直接使用链接对应就好了,让代码看起来很清晰。

二.看一些$scope。

我们来看下面这个图片,深入讲解一些scope和它的特性:

angularjs学习笔记之完整的项目结构

我们来看一下上面的代码:先是定义了一个控制器叫做HelloCtrl,里面给$scope添加了一个属性greeting,greeting属性是一个对象,添加了text属性,值为‘Hello',就这么简单。然后在页面中就可以直接调用greeting.text,就能够得到‘Hello'的值了。是不是很神奇呢?那$scope到底是个什么东西呢?为什么能够实现这些功能呢?下面这些都是它的特性,看了之后一定要对它有一定的理解。

1.$scope是一个作用域,也可以理解为一个对象。

2.$scope提供了一些工具和方法,比如$watch()和$apply()等等。

3.$scope也是一个执行环境(作用域)。

4.子$scope可以继承父$scope的属性和方法。

5.每一个Angular应用只有一个跟$scope($rootscope,位于ng-app中)。

3.模块化和依赖注入

来看下面这段定义控制器的代码:

var myApp = angular.module('angularApp', []);

myApp.controller('HelloCtrl', ['$scope',function($scope) {
    $scope.greeting = {
      text: 'Hello'
    };
  }
]);
myApp.controller('ByeCtrl', ['$scope',function($scope) {
    //.....
  }
]);

还记得最开始讲解的定义控制器吗?直接使用funciton name(){}的方法。 慢慢的我们发现,如果控制器太多,这样就不好管理了,为了实现angualrjs的模块化,我们需要换成上面的写法,然后我给大家解释一下这段代码的含义。

第1行: 先获取整个页面的modula名称‘myApp',,,angularApp是html中ng-app的值

第3行: 定义一个控制器,名称为‘HelloCtrl';

第9行同上。

这样,我们就不知不觉的实现了模块化!!!

这里我们只调用了controller方法,还有第一节提到的directive、filter等等方法,都应该在myApp上调用,以实现响应的功能。然后使用多个模块完成一个项目,我们就实现了依赖注入!!

OK,以上就是对这3个主要模块的使用说明了。希望对大家的学习有帮助啦。。。如果对于上面的笔记有不懂的地方,尽管问我,我肯定会给大家解答的。祝大家生活愉快!

Javascript 相关文章推荐
JS版网站风格切换实例代码
Oct 06 Javascript
Javascript Request获取请求参数如何实现
Nov 28 Javascript
什么是json和jsonp,jQuery json实例详详细说明
Dec 11 Javascript
引入JS文件IE6报语法错误或缺少对象问题的解决方法
Jan 09 Javascript
Angular2中Bootstrap界面库ng-bootstrap详解
Oct 18 Javascript
使用Angular缓存父页面数据的方法
Jan 03 Javascript
angularJs select绑定的model取不到值的解决方法
Oct 08 Javascript
纯 JS 实现放大缩小拖拽功能(完整代码)
Nov 25 Javascript
react实现移动端下拉菜单的示例代码
Jan 16 Javascript
功能完善的小程序日历组件的实现
Mar 31 Javascript
JS制作简易计算器的实例代码
Jul 04 Javascript
JS this关键字在ajax中使用出现问题解决方案
Jul 17 Javascript
jQuery实现的登录浮动框效果代码
Sep 26 #Javascript
angularjs学习笔记之三大模块(modal,controller,view)
Sep 26 #Javascript
JS实现可拖曳、可关闭的弹窗效果
Sep 26 #Javascript
JS实现网页Div层Clone拖拽效果
Sep 26 #Javascript
jQuery超简单选项卡完整实例
Sep 26 #Javascript
angularjs学习笔记之简单介绍
Sep 26 #Javascript
JavaScript判断手机号运营商是移动、联通、电信还是其他(代码简单)
Sep 25 #Javascript
You might like
PHP n个不重复的随机数生成代码
2009/06/23 PHP
批量获取memcache值并按key的顺序返回的实现代码
2011/06/14 PHP
下拉列表多级联动dropDownList示例代码
2013/06/27 PHP
php实现的css文件背景图片下载器代码
2014/11/11 PHP
php计算数组相同值出现次数的代码(array_count_values)
2015/01/20 PHP
微信网页授权(OAuth2.0) PHP 源码简单实现
2016/08/29 PHP
PHP实现的最大正向匹配算法示例
2017/12/19 PHP
js网页中的(运行代码)功能实现思路
2013/02/04 Javascript
在javaScript中关于submit和button的区别介绍
2013/10/20 Javascript
JS复制内容到剪切板的实例代码(兼容IE与火狐)
2013/11/19 Javascript
javascript动态创建链接的方法
2015/05/13 Javascript
PageSwitch插件实现100种不同图片切换效果
2015/07/28 Javascript
jquery实现可点击伸缩与展开的菜单效果代码
2015/08/31 Javascript
详解JavaScript的流程控制语句
2015/11/30 Javascript
JS实现队列与堆栈的方法
2016/04/21 Javascript
在vue-cli脚手架中配置一个vue-router前端路由
2017/07/03 Javascript
react 组件传值的三种方法
2019/06/03 Javascript
详解Vue中的基本语法和常用指令
2019/07/23 Javascript
Vue-CLI项目中路由传参的方式详解
2019/09/01 Javascript
layui中select,radio设置不生效的解决方法
2019/09/05 Javascript
nodejs对mongodb数据库的增加修删该查实例代码
2020/01/05 NodeJs
基于react项目打包css引用路径错误解决方案
2020/10/28 Javascript
[01:24:34]2014 DOTA2华西杯精英邀请赛5 24 DK VS LGD
2014/05/25 DOTA
apache部署python程序出现503错误的解决方法
2017/07/24 Python
python opencv 读取本地视频文件 修改ffmpeg的方法
2019/01/26 Python
详解pyinstaller selenium python3 chrome打包问题
2019/10/18 Python
使用Python将图片转正方形的两种方法实例代码详解
2020/04/29 Python
python批量提取图片信息并保存的实现
2021/02/05 Python
serialVersionUID具有什么样的特征
2014/02/20 面试题
《鸟的天堂》教学反思
2014/02/27 职场文书
学习优秀党员杨宗兴先进事迹材料思想汇报
2014/09/14 职场文书
2016年“我们的节日·端午节”活动总结
2016/04/01 职场文书
2016年小学推普宣传周活动总结
2016/04/06 职场文书
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
2021/04/06 Python
详解CSS中的特指度和层叠问题
2021/07/15 HTML / CSS
Nginx静态压缩和代码压缩提高访问速度详解
2022/05/30 Servers