作为一个后台开发人员,几年前参与过Ionic1开发过一微信公众号的经历,所以这次开发企业微信应用,就使用了ionic,正好ionic4 rc版本发布,虽然不是正式版,作为本项目的项目经理,还是决定使用ionic4开发,因为项目组员也是我。简单记录一下本次开发的过程,很多命令不经常输入,就忘记了。

0.环境要求

nodejs(好像是10以上对于ionic4)

很多资料说最好装cnpm,我使用感觉好像cnpm问题比npm多一点,而且现在网络情况不像以前那么恶劣了

具有管理员权限的命令行(类linux使用sudo)运行

npm install ionic -g

1.创建项目

目前ionic4还没正式发布,创建ionic4项目,需要使用

ionic start myApp tabs --type=angular

tabs代表模板类型,这可以直接ionic start --type=angular 向导方式创建

2.开发工具

官方好像推荐的是vs code,好像说了很多好像,主要是现在总结的时候已经不太记得当时的过程了,当时搜了很多资料,都是扫过一眼

vs code是用Electron应用,btw,ionic4也支持编译成Electron应用运行。

一些常用插件,如:Ionic 4 Snippets、path intellinesne

其他工具,如:Sublime Text3,这个也不错,ionic1开发的时候用的这个,很快

3.简单开发

默认tabs模板创建的三个tab页叫tab1,tab2,tab3显然不适合开发,新建三个页面,放到pages文件加下,使用命令:

ionic g

可以选择新建类型,页面,服务,模块,组件等,我创建了三个页面,名字中支持直接输入路径,三个页面:home,todo,done

删除原来三个tab123页面,修改路由:tabs.router.module.ts,我从来没学过angular,所以也不懂具体含义,照着修改了一下,可以正常使用。

然后开发了一个列表页面,从后台获取数据,创建一个service,记得新建命令吗 ionic g,负责http从服务器获取数据,参考https://github.com/nuonuoge/ionic4_angular6_elm简单实现

页面照搬官方组件教程,这个就是用ionic的好处,基本组件都有了,实现搜索,下拉刷新,上拉加载更多,地址:https://beta.ionicframework.com/docs/components

<ion-toolbar>

<ion-searchbar placeholder="请输入流程名称" [(ngModel)]="qryStr"></ion-searchbar>

<ion-button slot="end" expand="full" size="default" (click)="doRefresh($event)">搜索</ion-button>

</ion-toolbar>

<ion-content>

<ion-refresher slot="fixed" (ionRefresh)="doRefresh($event)">

<ion-refresher-content></ion-refresher-content>

</ion-refresher>

<ion-item *ngFor="let wi of workitems" (click)="selectItem(wi.workItemID,wi.workItemName)">

<ion-card-content>

<p>{{wi.processChName}}</p>

</ion-card-content>

<ion-card-content>

<p>{{wi.workItemName}}</p>

</ion-card-content>

<ion-card-content>

<p>{{wi.bizObject.name}}</p>

</ion-card-content>

</ion-item>

<ion-item *ngIf="touchEnd">

<ion-card-content>

<p>---我是有底线的---</p>

</ion-card-content>

</ion-item>

<ion-infinite-scroll #myinfinite (ionInfinite)="loadData($event)">

<ion-infinite-scroll-content

loadingSpinner="bubbles"

loadingText="加载更多...">

</ion-infinite-scroll-content>

</ion-infinite-scroll>

</ion-content>

中间发现一个viewchild装饰器用type取值有问题的bug,git上报了,rc2已经解决了

4.运行调试

ionic serve

调试没啥说的,后面参数也没研究过,可以指定host之类的。

我使用chrome调试的,跨域问题,需要安装一个插件:Allow-Control-Allow-Origin

还有一个方式,ionic配置代理,没搞,我后面会跟后台服务部署在一起,所以不需要。还被人鄙视都流行前后分离了,我还传统jsp

5.发布部署

发布这个着实费了一些劲,网上资料很多,但是说的都很简单,可能着本身就是很简单,我却卡住了

直接使用ionic build --prod生成www文件夹,我理解应该是拷贝里面内容到nginx类似静态网站服务器即可

我是直接拷贝www文件夹到tomcat的webapps目录,后面就杯具了,出不来啊,记得前面扫大批ionic资料的时候看过一眼base url啥的,最后修改了index.html里面的<base href="/" />为<base href="/www/" />,页面里的图片路径有不对了,这个参考网上写成相对路径即可,即去掉前面的/

但是这样,调试ionic serve又不行了,每次发布都要改,这肯定不行啊,然后网上找资料,因为angular,webpack,啥的都不懂啊,根本没法自己搞,只能抄

见到有人说这样:

ionic cordova platform add browser

ionic cordova build browser

好像ionic4已经不需要了,而且这样编译出来的还是要修改base url。但是又意外收获,用这个编译的可以有启动界面,像app一样,不过网上这个资料好少,连官网都没找到

有说加--engine browser --base-href /www/这两个参数的,这两个应该是angular的

又说把<base href="/" />改为<base href="." />

最后找到了我觉得的靠谱的,在https://github.com/ionic-team/ionic-cli/issues/3600,使用下面命令。建议进去看看,精彩在评论里

ionic build --prod -- --base-href /www/

 

还有一个待解决的问题就是调试的时候可以/www/tabs/todo,路由到todo的tab页,发布后报错,这个说配置路由解决,还没研究,准备有时间学学angular的路由,在解决这个问题

