继上篇教程中提到的,我们新建一个简单的tabs类型的Ionic项目。

依据文件夹文件我们知道,系统自己主动创建了一个controller文件和server文件,而且把全部的控制器和服务都写到这两个文件中面。

这是一个简单的项目,业务逻辑代码也非常少。这样子实现并没有什么问题。可是当我们的项目越写越多。业务逻辑越来越复杂。假设我们还是把全部的控制器写到同一个文件中面。那可能我们将要面对的就是一个有着上万行代码的文件。

每次编辑仅仅能通过搜索keyword来定位了。

所以真正编辑项目的时候我们应该都是把单独的controller分离出来的。本次教程中使用的是requirejs。

首先我们应该先把单独的controller提取出来。保存到单独的文件里。第一步我们先把代码拷贝出来,并不做改动。

先无论报错,我们仅仅是先理解一下,文件分离的内容。

新建两个目录用于存放controller和server文件,便于管理。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

然后我们要做的就是将单独的controller文件和controllers文件关联起来。

首先我们先引用requirejs文件。下载requirejs文件放到项目目录中并在index.html中引用。

然后我们改动controllers/controllers.js文件。使他符合requireJs要求的规范。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

然后分别改动单独的controller文件。让他们也符合规范。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

通过上面的改动,应该不难发现,要把现有的项目完毕文件分离仅仅须要复制代码就能够了,并不须要改动业务逻辑。

接下来我们要做的就是把这些文件关联起来。

改动controllers文件:

这样子我们就完毕了controller文件的分离和关联,可是有些controller文件实用到服务。所以我们也要在controllers文件里关联服务文件。

在controllers文件里增加var services= require('services/services');

相同的做法,改动servers文件,将里面的服务独立出来。

改动后的文件文件夹和services文件例如以下。

这样子我们就实现了controller和server文件的分离。如今我们将项目中的其它文件也改动成requireJs的规范。并使用requireJs的方式来启动项目

改动app.js:(仅仅是多了一层封装返回app对象。里面的业务不做改动)

改动的地方都几乎相同了。接下来跟着我看一下怎样使用require的方法启动Ionic项目。

首先在index文件里引用requireJs的script标签中增加 data-main="js/main.js"属性,表示启动入口的文件地址。

<script data-main="js/main.js" src="js/require.js"> </script>
新建main.js,这里不做具体的配置。仅仅是定义了一个简单的程序入口

说明程序是从bootstrap文件启动的
新建bootstrap.js这里做了一些简单的推断,假设认为不好理解的话,能够直接启动项目
angular.bootstrap(document, [app.name]);


watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
改动index.html去除ng-app="starter"把<body ng-app="starter">改动成<body>
注意由于js文件是通过requestjs载入的,所以要把index中对js的引用去掉
<!-- your app's js -->
<!--<script src="js/app.js"></script>-->
<!--<script src="js/controllers/controllers.js"></script>-->
<!--<script src="js/services.js"></script>-->
执行项目,正常启动项目,从界面上看不出与新建项目的差别。
到此本次教程的内容就所有完毕了。
项目Demo地址:http://pan.baidu.com/s/1eSi7huE
假设你还有什么其它的问题,能够通过下面方式找到我
新浪微博:小虎Oni
微信公众号:ionic__

有其它问题的能够关注一下公众号提问(右側双下划线):ionic__



watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvb25pbF9jaGVu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">


