Weex:アップグレードメモ
6644 ワード
現状ツールのバージョンは 業務ファイルは を実現した. を表しています.
ネットワークとリソース
この部分の今回の変更はやはり比較的に大きくて、 .増加 を統一的に実現する.公式サイトを通じて をダウンロードします を直接置き換える.
アクセスファイルの変更アクセスファイルは2つの場所を変更する必要があります.1つ目は です.
2つ目はネットワークのデフォルト実装です.もちろん、ネットワーク部分が自分で実現すれば、彼が提供しなくても、この部分は変更する必要はありません.
旧バージョンでの変更の移行
一部の私たちは不合理な点だと思って、古いバージョンで修正して、新しいバージョンが変わっていないことを発見しました.だから修正して移転します.削除デフォルトでタオバオリンクを開くのは適切ではありません.ファイル位置 Weexタイマはweexページが表示されない場合にトリガーされません.ファイル位置
その他の変更カスタムモジュール
環境ツールの更新古いツールを削除し、端末コマンドは以下の通り: 新しいツールをインストールし、端末コマンドは以下の通りです: その他の変更は、具体的なシステム構成を参照してください.例えば、 公式サイトには、 公式サイトには2つの参考文章があり、その通りにすると、
0.6.4
であり、端末にはweex --version
が入力される.出力info 0.6.4
iOS SDK
バージョンは0.8.0
で、現在ネット上のバージョンは0.10.2
です.バージョン番号情報は、ファイルWXDefine.h
に表示されます.incubator-weex .we
で終わり、Pythonでいくつかの小道具を書き、コンパイルとアップロードプロセスをある程度自動化したnative
階層には、web
、リッチテキストなどのカスタムモジュールが多数拡張されています.js
階には多くのツールが書かれています.例えば、$pt
はiOS
上の点ネットワークとリソース
この部分の今回の変更はやはり比較的に大きくて、
0.8.0
バージョンのローカルのピクチャーをロードできない問題このバージョンは変更しましたが、変更の方式は意外です
コンポーネントには、ローカルピクチャの構成がロードされていないsrc
属性が1つしかありません.WXNetworkProtocol
は廃棄され、WXResourceRequestHandler
で置き換えられた.__attribute__ ((deprecated("Use WXResourceRequestHandler instead")))
WXNetworkDefaultImpl
が削除するWebSocket
WXResourcexxx
ファイルを追加し、ネットワークロードとローカルリソースロードtypedef enum : NSUInteger {
WXResourceTypeMainBundle,
WXResourceTypeServiceBundle,
WXResourceTypeImage,
WXResourceTypeFont,
WXResourceTypeVideo,
WXResourceTypeLink,
WXResourceTypeOthers
} WXResourceType;
iOS SDK
置換GitHub
に行って最新のソースコードapache/incubator-weex SDK
古いバージョン、すなわちパスの下のファイルincubator-weex-master/ios/sdk/WeexSDK/
アクセスファイルの変更
0.8.0
バージョンのスペルミスで、環境の単語が1文字足りないn
//init sdk enviroment
[WXSDKEngine initSDKEnvironment]; // 0.8.0 initSDKEnviroment, n,
2つ目はネットワークのデフォルト実装です.もちろん、ネットワーク部分が自分で実現すれば、彼が提供しなくても、この部分は変更する必要はありません.
//
[WXSDKEngine registerHandler:[WXResourceRequestHandlerDefaultImpl new] withProtocol:@protocol(WXResourceRequestHandler)];
// 0.8.0 [WXSDKEngine registerHandler:[WXNetworkDefaultImpl new] withProtocol:@protocol(WXNetworkProtocol)];
旧バージョンでの変更の移行
一部の私たちは不合理な点だと思って、古いバージョンで修正して、新しいバージョンが変わっていないことを発見しました.だから修正して移転します.
incubator-weex-master/ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.m
+ (void)registerDefaults
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
[self _registerDefaultComponents];
[self _registerDefaultModules];
[self _registerDefaultHandlers];
});
// , , ,
// [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"taobao://"]];
}
scrollToComponent
メソッドで、オフセット量が負の場合は移動しません.ファイル位置incubator-weex-master/ios/sdk/WeexSDK/Sources/Component/WXScrollerComponent.m
- (void)scrollToComponent:(WXComponent *)component withOffset:(CGFloat)offset animated:(BOOL)animated
{
UIScrollView *scrollView = (UIScrollView *)self.view;
CGPoint contentOffset = scrollView.contentOffset;
CGFloat scaleFactor = self.weexInstance.pixelScaleFactor;
if (_scrollDirection == WXScrollDirectionHorizontal) {
CGFloat contentOffetX = [component.supercomponent.view convertPoint:component.view.frame.origin toView:self.view].x;
contentOffetX += offset * scaleFactor;
if (contentOffetX > scrollView.contentSize.width - scrollView.frame.size.width) {
contentOffset.x = scrollView.contentSize.width - scrollView.frame.size.width;
} else {
contentOffset.x = contentOffetX;
}
} else {
CGFloat contentOffetY = [component.supercomponent.view convertPoint:component.view.frame.origin toView:self.view].y;
contentOffetY += offset * scaleFactor;
CGFloat scrollContentOffsetY = scrollView.contentSize.height - scrollView.frame.size.height;
if (scrollContentOffsetY <= 0.0f) {
return; // , 。SDK ,0.8.0 0.10.0 , bug,
} else if ( contentOffetY > scrollContentOffsetY) {
contentOffset.y = scrollContentOffsetY;
} else {
contentOffset.y = contentOffetY;
}
}
[scrollView setContentOffset:contentOffset animated:animated];
}
incubator-weex-master/ios/sdk/WeexSDK/Sources/Module/WXTimerModule.m
- (void)trigger
{
if (_weexInstance.state == WeexInstanceDisappear ||
_weexInstance.state == WeexInstanceBackground ||
_weexInstance.state == WeexInstanceDestroy) {
return; // Weex ,
}
[[WXSDKManager bridgeMgr] callBack:_weexInstance.instanceId funcId:_callbackID params:nil keepAlive:_shouldRepeat];
}
その他の変更
Module
およびコンポーネントcomponent
は、変更する必要はなく、SDK
を交換した後もほとんど使用できます.(我々は一般的にカスタムファイル名を取り、関連するweex
ファイルの実装をコピーし、カスタム修正を行う)Weex
のモジュールModule
またはコンポーネントcomponent
が修正され、たまたまこのファイルをコピーしてカスタムコンポーネントの開発を行い、対応するカスタムモジュールModule
またはコンポーネントcomponent
ファイルが新しいSDK
のコンテンツを移行します.例えばWXModalUIModule.m
とWXTextInputComponent.m
の2つのファイルは、新しいバージョンは古いバージョンに基づいて修正されていますが、私たちもこの2つのファイルの内容をコピーして、接頭辞を修正して、XXXModalUIModule.m
とXXXTextInputComponent.m
のような新しい内容をカスタマイズしました.この場合、新しいSDKの修正をカスタムファイルに移行し、SDK
自体のファイルが動かないので、機能が正常であることをテストすればいいです.環境ツールの更新
npm uninstall -g weex
npm uninstall -g weex-toolkit
npm install -g weex-toolkit
npm install -g weex-builder
npm install -g weexpack // ( )
Python
でいくつかの自動コンパイルアップロードの小道具を書いたので、相応の調整が必要です..we
から.vue
に変更.we
は変更せず、新しいSDK
の下でも使用できます.私たちは今回動いていません.まず、新しいSDK
の機能が正常であることをテストで検証させます..we
を.vue
songsiqi/weex-vue-migrationに自動的に変更するツールが提供されています.私たちは古いファイルを変更するつもりはありません.新しいファイルは直接.vue
に変更することができます.そのため、このツールはしばらく使用されません..we
を.vue
に変更するのは難しいことではないはずです.我々の方法は、古い.we
ファイルが長時間存在し、.vue
ソースファイルに徐々に移行できるように、徐々に修正することです.既存のWeexプロジェクトをVueバージョンWeexとVue 2に変更する方法xの構文の違い