posted @ 2019-01-23 11:58 傻样精英 阅读(1143) 评论(0) 推荐(0)
摘要: 网上买了个山寨jLink V9.3 plus,号称不掉固件的,不过固件最终还是掉了,现象是:插上去红灯亮,发现jLink但是驱动无法安装。估计是固件丢失了,放G搜了一圈发现修复固件都是V8的,但是倒找到了V9的原理图和V9的固件,虽然是不带BootLoader的,不能升级的,先通通下了研究一番。... 阅读全文
posted @ 2015-05-04 15:52 傻样精英 阅读(26667) 评论(5) 推荐(1)
摘要: 写在之前:今天升级了有道笔记3.5,发现有道笔记支持发邮件保存笔记了,所以就分享一下怎么通过IFTTT保存到有道笔记。因为IFTTT是外国货,所以一直没有有道笔记的频道,不过有了发邮件保存笔记的功能,终于能用上IFTTT了。 主要实现的功能:Feedly里的文章加星(也叫save for later)后自动保存文章到有道笔记。 阅读全文
posted @ 2013-12-03 16:58 傻样精英 阅读(988) 评论(0) 推荐(0)
摘要: 为ZTE U970加上TTS输出设置 shanshengsheng@gmail.com (欢迎g+,gtalk) 由于种种不可以表述的原因,国行的手机基本都是阉割了TTS输出设置,可能这个设置没多少人在意,所以网上对这个功能也没多少人关注,发了很多帖子无解后决定自力更生,呵呵。 这个设置有什么用呢?具体对我来说,我是一个铁杆谷粉,邮件要用Gmail,聊天要用Gtalk,那导航当然要Google Maps了。这里就要用到TTS设置了,不然导航的时候没有语音导航。其他比如阅读器的读书功能,很多也... 阅读全文
posted @ 2012-08-02 18:12 傻样精英 阅读(4428) 评论(8) 推荐(2)
摘要: 有一个标准表t1,字段 f1,f2如:100 3 200 9 300 28下面有个列表,t2,只有一个字段f1,如: 110 180 230取标准最低值,最终想要的结果为 110 3 180 3 230 9想了半天,搞了个sql:select cz.f1,bz.f2 from (select t2.f1,min(t2.f1-t1.f1) as c from t2 ,t1 where t2.f1>t1.f1 group by t2.f1) cz left join t1 bz on (cz.f1-cz.c)=bz.f1目前从测试数据看是对的,不知道是不是真的... 阅读全文
posted @ 2012-03-01 20:04 傻样精英 阅读(1851) 评论(0) 推荐(0)
摘要: 背完这444句英语,你的英语口语不成问题了。好好做好带路裆。1. I see. 我明白了2. I quit! 我不干了!3. Let go! 放手!4. Me too. 我也是。5. My god! 天哪!6. No way! 不行!7. Come on. 来吧(赶快)8. Hold on. 等一等。9. I agree。 我同意。10. Not bad. 还不错。11. Not yet. 还没。12. See you. 再见。13. Shut up! 闭嘴!14. So long. 再见。15. Why not? 好呀! (为什么不呢?)16. Allow me. 让我来。17. Be qu 阅读全文
posted @ 2011-12-01 19:56 傻样精英 阅读(681) 评论(0) 推荐(0)
摘要: 背景 同事写的一个程序每天定时将一个二进制文件分析,转存为数据库。目前这个程序不便之处是服务器重启后必须要登录系统,打开这个程序才可以。还有业务出现了一些变化,需要修改程序,加之前也没写过windows服务程序,所以趁周末学习一下。过程 肯定是先上博客园搜索一下,找了个blog看看,熟悉一下。 打开vs2008,新建一个windows服务项目,开始把代码搬过来。修改默认生成的Service1.cs文件名使之符合公司规范,并相应修改Program里的类名在下面两个方法中初始化,记录一下事件protectedoverridevoidOnStart(string[]args){}protectedo 阅读全文
posted @ 2011-09-02 20:31 傻样精英 阅读(1742) 评论(0) 推荐(0)
摘要: 装错驱动进不了系统: 进win删除错误的kext(安装了macdrive才能读写mac分区的数据),删除/System/Library/Caches/下的所有文件,重启,-s进入单用户模式 mount uw / chown -R root:wheel /System/Library/Extensions chmod -R 755 /System/Library/Extensions输入-v -f -x32rm -R SleepEnabler.kextsudo chown -R root:wheel /System/Library/Extensionssudo chmod -R 755 阅读全文
posted @ 2010-12-08 23:54 傻样精英 阅读(1053) 评论(0) 推荐(0)
摘要: 今天看到一个新闻《惠普Slate与iPad七大差异:Slate实用性差》中的一个解释:WIMP(即Windows、IIS、MySQL和PHP的首字母缩写),我震精了。我不知道这四个东西在一起是不是这么一个缩写,起码在这个文章中的上下文中不是这四个东西的组合吧。 如果你在google里搜索:WIMP(即Windows、IIS、MySQL和PHP的首字母缩写),会发现很多网站都转载了这个新闻,而且出处... 阅读全文
posted @ 2010-10-27 13:58 傻样精英 阅读(2265) 评论(11) 推荐(0)
摘要: 编写HelloWorld 上文环境搞好后打开xcode,显示xcode的欢迎界面,如下: 点击Create a new Xcode project,选择iPhone OS-Application-View based Application,创建一个最简单的iPad空白程序HelloiPad。点击Build and Run后iPad模拟器自动启动。 Xocde的文件如下 找到HelloiPad... 阅读全文
posted @ 2010-08-27 15:22 傻样精英 阅读(13892) 评论(7) 推荐(4)
点击右上角即可分享
微信分享提示