Angular JS与小程序架构在整体架构设计上的异同比较:1。整体架构设计基于单页应用程序设计的思想;小程序更极端,整个应用是一个大模块,其中所有页面都是子模块页面;2.每页分为四个部分:页面结构(。wxml),业务逻辑(。js),样式(。wxss)和数据结构(。json),这在小程序中更直接。四个部分的文件名必须严格相同,但文件扩展名不同。
3.都有模块中路由策略的配置,小程序配置策略在app.json中更简单统一基于以上第2点,路由策略是配置子模块路径,第一条记录默认为首页;
4.它们都是基于双向绑定的设计思想,实现数据模型和页面渲染的同步。但是applet的动态绑定没有AngularJS那么强大。当数据发生变化时,需要通过setData方法手动更新页面,AngularJS会自动刷新页面(大多数情况下)。5.它们都有自己独立的数据操作范围,所以对第三方js开源类库的支持不是很友好。AngularJS在这方面稍微好一点。只要把第三方类库对象挂载到全局Window对象上,在各个模块的范围内还是可以使用的,但是小程序不行,这是致命的。如果不改变,小程序肯定活不了多久。6.两者都支持模块或功能组件的引用,即依赖于动态注入;7.对于异步请求,AngularJS使用基于点(.)的链写。),小程序使用方法参数编写;
小程序的缺点:1。不支持基于控件id的Dom元素查询;2.不支持js第三方通用类库集成;(这是致命的)3。绝对依赖微信的原生能力,不可能独立集成第三方原生类库的能力,比如语音识别、人脸识别、模式识别等前沿技术;2迁移详细信息2.1目录迁移1。每个子模块页面由Pages目录下的子目录替换,目录名为原子模块名。2.原来常见的静态资源如css、图片、字体等。统一移动到资源目录。需要时,通过import命令在相应子模块的wxss文件头中引入css样式文件;
2.2 html2.2.1替换规则1。div需要转换为视图;以统一的方式;2.ng-show统一为wx:if;3.ng-click统一到bindtap中;4.ng-repeat由wx:for替换;5.ng-class中的样式选择性绑定可以直接将条件绑定语句嵌入到类属性中;
2.3 js代码模块级代码迁移:模块级范围内使用的通用逻辑可以移动到app.js,被app对象引用;或者定义一个util模块进行动态导入;在与h5的本机交互中使用的用户定义事件需要根据特定场景进行处理。
子模块级代码迁移:Angular子模块的代码可以直接迁移到小程序对应的Page对象。当然,带有Angular特定语法的$ * * *对象(如$scope和$rootscope)的操作需要全局替换。更换原则如下:1。与Page对象处于同一生命周期的$scope 3360可以直接被这个替换;对于那些具有不同生命周期的对象(最常见的是各种回调函数),需要将Page对象保存为方法外部的引用(例如,var self=this),然后在回调函数中使用它。2.$rootScope:建议在app对象中引用,或者自定义通用模块后动态引入;3.数据模型:每个页面建立的数据模型直接放入***。json文件。如果涉及到Angular特定语法的操作,可以参考以上两种做法进行替换;4.jsonp request:将jsonp request统一替换为wx.request request,只是将原来的链写改为参数写;5.子模块之间的页面跳转,$state.go统一替换为wx.navigateTo或wx.navigateBack;2.4 css样式大部分css样式都可以直接复制到wxs中,直接引用。但是需要注意的是,目前有些css3高级样式是小程序不支持的,需要特别注意。目前发现css3动画的一些属性是wxss不支持的,比如在key key属性中的基于百分比的声明方式是wxss不支持的,wxss只支持从.写作;因此,建议将复杂动画替换为wx.createAnimation。