怎么把AngularJS开发的页面迁移到微信小程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么把AngularJS开发的页面迁移到微信小程序相关的知识,希望对你有一定的参考价值。

把AngularJS开发的页面迁移到微信小程序
目录迁移
1、每个子模块页面换成Pages目录下的一个子目录,目录命名就是原子模块名。
2、原来的通用css、image、fonts等静态资源统一移到resource目录下,需要使用时,对于css样式文件,在对应子模块的wxss文件首部通过import命令引入;
替换规则
1、div需统一转换成View;
2、ng-show统一转换为wx:if;
3、ng-click统一转换为bindtap;
4、ng-repeat统一用wx:for替换;
5、ng-class中的样式选择性绑定可以直接把条件绑定语句嵌入class属性;
js代码
模块级代码迁移: 可将模块级作用域使用的通用逻辑搬到app.js中,通过app对象来引用;或者定义一个util模块,来做动态引入; 对于原生与h5交互时用到的自定义事件,需要根据具体场景做处理。
子模块级代码迁移:
可将Angular子模块代码直接迁移到小程序对应Page对象中,当然,对于Angular特定语法的$***对象(例如$scope、$rootscope)的操作,需要做全局替换,替换原则是:
1、$scope:与Page对象同生命周期内的$scope,可以直接替换成this;而对于非同一生命周期的(最常见的即是各种callback回调函数),需要将Page对象在方法外做引用保存(例如var self=this),然后在回调函数中使用。
2、$rootScope:推荐放入app对象中引用,或者自定义通用模块,然后动态引入;
3、数据模型:各页面中建立的数据模型,直接放入***.json文件中,如果涉及Angular特定语法的操作,可参考上述两点的做法进行替换;
4、jsonp请求:将jsonp请求统一替换成wx.request请求,只是原来的链式写法要换成参数型写法;
5、子模块间的页面跳转,$state.go统一替换成wx.navigateTo或wx.navigateBack;
参考技术A 有网友问我同样的问题,已经在“微信小程序之家”发了一篇帖子《AngularJS迁移小程序》。现在我把文章内容也贴下来! 作者:pizCat 转载请私信告知

一、AngularJS与小程序架构比较

1、都是基于单页应用设计思想来做的整体框架设计;小程序更极端,整个应用就是一个大模块,里面所有页面都是子模块页面;

2、都将每个页面分为页面结构(.wxml)、业务逻辑(.js)、样式(.wxss)、数据结构(.json)四部分,在小程序里面更加直接,四部分的文件名字都必须严格相同,只是文件扩展名不同。



3、都有模块内路由策略的配置,小程序配置策略更简单,统一在app.json设置,基于上面的点2路由策略就是配置子模块路径,且默认第一条记录就是首页;



4、都是基于双向绑定设计思想来实现数据模型与页面渲染的同步,不过小程序的动态绑定没有AngularJS强大,数据变化时,需要手动通过setData方法来更新页面,而AngularJS是自动刷新页面的(大部分情况下)。

5、均有自己独立的数据操作作用域,也因此均对第三方js开源类库的支持性不太友好,这一方面AngularJS稍好一点,只要将第三方类库对象挂载到全局Window对象上,在各模块作用域内依然可以使用,但小程序不行,这一点比较致命,如果不改变,小程序必定也活不长久。

6、均支持模块或功能组件的引用,也即依赖动态注入;

7、对于异步请求,AngularJS采用基于点号(.)的链式写法,小程序采用方法入参型写法;

小程序不足方面:
1、不支持基于控件id的Dom元素查询;
2、不支持js第三方通用类库集成;(这一点比较致命)
3、绝对依赖微信原生能力,无法自主集成第三方原生类库能力,例如语音识别、面部识别、图形识别等前沿技术;

二、 迁移细节

2.1 目录迁移

1、每个子模块页面换成Pages目录下本回答被提问者采纳

以上是关于怎么把AngularJS开发的页面迁移到微信小程序的主要内容,如果未能解决你的问题,请参考以下文章

h5如何跳转到微信公众号页面?

h5页面点击按钮如何跳转到微信公众号,没关注则关注

h5页面微博里面打开 怎样做分享到微信的功能

微信小程序可以下载

程序怎么共享到微信群 微信小程序共享到

木疙瘩导出的H5嵌入到微信小程序