【开发指南】(六)Ionic3从目录结构理解开发

为新人添加此文。

ionic3一个完整项目,一般会有以下文件夹:

image.png

对比目前其它流行的js框架,个人觉得其分工明确、清晰好理解,我觉得就算一开始头脑一遍空白的新手,对他讲解过一次后都能有个大致印象。

首先,我们主要的工作目录是src目录,开发的90%以上的工作量都集中在这个目录上,在里面就是用angular2或以上的技术去书写html模版、样式和脚本(有面向对象开发经验的很容易上手),开发完成后通过ionic的命令行生成为原始的静态html页面,并存放在www目录(见上图所示),也就是说www在开发过程中是不需要理的,可以任意删除。

当我们想部署网页时,只需把www目录拷贝到网站服务器上即可;当我们想打包app时,命令行执行打包指令会生成一个调用浏览器插件的原生项目,同时把www目录拷贝到项目中,浏览器插件的入口网页指向www的index.html,从而在app中实现本地浏览网页的效果,其中页面和脚本等因为是本地的就不需要网上加载,在数据加载过程中就已经可以看到页面,等数据加载完成自动局部刷新页面即可,这就是ionic的运行机理,也是混合式应用的其中一种常见套路。

然而,如果只是本地网页这么简单的话,它和在线网页的没啥区别,只是速度会快些而已,但作为混合式应用,调用原生功能是最基本的要求。在一些需要原生的需求目的,或者基于性能要求的目的,ionic提供了很方便调用原生(利用Cordova)的使用接口,包含配置和扩展,那就是第一张图里其它目录的角色(黑色粗体为重要项):

hooks:cordova的命令钩子,用于编译和打包;
node_modules:js库——node管理的依赖包(通过命令npm install 包名或路径安装);
platforms:ios、android等可选平台生成的原生项目(通过命令ionic cordova platform add 平台名称后生成,本来支持wp的,但看最新命令显示貌似已经移除了,见如下):

StreamdeMacBook-Pro:appetite woodstream$ ionic cordova platform ls
> cordova platform ls
Installed platforms:
  ios 4.4.0
Available platforms:
  android ~6.2.2
  blackberry10 ~3.8.0 (deprecated)
  browser ~4.1.0
  osx ~4.0.1
  webos ~3.7.0

plugins:已安装的cordova插件(通过ionic cordova plugins ls查看,通过ionic cordova plugins add/remove 插件名或路径来添加/删除);
resources :android、ios等平台图标、启动屏资源,在此目录下的资源通过下述命令会把资源按分辨率生成到原生项目目录中,省却自己逐个调整分辨率及拷贝的繁琐工作:

ionic cordova resources

或只针对单个平台的:

 ionic cordova resources 平台名

命令可选参数为:

--force, -f 强制重建资源;
--icon, -i 创建图标资源;
--splash, -s 创建启动屏;

src:开发工作目录;
www:编译后生成的静态网页文件,可直接拿去网上部署发布;


config.xml: 原生项目配置文件。
package.json: node安装模块时的依据文件,在里面配置的内容,在执行npm install命令后会生成到node_modules目录。


tsconfig.json: TypeScript项目的根目录,指定用来编译这个项目的根文件和编译选项。
tslint.json:格式化和校验typescript。

那怎么理解这些文件呢?因为要和原生打交道,假如有android、ios两个平台,修改点原生内容就要去两份原生代码里面去改好?还是把它们抽出来作为配置项,直接改配置项,就自动覆盖到原生代码中去好?那自然是后者好点,所以基于配置的概念在ionic中无处不在,而上述的所有目录及文件,我们几乎只需动config.xml、package.json、src

上述说的是ionic3的开发结构及其理解,现在要说的是最重要的文件夹src——angular2及以上的开发结构理解,主要为八项:

app:入口文件夹;

app
 -app.component.ts:入口页的业务逻辑;
 -app.html:入口页的html模板;
 -app.module.ts:入口模块配置;
 -app.scss:入口页的样式(全局样式);
 -main.ts:启动模块入口;

assets:样式、图片、字体、脚本等静态文件;
pages :开发页面,含html、ts、css;
theme :主题文件夹,里面可以放置多个主题文件,方便切换主题;


components:自定义组件(公用、可复用模块);
directives:自定义指令(注入到组件上为组件添加功能);
pipes:自定义管道(用于格式化显示数据);
providers:自定义服务(工具类、业务处理类等等);

可以看到,每个目录有其职责,其中它们都是可选的,基础项目为了方便你开始开发,除了components、directives、pipes、providers外都默认会为你创建,而这4个没创建是因为有些人就不需要用到,让你自己按需选择自行创建。另外它们的名字也是可变的,只是基于约定大于配置的概念,而且利用ionic-cli命令行生成文件,如ionic g pipe date会生成到上述默认文件夹名称中,所以建议保持一致。

而压缩打包混淆等都是ionic框架内部处理了,所以我们只需专注于页面的实现,那最最简单的开发步骤就是,在pages里面新建一个页面,写好逻辑,然后在app.module.ts添加配置即可。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,567评论 25 707
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,100评论 18 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,358评论 6 343