重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
获取到当前设备缩放比,然后更改这个缩放比。Weex是使用流行的Web开发体验来开发高性能原生应用的框架。Weex框架能够完美兼顾性能与动态性,让移动开发者通过简捷的前端语法写出Native级别的性能体验,并支持iOS、安卓、YunOS及Web等多端部署。weex界面放大,获取到当前设备缩放比,然后更改这个缩放比就可以解决。
创新互联公司2013年成立,是专业互联网技术服务公司,拥有项目成都网站设计、成都网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元右江做网站,已为上家服务,为右江各地企业和个人服务,联系电话:028-86922220
项目初始化1、没有现成的工程的话新建ios项目命令行cd到项目根目录 执行 pod init,会创建一个pod配置文件用编辑器打开,加上 pod 'WeexSDK', :path='./sdk/'
/weex在ios目录下有个sdk文件夹,把它复制到ios项目根目录,和podFile里配置的路径一致关掉xcode,在当前目录,命令行执行pod install,现在项目目录变成了这样,以后点击xcworkspace文件打开项目创建一个新目录weex,命令行cd到weex目录,执行weex init,会提示你输入项目名称自动创建的文件:
在当前目录命令行执行npm install,安装依赖库创建一个文件夹js,命令行执行weex src -o js生成最终需要的js文件也可以weex src/main.we在浏览器预览或者weex src/main.we --qr 生成二维码,用playground App 扫描预览加载weex页面xcode打开workspace项目文件打开AppDelegate.m添加一下内容将之前创建的js文件夹拖到xcode工程的文件列表效果是这样的weex视图控制器的初始化ViewController.h:
[objc] view plain copy在CODE上查看代码片派生到我的代码片//// ViewController.h// weexDemo3//// Created by admin on 16/8/3.
// Copyright ? 2016年 admin. All rights reserved.
//#import UIKit/UIKit.h
@interface ViewController : UIViewController- (instancetype)initWithJs:(NSString *)filePath;@endViewController.m:
[objc] view plain copy在CODE上查看代码片派生到我的代码片//// ViewController.m// weexDemo3//// Created by admin on 16/8/3.
// Copyright ? 2016年 admin. All rights reserved.
//#import "ViewController.h"#import WeexSDK/WXSDKInstance.h
@interface ViewController ()@property (nonatomic, strong) WXSDKInstance *instance;@property (nonatomic, strong) UIView *weexView;@end@implementation ViewController{NSURL *jsUrl;}
- (instancetype)initWithJs:(NSString *)filePath{self = [super init];if (self) {//远程js文件// NSString *path=[NSString stringWithFormat:@"",filePath];//本地js文件NSString *path=[NSString stringWithFormat:@"",[NSBundle mainBundle].bundlePath,filePath];NSLog(@"-----path:%@",path);jsUrl=[NSURL URLWithString:path];}
return self;}
- (void)viewDidLoad {[super viewDidLoad];_instance = [[WXSDKInstance alloc] init];_instance.viewController = self;_instance.frame=self.view.frame;__weak typeof(self) weakSelf = self;_instance.onCreate = ^(UIView *view) {[weakSelf.weexView removeFromSuperview];weakSelf.weexView = view;[weakSelf.view addSubview:weakSelf.weexView];};_instance.onFailed = ^(NSError *error) {NSLog(@"加载错误");};_instance.renderFinish = ^ (UIView *view) {NSLog(@"加载完成");};if (!jsUrl) {return;}
[_instance renderWithURL: jsUrl];self.view.backgroundColor=[UIColor whiteColor];}
- (void)didReceiveMemoryWarning {[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated.
}
- (void)dealloc{[_instance destroyInstance];}
@end再打开AppDelegate成都软件开发公司创建导航控制器引入头文件#import "ViewController.h"创建导航视图:
[objc] view plain copy在CODE上查看代码片派生到我的代码片- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {//weex[self initWeex];ViewController *vc=[[ViewController alloc]initWithJs:@"main.js"];UINavigationController *nav=[[UINavigationController alloc]initWithRootViewController:vc];self.window.rootViewController=nav;return YES;}
运行图片不显示是因为图片加载需要自己创建模块,可以直接把demo的代码和pod配置粘过来使用
最近在做的一个项目,项目的前期采用Weex开发。但是随着交互复杂度的增加,Weex一处开发多处多处运行的特征并没有很好的体现,相反很多时候我们还是需要做IOS和Android的适配。如今火热的Flutter相比Weex和Rn来说,给出了更好的跨平台解决方案。所以我们设计了一套基于Weex实现,底层跑在Flutter Engine上的框架。
底层的Runtime采用isolate engine,框架业务逻辑,Dom的解析逻辑和Render逻辑都跑在这里。
渲染引擎采用Flutter的Skia,彻底剥离了Android和IOS的差异性.
将Weex VirsualDom的解析都替换成Flutter Widget.
设计基于Weex2Dart的Brider,使JS和Dart可以相互调用
weex-demo的性能展示
release环境下采用AOT模式,性能会有质的飞跃。
Android-Release版本只有10m大小
相比Weex和Rn具有更好的性能,同时具有更好的跨平台性
相比Flutter,具有动态部署的能力(Flutter Release采用AoT模式并没有动态部署的能力,即使Debug版本也只是开发环境下才有动态化能力并没有可以实施项目的能力)
只需要会Weex开发或则Rn开发就可以,不需要额外学习Dart,已有的Weex项目可以无缝切换。
说明:首先waterfall是weex的原生组件,WEEX的出现让我们可以使用Vue来进行移动端原生应用开发。这里就需要了解什么是weex?
Weex是一个可以使用现代化的 Web 技术开发高性能原生应用的框架",这是Weex官网对其的一句很简介明了的定义。Weex是一个可以利用web 前端开发技术来实现Android/ios 原生引用的框架,使用 Vue 作为上层框架,并遵循 W3C 标准实现了统一的 JSEngine 和 DOM API。
1、组件是提供瀑布流布局的核心组件。瀑布流,又称瀑布流式布局是比较流行的一种页面布局,视觉表现为参差不齐的多栏布局。随着页面滚动条向下滚动,这种布局还可以不断加载数据块并附加至当前尾部。
2、 waterfall 只支持 Android 和 iOS,不支持 Web。
3、注意:(个人经验总结)当waterfall组件里面出现图片image组件时,不允许对image自适应高度是因为weex的css样式布置auto属性。所以在当我们用uniapp开发时,uniapp的mode属性是不能使用的。且weex的image并没有mode属性而是resize属性。所以image的宽高就需要固定,如需保持宽度一致高度适应就需要计算了。