ionic新手教程第三课-在项目中使用requirejs分离controller文件和server文件的更多相关文章

  1. ionic新手教程第八课-(加更)从无到有说Ionic、绘图说明MVC-U-S

    这节课的内容,有些前面几节已经说过了. 公司这次给我一个任务,让我带一个没有编程基础的同事学习ionic. 今天是我跟他讲的第一课,晚上把讲的笔记整理了一下,认为还是挺适合零基础的朋友学习的. 有些前 ...

  2. ionic新手教程第七课-简要说明几种界面之间的參数传递及优缺点

    截至2016年4月13日19点32分,我公布的ionic新手教程,已经公布6课了, 总訪问量将近6000,平均每节课能有1000的訪问量.当中訪客最多的是第三课有2700的訪客. watermark/ ...

  3. 开发新手教程【三】Arduino开发工具

    Arduino开发环境搭建 获取Arduino IDE开发工具 下载地址 :http://arduino.cc/en/Main/Software 能够下载release 版.Beta版和前期版本号 A ...

  4. C#项目中关于多个程序集下App.config文件的问题

    在项目中我们会经常用到App.config文件,有的是自动生成的,比如引用webservice.wcf服务时生成:也有手动建立的配置文件直接默认名就为app.config.这些配置有的保存当前程序集用 ...

  5. CodeIgniter框架入门教程——第三课 URL及ajax

    本文转载自:http://www.softeng.cn/?p=74 这节课讲一下CI框架的路由规则,以及如何在CI框架下实现ajax功能. 首先,先介绍CI框架的路由规则,因为CI框架是在PHP的基础 ...

  6. NeHe OpenGL教程 第三课:颜色渲染

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  7. Android OpenGL教程-第三课【转】

    第三课 给多边形上色: 作为第二课的扩展,我将叫你如何使用颜色.你将理解两种着色模式,在左图中,三角形用的是光滑着色,四边形用的是平面着色. 这次增加的代码不算多. 增加一个color的buffer ...

  8. 品味FastDFS~第三回 项目中的FastDFS

    回到目录 包括京东,淘宝在内的几个互联网老大,在实现分布式文件存储这块都使用了FastDFS,它是一个轻量级的东西,安装与使用都很方便,服务器间通过socket进行数据通讯,无论在安全和效率上都是可以 ...

  9. iOS基础教程:在建好的项目中加入CoreData[转]

    这几天在做一个ios的小项目,项目中需要对数据进行基本的增删改查操作.于是就想用一把CoreData.但在创建项目初期,没有包含进CoreData.于是就在已建好的项目中加入CoreData.由于第一 ...

随机推荐

  1. [D3] Drawing path in D3

    Here we have a force layout with three nodes. In the example, we will link three nodes with line and ...

  2. Tomcat源代码阅读#1:classloader初始化

    Bootstrap 通过Tomcat的启动脚本能够看到启动的入口是在Bootstrap,来看下Bootstrap的main方法, /** * Main method and entry point w ...

  3. shell学习四十天----awk的惊人表现

    awk的惊人表现 awk能够胜任差点儿全部的文本处理工作.     awk 调用 1.调用awk: 方式一:命令行方式 awk [-F field-separator ] 'commands' inp ...

  4. Android实践 -- 设置系统日期时间和时区

    设置系统日期时间和时区 设置系统的日期时间和时区,需要 系统权限和系统签名,android:sharedUserId="android.uid.system" 需要在manifes ...

  5. 【几何/数学】概念的理解 —— (非)刚体变换((non-)rigid transformation)

    1. 刚体变换与非刚体变换 What is a non-rigid transformation? 刚体变换(rigid transformation)一般分为如下几种: 平移对象,而不改变形状和大小 ...

  6. Java核心技术 卷Ⅰ 基础知识(4)

    第六章 接口与内部类 接口 特性 接口与抽象类 对象克隆 接口与回调 内部类 使用内部类访问对象状态 内部类的特殊语法规则 局部内部类 匿名内部类 静态内部类 代理 Class[] in=new Cl ...

  7. php课程 8-32 如何使用gd库进行图片裁剪和缩放

    php课程 8-32 如何使用gd库进行图片裁剪和缩放 一.总结 一句话总结:图片缩放到图片裁剪就是改变原图截取的位置以及截取的宽高. 1.电商网站那么多的图片,如果全部加载卡得慢的很,所以他们是怎么 ...

  8. wepy小程序实现列表分页上拉加载(1)

    使用wepy开发微信小程序商城第一篇:项目初始化 使用wepy开发微信小程序商城第二篇:路由配置和页面结构 列表页效果图: 1.新建列表页 (1)在pages里面新建一个list.wpy文件 初始代码 ...

  9. (转)Bash 快捷键 完整版

    转自:http://www.opsers.org/linux-home/base/full-version-of-bash-keyboard-shortcuts.html#toc-3 生活在 Bash ...

  10. 链表(三)——链表删除冗余结点&amp;插入结点到有序链表

    1.一个以递增方式排列的链表,去掉链表中的冗余值. 思路一:设有两个指针p和q.使p不动,q依次往后循环直到p->data不等于q->data,再将中间的冗余数据删除. 思路二:设有两个指 ...