http://git-wip-us.apache.org/repos/asf/incubator-weex-site/blob/9e29c133/content.json
----------------------------------------------------------------------
diff --git a/content.json b/content.json
index b4d3dbc..4c8bf70 100644
--- a/content.json
+++ b/content.json
@@ -1 +1 @@
-{"meta":{"title":"Weex","subtitle":null,"description":"A framework for 
building Mobile cross-platform UIs. Different from a \"web app\", \"HTML5 
app\", or \"hybrid app\", you can use Weex to build a real mobile app. The code 
that you write is relatively simple, because you can build native applications 
just using HTML, CSS, Javascript. But underneath, the core of the application 
is Objective-C or Java. At the same time, Weex will provide a lot of native 
components or modules for developers to 
use.","author":"Jinjiang","url":"https://weex.apache.org"},"pages":[{"title":"How
 to 
Contribute","path":"guide/contributing.html","permalink":"https://weex.apache.org/guide/contributing.html","text":"How
 to ContributeWelcome to create pull requests or join in our mailing list for 
bugfix, doc, example, suggestion and anything. Join in Weex Mailing ListIn Weex 
community all discussion will happen on mailing list. Just send an email to 
[email protected] and follow the instruc
 tions to subscribe Weex dev mailing list. And then you will receive all 
discussions and community messages by your personal email. In the same time you 
can freely send your own emails to join in us. At the same time you can see the 
archives of all the mails through the web: 
http://mail-archives.apache.org/mod_mbox/incubator-weex-dev/ If you won’t 
follow the mailing list any more. There is another way to unsubscribe it: send 
an email to [email protected] and follow the 
instructions. Besides Weex dev mailing list, we also have some other mailing 
lists for you. You can check them out here: 
http://mail-archives.apache.org/mod_mbox/#weex.incubator Branch 
Managementmaster ↑dev <--- PR(hotfix/typo/3rd-PR) ↑ 
PR{domain}-feature-{date} master branch master is the 
latest (pre-)release branch. dev branch dev is the stable developing branch. 
It’s RECOMMENDED to commit hotfix (like typo) or feature PR to dev. 
{domain}-feature-{date} branch Th
 e branch for a developing iteration, e.g. android-feature-20160607 is an 
android developing iteration which is done at 2016.06.07. {domain} consists of 
android, ios, jsfm and html5. DO NOT commit any PR to such a branch. Branch 
Name{module}-{action}-{shortName} {module}, see 
commit log module {action} feature: checkout from {module} and merge to 
{module} later. If {module} not exists, merge to dev bugfix: like feature, for 
bugfix only hotfix: checkout from master or release tag, merge to master and 
{module} later. If {module} not exists, merge to dev for example: 
android-bugfix-memory jsfm-feature-communication android-hotfix-compute-layout 
Commit Log{action} [{module}] {description} 
{action} + add * update or bugfix - remove {module} Including: android, ios, 
jsfm, html5, component, doc, website, example, test, all {description} Just 
make it as clear and simple as possible. for example: + [android] close #123, 
add refreshin
 g for WebView * [doc] fix #123, update video auto-play property - [example] 
remove abc Pull RequestYou can create pull requests in GitHub. First we suggest 
you have some discussion with the community (commonly in our mailing list) 
before you code. Fork repo from https://github.com/apache/incubator-weex/ 
Finish the job you want to do. Create a pull request. Code Style 
GuideObjective-C Tabs for indentation(not spaces) * operator goes with the 
variable name (e.g. Type *variable;) Function definitions: place each brace on 
its own line. Other braces: place the open brace on the line preceding the code 
block; place the close brace on its own line. Use #pragma marks to categorize 
methods into functional groupings and protocol implementations Follow other 
guidelines on GitHub Objective-C Style Guide Java & Android Use Google Java 
Style as basic guidelines of java code. Follow AOSP Code Style for rest of 
android related code style.","type":"guide"},{"title":"Set Up Development 
Environmen
 
t","path":"guide/set-up-env.html","permalink":"https://weex.apache.org/guide/set-up-env.html","text":"Set
 up development environmentUse dotWe is a good choice, But if you want to 
develop locally on your own machine, you will set up your development 
environment. You will need Node.js and the Weex CLi. You can installing Node 
using nvm (Simple bash script to manage multiple active node.js versions). Run 
the following commands in a Terminal after installing nvm: $ nvm install 
6.10.0$ nvm use 6.10.0 Node.js comes with npm, which lets you install the Weex 
Cli. Run the following command in a Terminal: $ npm install -g weex-toolkit$ 
weex -vv1.0.3weex-builder : v0.2.4weex-previewer : v1.3.4 NOTE: If you get an 
error like “permission error”, try installing with sudo. Then you can use 
the weex command to verify that the installation is successful: Generate a new 
Weex projectYou can use CLi to generate a Weex project called 
“awesome-project”. Run the following command in a Terminal: $ 
 weex init awesome-project Then we enter the awesome-project folder, the CLi 
has been for us to generate a standard project structure. UsageWe enter the 
awesome-project folder and install dependencies with the following commands: 
npm install Then we run npm run dev and npm run serve to start watch mode and 
static server. Finally, we can see the Weex page in 
http://localhost:8080/index.html. You can modify this page in src/foo.vue. The 
code is shown below: <template> <div class=\"wrapper\"> <text 
class=\"weex\">Hello Weex !</text> <text class=\"vue\">Hello Vue 
!</text> </div></template><style scoped> .wrapper 
{ flex-direction: column; justify-content: center; } .weex { 
font-size: 60px; text-align: center; color: #1B90F7; } .vue { 
font-size: 60px; text-align: center; margin-top: 30px; color: #41B883; 
}</style> If you’re curious to learn more about technical details, 
continue on to the next. And 
 don’t forget to write code at dotWe and preview at 
anytime.","type":"guide"},{"title":"Integrate to Your 
App","path":"guide/integrate-to-your-app.html","permalink":"https://weex.apache.org/guide/integrate-to-your-app.html","text":"Integrate
 to Your AppIntegrate to AndroidTip:The following documents assume that you 
already have a certain Android development experience. Android has tow ways to 
integrate weex1.using source code: Can quickly use the latest features of WEEX, 
according to your own characteristics of the project. So, you can do some 
related improvements. 2.using SDK: WEEX will regularly release a stable version 
at jcenter.jcenter PrerequisitesMake sure the following configuration is 
complete: JDK version >= 1.7 , and configure the environment variable 
Android SDK installed and configure the environment variable Android SDK 
version 23 (compileSdkVersion in build.gradle) SDK build tools version 23.0.1 
(buildToolsVersion in build.gradle) Android Support Repository >
 = 17 (for Android Support Library) Quick to useIf you are the first time to 
try or have a higher demand for stability, you can use the way to dependence on 
the SDK.The steps are as follows: Create an Android project. There is nothing 
to be specified, according to your habits to. Update build.gradle by adding the 
following dependencies: compile 
'com.android.support:recyclerview-v7:23.1.1'compile 
'com.android.support:support-v4:23.1.1'compile 
'com.android.support:appcompat-v7:23.1.1'compile 
'com.alibaba:fastjson:1.1.46.android'compile 
'com.taobao.android:weex_sdk:0.5.1@aar' Note: the version can be high can not 
be low. Start writing codeNote: There is a complete code address in the 
appendix Implement the picture download interface, set the initialization. 
package com.weex.sample;import android.widget.ImageView;import 
com.taobao.weex.adapter.IWXImgLoaderAdapter;import 
com.taobao.weex.common.WXImageStrategy;import 
com.taobao.weex.dom.WXImageQuality;/*** Created by lixinke on 16/6/1.*/pu
 blic class ImageAdapter implements IWXImgLoaderAdapter { @Override public 
void setImage(String url, ImageView view, WXImageQuality quality, 
WXImageStrategy strategy) { //To implement picture download interface, 
otherwise the picture can not be displayed. }} initialization package 
com.weex.sample;import android.app.Application;import 
com.taobao.weex.InitConfig;import com.taobao.weex.WXSDKEngine;/*** Note: add 
android:name=\".WXApplication\" into Manifest file* To implement ImageAdapter, 
otherwise the picture can not be downloaded* Gradle must add some dependencies, 
otherwise the initialization will fail.* compile 
'com.android.support:recyclerview-v7:23.1.1'* compile 
'com.android.support:support-v4:23.1.1'* compile 
'com.android.support:appcompat-v7:23.1.1'* compile 
'com.alibaba:fastjson:1.1.45'*/public class WXApplication extends Application 
{ @Override public void onCreate() { super.onCreate(); InitConfig 
config=new InitConfig.Builder().setImgAdapter(new
  ImageAdapter()).build(); WXSDKEngine.initialize(this,config); }} 
Start rendering package com.weex.sample;import android.os.Bundle;import 
android.support.v7.app.AppCompatActivity;import android.view.View;import 
com.taobao.weex.IWXRenderListener;import com.taobao.weex.WXSDKInstance;import 
com.taobao.weex.common.WXRenderStrategy;import 
com.taobao.weex.utils.WXFileUtils;public class MainActivity extends 
AppCompatActivity implements IWXRenderListener { WXSDKInstance 
mWXSDKInstance; @Override protected void onCreate(Bundle savedInstanceState) 
{ super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); mWXSDKInstance = new 
WXSDKInstance(this); mWXSDKInstance.registerRenderListener(this); /** * 
WXSample can be replaced by any string * Template is js file that .we converted 
* Option can be empty, or through the option passed js required parameters. 
Such as the address of the bundle js. * JsonInitData can be empty. * width is 
-1 , default full screen, yo
 u can customize it. * height is -1 , default full screen, you can customize 
it. */ mWXSDKInstance.render(\"WXSample\", 
WXFileUtils.loadFileContent(\"hello.js\", this), null, null, -1, -1, 
WXRenderStrategy.APPEND_ASYNC); } @Override public void 
onViewCreated(WXSDKInstance instance, View view) { setContentView(view); 
} @Override public void onRenderSuccess(WXSDKInstance instance, int width, 
int height) { } @Override public void onRefreshSuccess(WXSDKInstance 
instance, int width, int height) { } @Override public void 
onException(WXSDKInstance instance, String errCode, String msg) { } 
@Override protected void onResume() { super.onResume(); 
if(mWXSDKInstance!=null){ mWXSDKInstance.onActivityResume(); } } 
@Override protected void onPause() { super.onPause(); 
if(mWXSDKInstance!=null){ mWXSDKInstance.onActivityPause(); } } 
@Override protected void onStop() { super.onStop(); 
if(mWXSDKInstance!=null)&#12
 3; mWXSDKInstance.onActivityStop(); } } @Override protected void 
onDestroy() { super.onDestroy(); if(mWXSDKInstance!=null){ 
mWXSDKInstance.onActivityDestroy(); } }} Dependence on source 
code (IDE Android Studio)1.Download source code. git clone 
https://github.com/alibaba/weex.2.Create an android project.3.Import the SDK 
Module through the following path:File->New-Import Module-> chose WEEX 
SDK Module(weex/android/sdk) -> Finish4.Add the following dependencies: 
compile project (‘: weex_sdk’) to build.gradle file.5.Other settings please 
refer to the above “Quick to use”. Appendix: WXSample address 
https://github.com/xkli/WXSample.git Integrated to iOSThrough the cocoaPods 
integrated Weex iOS SDK to the project.First assume that you have finished 
installing the iOS development environment and CocoaPods. Step 1: Add 
DependenciesImport Weex iOS SDK to your existing project, if not, you can 
create a new project.Before proceeding, make su
 re that the Podfile file is under the project file. If not, create one and 
open with text editor. Integration framework WeexSDK The latest version on 
cocoaPods can be obtained here .Add the following to the Podfile file: source 
'[email protected]:CocoaPods/Specs.git' target 'YourTarget' 
do platform :ios, '7.0' pod 'WeexSDK', '0.9.5' ## 
Suggest using latest Weex SDKend Integrate with source code First copy the ios 
/ sdk directory to your existing project directory (here to copy the root 
directory of your existing project as an example), and then add the Podfile 
file. source '[email protected]:CocoaPods/Specs.git' target 
'YourTarget' do platform :ios, '7.0' pod 
'WeexSDK', :path=>'./sdk/' end Step 2: Install 
DependenciesOpen the command line, switch to the directory of the Podfile file, 
and run the pod install command. If there are no errors, it means that the 
environment has been configure
 d. Step 3: Initialize the Weex environmentIn the AppDelegate.m file to do the 
initialization operation, usually in the didFinishLaunchingWithOptions method 
as follows to add. //business configuration[WXAppConfiguration 
setAppGroup:@"AliApp"];[WXAppConfiguration 
setAppName:@"WeexDemo"];[WXAppConfiguration 
setAppVersion:@"1.0.0"];//init sdk enviroment [WXSDKEngine 
initSDKEnviroment];//register custom module and 
component,optional[WXSDKEngine registerComponent:@"MyView" 
withClass:[MyViewComponent class]];[WXSDKEngine 
registerModule:@"event" withClass:[WXEventModule class]];//register 
the implementation of protocol, optional[WXSDKEngine 
registerHandler:[WXNavigationDefaultImpl new] 
withProtocol:@protocol(WXNavigationProtocol)];//set the log level [WXLog 
setLogLevel: WXLogLevelAll]; Step 4: Render weex InstanceWeex supports both 
full page rendering and partial rendering. What you need to do is render 
Weex’s view with the specified URL
  and add it to its parent container. The parent container is generally a 
viewController. #import <WeexSDK/WXSDKInstance.h>- (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.view 
addSubview:weakSelf.weexView]; }; _instance.onFailed = ^(NSError *error) 
{ //process failure }; _instance.renderFinish = ^ (UIView *view) 
{ //process renderFinish }; [_instance renderWithURL:self.url 
options:@{@"bundleUrl":[self.url absoluteString]} 
data:nil];} WXSDKInstance is a very important class that provides a basic 
method and some callbacks, such as renderWithURL, onCreate, onFailed, etc., can 
be found in WXSDKInstance.h. Step 5: Destroy Weex InstanceIn the dealloc phase 
of the viewController destroyed Weex inst
 ance, can play a role in avoiding memory leaks. - (void)dealloc{ 
[_instance destroyInstance];} Import the Weex SDK framework to the 
project.The Weex SDK can be compiled from the source code. You can try the 
latest feature in the new feature or bugfix branch.Refer to here for direct 
import of weexSDK.","type":"guide"},{"title":"Android 
APIs","path":"references/android-apis.html","permalink":"https://weex.apache.org/references/android-apis.html","text":"Android
 APIsWXSDKEngine Set up various adapters WXSDKEngine.initialize(this, new 
InitConfig.Builder().setImgAdapter(new ImageAdapter()).setDebugAdapter(new 
PlayDebugAdapter()).build()); Register the module and component 
WXSDKEngine.registerComponent(\"richtext\", 
RichText.class);WXSDKEngine.registerModule(\"event\", WXEventModule.class); 
Overloading framework WXSDKEngine.reload(this,framework,false); Adapter 
IWXImgLoaderAdapter Weex need to implement this interface to download the 
pictureThe interface is defined as follows: p
 ublic interface IWXImgLoaderAdapter { void setImage(String url, ImageView 
view, WXImageQuality quality, WXImageStrategy strategy);} WXImageQuality 
that the quality of the picture variables, take the following values LOW, 
NORMAL, HIGH, ORIGINAL picture quality in turn higher. The default is LOW. 
WXImageStrategy is an extension class that indicates whether the image can be 
cut (isClipping) sharpening (isSharpen) placeholder (placeHolder) and so on. 
IWXHttpAdapter Weex custom WXRequest and OnHttpListener, Native reload 
interface can be obtained from the Request URL, Header and other parameters, 
the network request can be completed through OnHttpListener callback 
notification. Weex provides the default network request: DefaultWXHttpAdapter, 
using HttpURLConnection for network requests. The interface is defined as 
follows: public interface IWXHttpAdapter { void sendRequest(WXRequest 
request, OnHttpListener listener);} WXRequest defines the parameters 
related to the ne
 twork request, the request method, the request body, and the timeout time. 
Weex default timeout is 3000. OnHttpListener defines the corresponding method 
after the network request ends. Defined as follows: interface OnHttpListener 
{ /** * start request */ void onHttpStart(); /** * headers received */ 
void onHeadersReceived(int statusCode,Map<String,List<String>> 
headers); /** * post progress * @param uploadProgress */ void 
onHttpUploadProgress(int uploadProgress); /** * response loaded length (bytes), 
full length should read from headers (content-length) * @param loadedLength */ 
void onHttpResponseProgress(int loadedLength); /** * http response finish * 
@param response */ void onHttpFinish(WXResponse response); } 
IWXUserTrackAdapter Weex related performance data (first screen loading time, 
JS-Native communication time, dom update time, etc.) and other general 
information (JSLib file size, Weex SDK version number, etc.).Interface 
definition: public interface IWXU
 serTrackAdapter { void commit(Context context, String eventId, String 
type, WXPerformance perf, Map<String, Serializable> params);} Native 
implementation interface can be obtained through WXPerformance and params 
corresponding information. Native interacts with JavaScriptCustom eventsUsed 
for a custom control for event notifications, such as custom click events, 
response drop events, and so on. WXSDKInstance.java public void 
fireEvent(String elementRef,final String type, final Map<String, Object> 
data,final Map<String, Object> domChanges){ }public void 
fireEvent(String elementRef,final String type, final Map<String, Object> 
data){ fireEvent(elementRef,type,data,null);}public void 
fireEvent(String elementRef, String type){ fireEvent(ref,type,new 
HashMap<String, Object>());} elementRef:The event occurred for the 
control ID。 type: Custom events, Weex defaults to a custom event starting 
with onXxxxx. OnPullDown (d
 rop-down event) data: Need to reveal the parameters, such as the current 
control of the size, coordinates and other information。 domChanges:Update 
ref for the control’s Attribute and Style Event callbackUsed for Module 
callback, for example, after the completion of positioning Module need to 
notify JS. Use as follows: public class WXLocation extends WXModule { 
@JSMethod public void getLocation(JSCallback callback){ //Get the code for 
the location information ..... Map<String,String> data=new 
HashMap<>(); data.put(\"x\",\"x\"); data.put(\"y\",\"y\"); //notify once 
callback.invoke(data); //Continuous connection 
callback.invokeAndKeepAlive(data); //Invoke method and invokeAndKeepAlive two 
methods of choice }} OnWXScrollListenerWeex gets the scroll event You 
can register registerOnWXScrollListener via WXSDKInstanceThe interface is 
defined as follows: public interface OnWXScrollListener { /** * The view 
is not currently scrolling. */ int IDLE = 
 RecyclerView.SCROLL_STATE_IDLE; /** * The view is currently being dragged by 
outside input such as user touch input. */ int DRAGGING = 
RecyclerView.SCROLL_STATE_DRAGGING; /** * The view is currently animating to a 
final position while not under * outside control. */ int SETTLING = 
RecyclerView.SCROLL_STATE_SETTLING; /** * Callback method to be invoked when 
the view has been scrolled. This will be * called after the scroll has 
completed. * <p> * This callback will also be called if visible item 
range changes after a layout * calculation. In that case, dx and dy will be 0. 
* */ void onScrolled(View view, int x, int y); /** * Callback method to be 
invoked when view's scroll state changes. * */ void onScrollStateChanged(View 
view, int x, int y, int newState);} IActivityNavBarSetterWeex provides 
WXNavigatorModule for navigation control, and the corresponding method can be 
customized by setting the IActivityNavBarSetter interface. Instructions: 
WXSDKEngine.setActivityNavBarSett
 er(new IActivityNavBarSetter(){}); Other IntroductionsetSizeYou can 
use the mWXSDKInstance.setSize() method to change the size of the Weex 
container. DowngradeWeex in the development stage will add some new features 
and new methods, but these new features and functions must be upgraded to 
achieve the SDK, for the application should not be upgraded how to deal with 
it? You can use the downgrade feature. Native can be handled by the onException 
method in interface IWXRenderListener, and if it is an active demoulding 
errCode is a character that is divided by “|”. “|” The preceding 
character is 1 for active demotion, and the Native side can jump to the 
corresponding H5 page. Or otherwise prompted the user’s current environment 
does not support Weex.","type":"references"},{"title":"Color 
name","path":"references/color-names.html","permalink":"https://weex.apache.org/references/color-names.html","text":"List
 of the names of colorsBasic color keywords: Color Name Hex rg
 b black #000000 silver #C0C0C0 gray #808080 white #FFFFFF maroon #800000 red 
#FF0000 purple #800080 fuchsia #FF00FF green #008000 lime #00FF00 olive #808000 
yellow #FFFF00 navy #000080 blue #0000FF teal #008080 aqua #00FFFF Extended 
color keywords: Color Name Hex rgb aliceblue #F0F8FF antiquewhite #FAEBD7 aqua 
#00FFFF aquamarine #7FFFD4 azure #F0FFFF beige #F5F5DC bisque #FFE4C4 black 
#000000 blanchedalmond #FFEBCD blue #0000FF blueviolet #8A2BE2 brown #A52A2A 
burlywood #DEB887 cadetblue #5F9EA0 chartreuse #7FFF00 chocolate #D2691E coral 
#FF7F50 cornflowerblue #6495ED cornsilk #FFF8DC crimson #DC143C cyan #00FFFF 
darkblue #00008B darkcyan #008B8B darkgoldenrod #B8860B darkgray #A9A9A9 
darkgreen #006400 darkgrey #A9A9A9 darkkhaki #BDB76B darkmagenta #8B008B 
darkolivegreen #556B2F darkorange #FF8C00 darkorchid #9932CC darkred #8B0000 
darksalmon #E9967A darkseagreen #8FBC8F darkslateblue #483D8B darkslategray 
#2F4F4F darkslategrey #2F4F4F darkturquoise #00CED1 darkviolet #9400D3 deeppi
 nk #FF1493 deepskyblue #00BFFF dimgray #696969 dimgrey #696969 dodgerblue 
#1E90FF firebrick #B22222 floralwhite #FFFAF0 forestgreen #228B22 fuchsia 
#FF00FF gainsboro #DCDCDC ghostwhite #F8F8FF gold #FFD700 goldenrod #DAA520 
gray #808080 green #008000 greenyellow #ADFF2F grey #808080 honeydew #F0FFF0 
hotpink #FF69B4 indianred #CD5C5C indigo #4B0082 ivory #FFFFF0 khaki #F0E68C 
lavender #E6E6FA lavenderblush #FFF0F5 lawngreen #7CFC00 lemonchiffon #FFFACD 
lightblue #ADD8E6 lightcoral #F08080 lightcyan #E0FFFF lightgoldenrodyellow 
#FAFAD2 lightgray #D3D3D3 lightgreen #90EE90 lightgrey #D3D3D3 lightpink 
#FFB6C1 lightsalmon #FFA07A lightseagreen #20B2AA lightskyblue #87CEFA 
lightslategray #778899 lightslategrey #778899 lightsteelblue #B0C4DE 
lightyellow #FFFFE0 lime #00FF00 limegreen #32CD32 linen #FAF0E6 magenta 
#FF00FF maroon #800000 mediumaquamarine #66CDAA mediumblue #0000CD mediumorchid 
#BA55D3 mediumpurple #9370DB mediumseagreen #3CB371 mediumslateblue #7B68EE 
mediumspringgreen #00FA
 9A mediumturquoise #48D1CC mediumvioletred #C71585 midnightblue #191970 
mintcream #F5FFFA mistyrose #FFE4E1 moccasin #FFE4B5 navajowhite #FFDEAD navy 
#000080 oldlace #FDF5E6 olive #808000 olivedrab #6B8E23 orange #FFA500 
orangered #FF4500 orchid #DA70D6 palegoldenrod #EEE8AA palegreen #98FB98 
paleturquoise #AFEEEE palevioletred #DB7093 papayawhip #FFEFD5 peachpuff 
#FFDAB9 peru #CD853F pink #FFC0CB plum #DDA0DD powderblue #B0E0E6 purple 
#800080 red #FF0000 rosybrown #BC8F8F royalblue #4169E1 saddlebrown #8B4513 
salmon #FA8072 sandybrown #F4A460 seagreen #2E8B57 seashell #FFF5EE sienna 
#A0522D silver #C0C0C0 skyblue #87CEEB slateblue #6A5ACD slategray #708090 
slategrey #708090 snow #FFFAFA springgreen #00FF7F steelblue #4682B4 tan 
#D2B48C teal #008080 thistle #D8BFD8 tomato #FF6347 turquoise #40E0D0 violet 
#EE82EE wheat #F5DEB3 white #FFFFFF whitesmoke #F5F5F5 yellow #FFFF00 
yellowgreen #9ACD32","type":"references"},{"title":"Common 
Events","path":"references/common-event.html","perma
 link":"https://weex.apache.org/references/common-event.html","text":"Common 
EventsWeex provide the ability to let events trigger action, like starting a 
JavaScript when a user click on a component. Bellow are the common event 
attributes that can be added to weex components to define event actions. Click 
eventThe onclick attribute fires on a click gesture on the element.Notes: The 
input and switch component does not currently support the click event, please 
use change or input event instead. event object type : click target : The 
target component where the event is triggered timestamp : Timestamp when event 
is triggered Longpress eventIf a longpress event is bound to a component, the 
event will be triggered when user long press on it.Notes: The input and switch 
component does not currently support the click event, please use change or 
input event instead. event object type : longpress target : The target 
component where the event is triggered timestamp : Timestamp when event is trigg
 ered Appear eventIf a appear event is bound to a component inside a scrollable 
container, the event will be triggered when the component comes to be visible. 
event object type : appear target : The target component where the event is 
triggered timestamp : Timestamp when event is triggered direction : The 
direction in which the scroller is scrolling. Could be up or down. Disappear 
eventIf a disappear event is bound to a component inside a scrollable 
container, the event will be triggered when the component scrolls out of 
viewport and disappears from your sight. event object type : disappear target : 
The target component where the event is triggered timestamp : Timestamp when 
event is triggered direction : The direction in which the scroller is 
scrolling. Could be up or down. Page eventWeex provides you with simple 
management of page status, such as viewappear and viewdisappear.The viewappear 
event will be triggered when page is about to show or before any animations are 
configured fo
 r showing. For example, when calling push method in navigator module, this 
event will be trigged in new page.The viewdisappear event will be triggeded 
when page is about to dismiss.Different from appear and disappear of component, 
these two events focus on the status of whole page, so they must be bound to 
the root component.In addititon, these events also can be bound to body 
component which is not root actually such as wxc-navpage. event object type : 
viewappear or viewdisappear target : The target component where the event is 
triggered timestamp : Timestamp when event is triggered Example<template> 
<div> <div class=\"box\" @click=\"onclick\" @longpress=\"onlongpress\" 
@appear=\"onappear\" @disappear=\"ondisappear\"></div> 
</div></template><script> const modal = 
weex.requireModule('modal') export default { methods: { onclick 
(event) { console.log('onclick:', event) modal.toast({ message: 
'onclick', duration: 0.8 })
  }, onlongpress (event) { console.log('onlongpress:', event) 
modal.toast({ message: 'onlongpress', duration: 0.8 }) }, 
onappear (event) { console.log('onappear:', event) modal.toast({ 
message: 'onappear', duration: 0.8 }) }, ondisappear (event) { 
console.log('ondisappear:', event) modal.toast({ message: 'ondisappear', 
duration: 0.8 }) } } }</script><style scoped> 
.box { border-width: 2px; border-style: solid; border-color: #BBB; width: 
250px; height: 250px; margin-top: 250px; margin-left: 250px; background-color: 
#EEE; }</style>","type":"references"},{"title":"Common 
Style","path":"references/common-style.html","permalink":"https://weex.apache.org/references/common-style.html","text":"Common
 StyleAll of weex tags share some common style rules Box Model Weex box model 
based on the CSS box model, all of weex elements can be considered as boxes. 
The term “box model” is used when t
 alking about design and layout. The box model is essentially a box that wraps 
around every HTML element. It consists of margins, borders, paddings, and the 
actual content. you can use the definition below in weex box model. width: 
length type, default value 0 height: length type, default value 0 padding: 
length type, default value 0, (space around content, between element content 
and the element border) padding-left: length type, default value 0 
padding-right: length type, default value 0 padding-top: length type, default 
value 0 padding-bottom: length type, default value 0 margin: length type, 
default value 0, (space around elements, outside the border) margin-left: 
length type, default value 0 margin-right: length type, default value 0 
margin-top: length type, default value 0 margin-bottom: length type, default 
value 0 border border-style: values solid | dashed | dotted, default value 
solid border-left-style: values solid | dashed | dotted, default value solid 
border-top-style: va
 lues solid | dashed | dotted, default value solid border-right-style: values 
solid | dashed | dotted, default value solid border-bottom-style: values solid 
| dashed | dotted, default value solid border-width: length type, non-negative, 
default value 0 border-left-width: length type, non-negative, default value 0 
border-top-width: length type, non-negative, default value 0 
border-right-width: length type, non-negative, default value 0 
border-bottom-width: length type, non-negative, default value 0 border-color: 
color type, default value #000000 border-left-color: color type, default value 
#000000 border-top-color: color type, default value #000000 border-right-color: 
color type, default value #000000 border-bottom-color: color type, default 
value #000000 border-radius: length type, default value 0, (rounded borders to 
elements , default value is 0 meaning right angle ) border-bottom-left-radius: 
length type, non-negative, default value 0 border-bottom-right-radius: length 
type, non-n
 egative, default value 0 border-top-left-radius: length type, non-negative, 
default value 0 border-top-right-radius: length type, non-negative, default 
value 0 NotesWeex box model uses border-box as the default value of box-sizing, 
meaning the width and height properties includes content, padding and border, 
but not the margin. The rule of border-radius for a specific corner such as 
border-top-left-radius is not currently supported for component <image>in 
iOS. This only happens to iOS, it works fine on Android. Although 
overflow:hidden is default on android, a view will not clip its children 
according to border-radius unless all the following condtions met. This only 
happens on Android, it works fine on iOS. The view type is div, a, cell, 
refresh or loading. OS version is Android 4.3 or higher. OS version is not 
Andorid 7.0 A view does not have background-image property nor OS version is 
Android 5.0 or higher. Example<template> <div> <image 
src=\"...\" style=\"w
 idth: 400; height: 200; margin-left: 20;\"></image> 
</div></template> FlexboxWeex box style model based on the CSS 
flexbox, ensures that elements behave predictably and the page layout can 
accommodates to different screen sizes and different display devices. Flexbox 
consists of flex containers and flex items. If a weex element can containing 
other elements, it is a flex container. Notice that the old version of flexbox 
specification has differences with the new ones, such as whether or not to 
support wrapping. This is described at w3c’s working drafts, and you should 
notice the differences among them. Also notice that the old version is only 
supported below the 4.4 version of android. Flex containerFlexbox is the 
default and only style model in Weex, so you don’t have to add display: flex; 
in a container. flex-direction: values row | column, default value column The 
flex-direction property specifies the direction of the flexible items inside 
the flex contain
 er. Default value is column (top-to-bottom). justify-content: values 
flex-start | flex-end | center | space-between, default value flex-start The 
justify-content property horizontally aligns the flexible container’s items 
when the items do not use all available space on the main-axis. Default value 
is flex-start meaning the flex items are positioned at the beginning of the 
container. flex-end means the items are positioned at the end of the container. 
center means the items are positioned at the center of the container. 
space-between means the items are positioned with space between the lines. 
align-items: values stretch | flex-start | center | flex-end, default value 
stretch The align-items property vertically aligns the flexible container’s 
items when the items do not use all available space on the cross-axis. Default 
value is stretch meaning the items are stretched to fit the container. 
flex-start means the items are positioned at the top of the container; flex-end 
means the 
 items are positioned at the bottom of the container; center means items are 
positioned at the center of the container (vertically). Flex item flex: number 
type, default value 0 the flex property specifies the length of the flex item, 
relative to the rest of the flex items inside the same container. If all of the 
flex items set flex: 1, they will have equal width or height on direction of 
flex container’s flex-direction. If there are two flex items, with one 
setting flex: 1, and the other setting flex: 2, the first one will take 1/3 
container space, and the second one will take 2/3 container space. If all of 
flex items don’t set flex, they will be aligned depending on the 
container’s justify-content property. Examplesa list of images with equal 
scales align at the vertical axis: <template> <div style=\"width: 300; 
height: 100;\"> <image src=\"...\" style=\"flex: 1;\"></image> 
<image src=\"...\" style=\"flex: 1;\"></image> <image src=\"...\
 " style=\"flex: 1;\"></image> </div></template> a image 
with fixed width aligns with a stretched text: <template> <div 
style=\"width: 300; height: 100;\"> <image src=\"...\" style=\"width: 
100; height: 100;\"></image> <text style=\"flex: 
1;\">...</text> </div></template> mixed direction 
alignment: <template> <div style=\"width: 100;\"> <image 
src=\"...\" style=\"width: 100; height: 100;\"></image> <div 
style=\"flex-direction: row;\"> <text style=\"flex: 2; font-size: 
32;\">title</text> <text style=\"flex: 1; font-size: 
16;\">$100</text> </div> </div></template> one text 
align left , the other float right: <template><div 
style=\"flex-direction: row; justify-content: space-between;\"> 
<text>WEEX</text> 
<text>2016-05-08</text></div></template> Positionwe can 
use properties below to control placement 
 of weex tag position: values relative | absolute | fixed | sticky, default 
value relative relative means the item is positioned relative to its normal 
position. absolute means the item is positioned relative to its container. 
fixed keeps the elements position fixed when the page is scrolling. sticky 
keeps elements positioned inside the viewport as “stuck” at the top or 
“relative” at its original place depending on whether does it about to 
scroll out of the view. top: number type, default value 0, upward offset value 
bottom: number type, default value 0, downward offset value left: number type, 
default value 0, leftward offset value right: number type, default value 0, 
rightward offset value Examples<template> <div style=\"flex-direction: 
column;\"> <div style=\"height: 3000;\"> <image src=\"...\" 
style=\"top: 50px; left: 50px;\"></image> </div> <div 
style=\"height: 3000;\"> <image src=\"...\" style=\"position: 
sticky;\"></im
 age> </div> <div style=\"height: 3000;\"> <image src=\"...\" 
style=\"position: absolute; top: 50px; left: 50px;\"></image> 
</div> </div></template> Pseudo class v0.9.5+Weex support 
four pseudo-classes: active, focus, disabled, enabled All components support 
active, but only the input component and the textarea component support focus, 
enabled, diabled. Rule the high priority override low priority when rules take 
effect at the same time such as: “input:active:enabled” will override 
“input:active” the interconnection rule as follow Example<template> 
<div class=\"wrapper\"> <image :src=\"logoUrl\" 
class=\"logo\"></image> </div></template><style 
scoped> .wrapper { align-items: center; margin-top: 120px; } 
.title { font-size: 48px; } .logo { width: 360px; height: 82px; 
background-color: red; } .logo:active { width: 180px; height: 82px; 
background-color: green;
  }</style><script> export default { props: { 
logoUrl: { default: 
'https://alibaba.github.io/weex/img/[email protected]' }, target: 
{ default: 'World' } }, methods: { update (e) { 
this.target = 'Weex'; } } };</script> Try it 
linear-gradient v0.10+Weex support linear-gradient background, You can see W3C 
description of the gradient. Supported componentsAll components in Weex support 
gradients UsageYou can use linear gradient by background-image property. 
background-image: linear-gradient(to top,#a80077,#66ff00); radial-gradient is 
not currently supported, do not use it. Weex currently supports two color 
gradients. The direction of the gradient is as follows: to rightFrom left to 
right to leftFrom right to left to bottomFrom top to bottom to topFrom bottom 
to top to bottom rightFrom the upper left corner to the lower right corner to 
top leftFrom the lower right corner to the upper left corner Note bac
 kground-image and background-color are set at the same time, background-image 
precedes background-color. Do not use shorthand property such as background. 
Example<template> <scroller style=\"background-color: #3a3a3a\"> 
<div class=\"container1\" style=\"background-image:linear-gradient(to 
right,#a80077,#66ff00);\"> <text class=\"direction\">to 
right</text> </div> <div class=\"container1\" 
style=\"background-image:linear-gradient(to left,#a80077,#66ff00);\"> 
<text class=\"direction\">to left</text> </div> <div 
class=\"container1\" style=\"background-image:linear-gradient(to 
bottom,#a80077,#66ff00);\"> <text class=\"direction\">to 
bottom</text> </div> <div class=\"container1\" 
style=\"background-image:linear-gradient(to top,#a80077,#66ff00);\"> 
<text class=\"direction\">to top</text> </div> <div 
style=\"flex-direction: row;align-items: center;justify-content: center\"> 
&lt
 ;div class=\"container2\" style=\"background-image:linear-gradient(to bottom 
right,#a80077,#66ff00);\"> <text class=\"direction\">to bottom 
right</text> </div> <div class=\"container2\" 
style=\"background-image:linear-gradient(to top left,#a80077,#66ff00);\"> 
<text class=\"direction\">to top left</text> </div> 
</div> </scroller></template><style> .container1 { 
margin: 10px; width: 730px; height: 200px; align-items: center; 
justify-content: center; border: solid; border-radius: 10px; } .container2 
{ margin: 10px; width: 300px; height: 300px; align-items: center; 
justify-content: center; border: solid; border-radius: 10px; } .direction 
{ font-size: 40px; color: white; }</style> Other Common Style 
opacity background-color Type of Style Value length type number type color type 
(The list of color keywords.) enumerated type Simple StepThese up-to-down steps 
may help you to plan the who
 le style of weex pages. overall style: divide the whole page to different 
parts flex alignment: align boxes in every part of page position box: place 
box, set offset element specific style: set styles for certain element if 
needed","type":"references"},{"title":"HTML5 
APIs","path":"references/html5-apis.html","permalink":"https://weex.apache.org/references/html5-apis.html","text":"HTML5
 APIsVue 
APIs","type":"references"},{"title":"Gesture","path":"references/gesture.html","permalink":"https://weex.apache.org/references/gesture.html","text":"Gesture
 Experiment Feature Weex encapsulates native touch events to provide a gesture 
system. Using gesture is similar to use event in Weex. Just set on attributes 
on a node to listen to gesture. TypeFor now, there are four types of gestures: 
Touch. Touch gesture is fired when a touch point is placed, moved or removed 
from the touch surface. Touch gesture is accuracy as it will report every 
trivial event. As a result, listening to touch gesture m
 ay be slow, a great deal of events needs to be processed even a small move 
happened. There are three types of Touch gesture: touchstart will be fired when 
a touch point is placed on the touch surface. touchmove will be fired when a 
touch point is moved along the touch surface. touchend will be fired when a 
touch point is removed from the touch surface. Pan. Pan gesture also report 
motion of touch point on the touch surface, which is similar to touch gesture. 
But Pan gesture is sampled and faster than the touch event. As consequence, it 
is less accuracy than touch gesture. There are also three types of Pan gesture, 
and the meaning of these types is very close to types of Touch. panstart 
panmove panend Horizontal/Vertical Pan v0.10+ . Mainly used for cell swipe 
gestures before conflict resolving system is completed. start/move/end state of 
the gesture will be passed by state property. Note: These gestures are in 
conflict with click event on Android currently. horizontalpan verticalpan
  Swipe. Swipe is fired when user swipe a touch point on the screen. A serial 
of motion will only trigger one Swipe gesture. LongPress. LongPress is fired 
when a touch point is held for 500 ms or more. The Touch gesture and Pan is 
very close to each other, with following features hold: Touch. Not sampled, 
accuracy, but slow. Pan. Sampled, fast, less accuracy. Users may choose their 
gesture according to their situation. PropertiesThe following properties can be 
used in gesture callback: direction. Only exists for Swipe gesture. Indicate 
the direcion of the swipe, choose from up, left, bottom, right. changedTouches. 
An array of motion for every touch pointer that has contribute to the current 
gesture. changedToucheschangedTouches is an array, with the following 
properties in its children: identifier. A unique identifier for a touch 
pointer. pageX. The X coordinate of the touch pointer relative to the left edge 
of the document. pageY. The Y coordinate of the touch pointer relative to th
 e top of the document. screenX. The X coordinate of the touch point relative 
to the left edge of the screen. screenY. The Y coordinate of the touch point 
relative to the top edge of the screen. ConstrainCurrently, Weex Android do not 
support listening to gesture on scroller, list and webview, as it would lead a 
large amount of event conflicting.","type":"references"},{"title":"iOS 
APIs","path":"references/ios-apis.html","permalink":"https://weex.apache.org/references/ios-apis.html","text":"iOS
 APIsHandler(like Android Adapter) WXImgLoaderDefaultImpl Image load handler. 
Weex need to implement this interface to download the picture. The interface is 
defined as follows: @protocol WXImgLoaderProtocol <WXModuleProtocol>/** * 
@abstract Creates a image download handler with a given URL * * @param imageUrl 
The URL of the image to download * * @param imageFrame The frame of the image 
you want to set * * @param options : The options to be used for this download * 
* @param completedBlock
  : A block called once the download is completed. * image : the image which 
has been download to local. * error : the error which has happened in download. 
* finished : a Boolean value indicating whether download action has finished. 
*/- (id<WXImageOperationProtocol>)downloadImageWithURL:(NSString *)url 
imageFrame:(CGRect)imageFrame userInfo:(NSDictionary *)options 
completed:(void(^)(UIImage *image, NSError *error, BOOL 
finished))completedBlock;@end Native interacts with JavaScript Custom events 
Used for a custom control for event notifications, such as custom click events, 
response drop events, and so on. This is a method in the component base class 
that can be used directly. /** * @abstract Fire an event to the component and 
tell Javascript which value has been changed. * @param eventName * @param 
params * @param domChanges **/- (void)fireEvent:(NSString *)eventName 
params:(NSDictionary *)params domChanges:(NSDictionary *)domChanges Event 
callback Used for Module callback. T
 here are two types of callback: WXModuleCallback: For performance reasons, the 
callback can only callback js once, and then will be released. 
WXModuleKeepAliveCallback: This callback can be set to multiple callbacks, 
multiple callbacks of the scene such as continually listen scrolls event and 
return to js. @implementation WXEchoModule@synthesize 
weexInstance;WX_EXPORT_METHOD(@selector(echo:))- (void)echo:(NSString *)param 
callback:(WXModuleKeepAliveCallback)callback{ callback(param,ture);} 
Set size of the Weex containerYou can use the setFrame(CGRect) method to change 
the size of the Weex container. DowngradeWeex in the development stage will add 
some new features and new methods, but these new features and functions must be 
upgraded to achieve the SDK, for the application should not be upgraded how to 
deal with it? You can use the downgrade feature. Native can be handled by the 
onFailed method in interface WXSDKInstance, and if it is an active demoulding 
error domain is T
 emplateErrorType, and the Native side can jump to the corresponding H5 page. 
Or otherwise prompted the user’s current environment does not support 
Weex.","type":"references"},{"title":"JS Framework 
APIs","path":"references/jsfm-apis.html","permalink":"https://weex.apache.org/references/jsfm-apis.html","text":"JS
 Framework APIsBroadcastChannel v0.9+BroadcastChannel API is the solution for 
inter-instance communication. Reference BroadcastChannel specification. 
MessageEvent specification API postMessage(message): Sends the given message to 
other BroadcastChannel objects set up for this channel. close: Closes the 
BroadcastChannel object, opening it up to garbage collection. onmessage: Event 
handler, the event will be triggered when the instance receive a message. 
Usageconst Stack = new BroadcastChannel('Avengers')Stack.onmessage = function 
(event) { console.log(event.data) // in this case, it's \"Hulk Smash 
!!!\"}// in another instanceconst Hulk = new BroadcastChannel('Aveng
 ers')Hulk.postMessage(\"Hulk Smash !!!\") Run the code above, Stack can 
receive the message from Hulk. NoticeOne thing should be noticed: The message 
object is not deep cloned. See the demo below: const a = new 
BroadcastChannel('app')const b = new BroadcastChannel('app')const message = 
{ lists: ['A', 'B']}a.onmessage = function (event) { // in this 
case, event.data is a reference of message console.assert(event.data === 
message)}b.postMessage(message) In this case, event.data is strict equal 
to message. Compared to the deep clone, this behavior improves efficiency and 
reduces memory cost. However, developers are not recommended to cache or modify 
the event object when they are using it (All type of event handlers should have 
this 
restriction).","type":"references"},{"title":"Path","path":"references/path.html","permalink":"https://weex.apache.org/references/path.html","text":"Path0.9
 This article will cover uri (url) usage in Weex. Including using 
image/typeface 
 resources, deal with relative uri and how to access local and packaged asset 
files. Schemes LocalWeex SDK provide local scheme to access resources packaged 
with application, and of cource, it’s not working in the HTML5 
runtime.Currently, developers can use this scheme with image and text’s font 
file location. In iOS, it’s always locate file in ‘bundle resources’. For 
example, a image component with local:///app_icon will load image file named 
‘app_icon’ in bundle resouce, and font file work in the same way. In 
Android, image component will load from ‘drawable’ resource folder like 
‘res/drawable-xxx’. But load font file is different, android framework can 
not load font file from ‘res’, so SDK will load it from asserts folder. 
HTTP/HTTPSIt’s working in the same way as in web, Weex support these at very 
beginning. FileUse file scheme to access local disk file. This scheme has its 
limitations: You would not hard coded a file url in source page. Because not ma
 tter it’s running in different platform(iOS, Android) or not, the content 
will be totally different in another device, which is depend to the specific 
device.So one possible case is getting the file url in runtime dynamically, 
which you can use it to diaplay a local disk image, or maybe upload it later. 
Relative URILike we do in HTML, weex process ‘relative URI’ in the same 
way. The relative URI, which start with /,.,..,//, will resolve by the bunle 
url.Means URL start with / will resolve to the root folder as bundle js file, . 
and .. will resolve to current and parent folder, and // will resolve to same 
scheme bundle js have. URI AdapterAll the above is the default implementation, 
developers can extend or override these their own by providing a ‘URI 
Adapter’. Same as the other adapters, Custom adapter should be set before 
Weex SDK is initializing.","type":"references"},{"title":"Platform Differences 
Between Weex and Web","path":"references/platfrom-difference.html","perma
 
link":"https://weex.apache.org/references/platfrom-difference.html","text":"Platform
 Differences Between Weex and WebWork in 
progresss.","type":"references"},{"title":"Native DOM 
APIs","path":"references/native-dom-api.html","permalink":"https://weex.apache.org/references/native-dom-api.html","text":"Native
 DOM APIsWeex in the JS engine, for each page provides a set of Native DOM 
APIs. This interface is very close to the HTML DOM APIs. Using this interface 
we can control native rendering logic via JavaScript. And Weex upper layer of 
Vue 2.0 is based on this interface to adapt. In most cases, the JS framework 
will encapsulate native DOM APIs. That way, the developer does not need to work 
directly on the Native DOM. Document class: full page document. Node class: the 
base class of nodes. Element class: element node, inherited from Node, single 
view unit. Comment class: comment node, inherited from Node, no practical 
meaning, usually used as placeholders. Each Weex page has a weex.docu
 ment object, which is an instance of the Document class and is the starting 
point for all the following interface calls. Let’s take a look at their usage 
in detail: Document classEach Document instance will automatically have a 
documentElement property when it is created. This attribute represents the 
document node. The document node can have a body, which is the main node of the 
document. Note: The document node body only accepts <div>, <list>, 
or <scroller> three types of element nodes. Constructornew Document(id: 
string, url: string?) Member methodcreateElement(tagName: string, props: 
Object?): Element Creates an Element instance of a specific type tagName, which 
is an element node. Props can contain attr objects and style objects. Such as 
createBody ('div', {style: {backgroundColor: '#ffffff'}}). 
createComment(text: string): Comment Create an instance of ·Comment, which is 
a comment node and set a text description. createBody(tagName: string,
  props: Object?): Element Create a document body node and automatically mount 
it under documentElement. fireEvent(el: Element, type: string, e: Object?, 
domChanges: Object?)Triggers a particular type of event. When the event 
modifies the DOM’s properties or styles during the generation process, the 
fourth argument is used to describe the changes, and the parameter format is 
the same as the format of the createElement method above. destroy() Destroy the 
current document. Once the document is destroyed, it will no longer work. 
Read-only member variablesid: string Each Document instance has a unique id. 
This is also the only id that each Weex page has. URL: string? If the current 
Weex page has a JS bundle URL, the URL will be returned here. body: Element The 
main body of the document, the concept similar to the HTML DOM document.body. 
documentElement: Element Document node, the concept similar to the HTML DOM 
document.documentElement. The relationship between body and documentElement
  is: documentElement is the parent of the body. getRef(id): Node Get the node 
based on the node id. Node ClassConstructornew Node() Member methoddestroy() 
Read-only member variables or methodsref: string Each Node instance has its own 
unique ref value in the entire `Document instance. nextSibling: Node? 
previousSibling: Node? parentNode: Node? The three interfaces are consistent 
with the definition of HTML DOM. children: Node[] The node has an array of all 
child nodes. pureChildren: Node[] The node has an array of all the child 
elements. The difference between it and children is that pureChildren contains 
only the Element instance and not the Comment instance. Element class, 
inherited from NodeConstructornew Element(type: string, props: Object?) Creates 
an element node of a particular type type, and the props parameter can contain 
an attr object or a style object. DOM tree operationappendChild(node: 
Node)insertBefore(node: Node, before: Node?) The two interfaces are similar to 
HTML 
 DOM. insertAfter(node: Node, after: Node?) Insert a new node before a child 
node. removeChild(node: Node, preserved: boolean?) Delete the child node node. 
Parameters preserved whether it is immediately removed from memory or 
temporarily retained. clear() Clear all child nodes. The DOM property itself 
operatessetAttr(key: string, value: string, silent: boolean?) setStyle(key: 
string, value: string, silent: boolean?) In the above two interfaces, when 
silent is true, the node only updates itself, does not pass the command to the 
client render layer. This parameter is used to handle user events that have 
changed the node-related properties at the time of occurrence, and will not 
send commands repeatedly to the client after the Native DOM has changed. 
addEvent(type: string, handler: Function) removeEvent(type: string) 
fireEvent(type: string, e: any) Bind events, unbind events, trigger events. 
Component method for a specific component typeSpecial: Different component 
types can have their 
 own unique methods, such as <web> components support refresh method. You 
can see the description of each component. In this case, we will generate a 
specific component type of class, such as WebElement, which inherited from 
Element. Such as: WebElement inherited from ElementIndicates that a webview is 
embedded in the Wex page Refresh (): Refreshes the current webview Read-only 
member variables or methodsref, nextSibling, previousSibling, parentNode 
Inherited from Node. nodeType: number The number is always 1. type: string 
Consistent with the type in the constructor. attr: Object The key pair of all 
the characteristics of the current node. It is recommended to use the setAttr 
() method to modify, rather than directly modify the object here. style: Object 
The value of all the keys of the current node. It is recommended to modify the 
setStyle () method, rather than directly modify the object here. event: Object 
All events of the current node are bound. Each event type corresponds
  to an event handler method. It is recommended to use the addEvent () / 
removeEvent () method to modify, rather than directly modify the object here. 
toJSON(): Object Returns a JSON object that describes the element’s node, 
such as: {ref: string, type: string, attr: Object, style: Object, event: Array 
(string), children: Array}. Comment class, inherited from NodeConstructornew 
Comment(value: string) Read-only member variables or methodsref, nextSibling, 
previousSibling, parentNode Inherited from Node. nodeType: number The number is 
always 8. type: string The type is always 'comment' value: string 
Consistent with the value in the constructor. toJSON(): Object Returns a JSON 
object describing the annotation node. For example: <! - value 
->.","type":"references"},{"title":"Text 
Style","path":"references/text-style.html","permalink":"https://weex.apache.org/references/text-style.html","text":"Text
 StyleText alike components share some common style rules. The text alike c
 omponents currently includes text and input. Properties color: <colors> 
this property set the foreground color of an component’s text content. 
font-size: <length> this property specifies the size of the font. 
font-style: <enum> normal | italic. This property lets you select italic 
or normal faces within a font-family. Default value is normal. 
font-weightv0.9+: values: normal, bold, 100, 200, 300, 400, 500, 600, 700, 800, 
900 normal is equal to 400, bold equel to 700 default value: normal apply to: 
<text>, <input> ios support showing 9 kind of font-weight. android 
support showing 2 kind of font-weight:400,700, other value will map to 400 or 
700 Some standard values like lighter, bolder, number unit are not supported. 
The effect not apply to all elements, just <text> and <input>. In 
another way, it’s not inherited. text-decoration: <enum> none | 
underline | line-through. This property is used to set the text formatting to 
underline o
 r line-through. The default value is none. text-align: <enum> left | 
center | right. This property describes how inline content like text is aligned 
in its parent component. The default value is left. font-family:<string> 
this property set the font-family of the text. This property doesn’t 
guarantee the given font will always be set to the text. If the specified font 
cannot be found at the device, a typeface fallback will occur and the default 
typeface will be load. The fallback mechanism may vary in different devices. 
text-overflow:<string> clip | ellipsis. This property determines how 
overflowed content that is not displayed is signaled to users. It can be 
clipped, display an ellipsis. The property color support multiple fomats of 
values, contains rgb, rgba, #fff, #ffffff, named-color. Example: .my-class 
{ color: red; }.my-class { color: #f00; }.my-class { 
color: #ff0000; }.my-class { color: rgb(255, 0, 0); }.my-class 
&#1
 23; color: rgba(255, 0, 0, 0.5); } Type of Style Value length: number 
followed by length unit px, px can be omitted. colors: support multiple formats 
of values, including rgb (rgb(255, 0, 0)), rgba (rgba(255, 0, 0, 0.5)), 
hexadecimal (#ff0000), short hexadecimal (#f00), named color (red). enumerated 
values: a limited number of string values. Note: The list of color 
keywords.","type":"references"},{"title":"CSS 
unit","path":"references/unit.html","permalink":"https://weex.apache.org/references/unit.html","text":"CSS
 unitWork in progresss.","type":"references"},{"title":"Weex 
Variable","path":"references/weex-variable.html","permalink":"https://weex.apache.org/references/weex-variable.html","text":"Weex
 instance variableEach Weex page has a separate weex variable, which exists in 
the JS context. They hold a single instance or method of the current Weex page. 
weex.config This variable contains all the environment information for the 
current Weex page, including not only: BundleUrl
 : string: The URL of the JS bundle. Env: Object: environment object. 
WeexVersion: string: Weex sdk version. AppName: string: application name. 
AppVersion: string: app version. Platform: string: platform information, that 
is iOS, Android or Web. OsVersion: string: system version. DeviceModel: string: 
device model (native application only). DeviceWidth: number: device width, 
default 750. DeviceHeight: number: device height. weex.requireModule(module: 
string): Object Get all the methods of a native module, such as: 
<template> <div><text>Hello World</text></div> 
</template> <script> var modal = weex.requireModule('modal') 
modal.toast({ message: 'I am a toast.', duration: 3 }) </script> 
weex.document: Document Returns the document object of the current Weex 
page.","type":"references"},{"title":"Web 
standards","path":"references/web-standards.html","permalink":"https://weex.apache.org/references/web-standards.html","text":"Web
 standardsHTMLr
 efs: https://www.advancedwebranking.com/html/ 2016-12-11 Overview percentage 
name supported 98.1% <head> - 97.9% <body> - 97.9% <html> - 
97% <title> - 93.9% <meta> - 89.9% <div> ✓ 89.6% <a> 
✓ 88.5% <script> ✓ 86.5% <link> - 86.3% <img> ✓ 81.5% 
<p> - (can be customized) 75.6% <span> - (can be customized) 73.8% 
<li> - (can be customized) 73.7% <ul> - (can be customized) 70.3% 
<br> ✕ 60.4% <style> ✓ 55.8% <h1> - (can be customized) 
52.7% <h2> - (can be customized) 48.4% <input> ✓ 46.9% 
<form> ✕ 44.3% <strong> - (can be customized) 43.1% <h3> - 
(can be customized) 30.9% <table> ✕ 30.3% <tr> ✕ 30.2% 
<td> ✕ Forms percentage name supported 49.5% <option> ✕ 30.2% 
<input> ✓ 16.6% > [type="hidden"] - 8% > 
[type="text"] ✓ 4.2% > [type="submit"] - 2% > 
[type="ch
 eckbox"] - (<switch>) 1.2% > [type="email"] ✓ 1.1% 
> [type="radio"] ✕ 0.9% > [type="image"] - 0.8% 
> [type="button"] - 0.6% > [type="search"] ✕ 0.6% 
> [type="password"] ✓ 0.1% > [type="tel"] ✓ 0.1% 
> [type="number"] ✓ 0% > [type="reset"] - 0% > 
[type="file"] ✕ 0% > [type="date"] ✓ 0% > 
[type="url"] ✓ 0% > [type="range"] ✕ 0% > 
[type="color"] ✕ 0% > [type="time"] ✓ 0% > 
[type="datetime-local"] ✕ 7.2% <label> - 6.1% <form> - 
3.7% <button> - (can be customized) 2.6% > [type="button"] - 
1.3% > [type="submit"] - 0% > [type="reset"] - 1.9% 
<select> ✕ 0.7% <textarea> ✓ 0.5% <fieldset> - 0.1% 
<optgroup> ✕ 0.1% <legend> - 0% <progress> ✕ 0% 
<datalis
 t> - 0% <output> - 0% <meter> - CSS Propertiesrefs: 
https://www.chromestatus.com/metrics/feature/popularity 2016-12-11 percentage 
name supported 90.5115% display ✕ flex only 89.8243% margin ✓ (not support 
combo) 88.7012% width ✓ 88.6468% overflow ✓ iOS only, hidden only for 
Android 88.6432% background-color ✓ 88.0803% height ✓ 87.7648% font-size 
✓ 87.3837% padding ✓ 87.2721% color ✓ 86.9788% text-align ✓ 86.6841% 
position ✓ relative by default, static not supported 86.6039% font-family ✓ 
86.5943% font-weight ✓ 85.0072% opacity ✓ 80.6911% max-width ✕ 79.4476% 
box-sizing ✕ border-box only 75.7623% max-height ✕ 74.9939% 
webkit-user-select ✕ 57.0292% align-items ✓ 56.8182% justify-content ✓ 
space-around not supported well in browser 50.5941% flex-direction ✓ 48.5052% 
border ✓ 47.5161% top ✓ 46.9136% background ✕ 46.1552% cursor ✕ 
46.1443% margin-left ✓ 46.0956% left ✓ 46.0848% text-decoration ✓ 
45.9575% float ✕ 45.
 8391% border-bottom ✓ 45.7639% padding-left ✓ 45.7128% margin-top ✓ 
45.7013% line-height ✓ 45.5836% background-image ✕ 45.0837% z-index ✕ 
45.0649% right ✓ 45.0516% margin-bottom ✓ 45.0459% white-space ✕ 44.8710% 
margin-right ✓ 44.8476% vertical-align ✕ 44.6306% padding-top ✓ 44.1466% 
border-radius ✓ 44.0136% border-top ✓ 43.9815% padding-bottom ✓ 43.9392% 
padding-right ✓ 43.8539% visibility ✕ 43.4306% background-position ✕ 
43.4098% background-repeat ✕ 43.0391% clear ✕ 42.9100% bottom ✓ 42.2092% 
content ✕ 42.0690% box-shadow ✕ 41.9004% border-color ✓ 41.7341% outline 
✕ 41.4297% border-right ✓ 41.2605% border-left ✓ 41.1127% min-height ✕ 
41.0736% font-style ✓ 41.0523% min-width ✕ 40.4298% list-style ✕ 39.7341% 
font ✕ 38.8999% background-size ✕ 38.7811% border-width ✓ 38.7718% 
border-collapse ✕ 37.8110% border-style ✓ 37.4962% text-overflow ✓ must 
work with lines 37.3471% text-transform ✕ 37.2154% transition âœ
 • 36.5155% overflow-y ✕ 36.3025% transform ✕ 36.2488% text-indent ✕ 
35.5075% text-shadow ✕ 34.7607% webkit-appearance ✕ 34.1925% 
list-style-type ✕ 34.0238% border-spacing ✕ 33.6664% word-wrap ✕ 31.9961% 
overflow-x ✕ 31.9922% zoom ✕ 31.2495% border-bottom-left-radius ✕ 
31.1306% pointer-events ✕ 31.1229% border-top-left-radius ✕ 30.2131% 
border-bottom-color ✓ 29.9608% border-top-color ✓ 29.4297% 
border-bottom-right-radius ✕ 29.2668% border-top-right-radius ✕ 28.6489% 
letter-spacing ✕ 27.8327% animation ✕ 26.6738% border-right-width ✓ 
26.0169% src ✕ 25.2661% clip ✕ 25.2512% webkit-font-smoothing ✕ 25.1971% 
border-bottom-width ✓ 25.0246% border-right-color ✓ 24.7790% direction ✕ 
24.4094% webkit-tap-highlight-color ✕ 23.9751% border-left-color ✓ 23.9321% 
border-top-width ✓ 23.7902% fill ✕ 23.2617% border-left-width ✓ 22.7278% 
table-layout ✕ 21.5766% word-break ✕ 20.4319% background-clip ✕ 19.3198% 
transform-origin ✕ 18
 .9233% filter ✕ 17.7879% resize ✕ 16.2501% flex ✕ 15.1656% font-variant 
✕ 14.9181% text-rendering ✕ 14.7125% webkit-filter ✕ 14.5263% 
transition-duration ✕ 14.3966% transition-property ✕ 14.2124% 
webkit-box-orient ✕ 13.5432% outline-offset ✕ 12.9300% 
transition-timing-function ✕ 12.2788% unicode-range ✕ 12.0880% word-spacing 
✕ 11.9124% quotes ✕ 11.6800% border-bottom-style ✓ 11.4263% 
webkit-background-clip ✕ 11.0070% flex-grow ✕ 10.5925% backface-visibility 
✕ 10.4417% animation-name ✕ 10.4302% stroke ✕ 10.4144% animation-duration 
✕ 10.2804% touch-action ✕ 9.9663% list-style-position ✕ 9.8662% order ✕ 
9.7770% outline-width ✕ 9.7504% transition-delay ✕ 9.4689% border-top-style 
✓ 9.3474% webkit-box-pack ✕ 9.3078% webkit-box-align ✕ 9.2375% 
page-break-inside ✕ 9.1898% webkit-line-clamp ✕ 8.9350% list-style-image 
✕ 8.8339% page-break-after ✕ 8.5735% speak ✕ 8.4754% unicode-bidi ✕ 
8.4307% animation-timing-function ✕ 8
 .1464% webkit-box-flex ✕ 8.0048% orphans ✕ 7.9947% widows ✕ 7.6671% 
flex-wrap ✓ not supported well in browser 7.5756% animation-fill-mode ✕ 
7.4163% animation-delay ✕ 7.3284% border-left-style ✓ 7.1586% outline-color 
✕ 6.9102% flex-shrink ✕ 6.7754% perspective ✕ 6.7748% border-right-style 
✓ 6.4619% outline-style ✕ 6.0382% animation-iteration-count ✕ 5.9838% 
background-origin ✕ 5.9714% fill-opacity ✕ 5.9357% will-change ✕ 5.3740% 
stroke-width ✕ 5.3172% transform-style ✕ 5.2608% overflow-wrap ✕ 5.1730% 
background-attachment ✕ 4.9039% counter-increment ✕ 4.5950% counter-reset 
✕ 4.5031% align-self ✕ 4.4109% webkit-box-ordinal-group ✕ 4.4046% 
webkit-animation-direction ✕ 3.7598% background-position-x ✕ 3.6867% 
border-image ✕ 3.6601% background-position-y ✕ 3.5749% webkit-user-drag ✕ 
3.3376% flex-basis ✕ 3.1840% align-content ✕ 3.1832% flex-flow ✕ 3.1774% 
image-rendering ✕ 3.0879% webkit-margin-start ✕ 2.9551% font-stretch
  ✕ 2.8934% empty-cells ✕ 2.7619% webkit-margin-after ✕ 2.7220% 
perspective-origin ✕ 2.6125% webkit-margin-end ✕ 2.6089% column-count ✕ 
2.5880% webkit-text-fill-color ✕ 2.5466% webkit-box-direction ✕ 2.4618% 
font-feature-settings ✕ 2.3959% webkit-mask-image ✕ 2.3431% 
webkit-padding-end ✕ 2.2555% stroke-dasharray ✕ 2.1788% user-select ✕ 
2.1679% object-fit ✕ 2.0643% column-gap ✕ 2.0459% text-size-adjust ✕ 
2.0253% caption-side ✕ 1.9695% stroke-dashoffset ✕ 1.7923% stroke-linecap 
✕ 1.7861% animation-direction ✕ 1.7559% webkit-font-feature-settings ✕ 
1.7404% stroke-opacity ✕ 1.5926% stroke-miterlimit ✕ 1.5786% fill-rule ✕ 
1.4859% webkit-user-modify ✕ 1.3439% webkit-border-image ✕ 1.3091% 
animation-play-state ✕ 1.2676% contain ✕ 1.2029% webkit-padding-start ✕ 
1.1840% webkit-margin-before ✕ 1.1269% page-break-before ✕ 1.1222% 
webkit-margin-top-collapse ✕ 1.0418% columns ✕ 1.0354% webkit-mask-size ✕ 
0.9650% border-image-slic
 e ✕ 0.9425% stop-color ✕ 0.9408% webkit-mask-repeat ✕ 0.9125% 
webkit-box-lines ✕ 0.8804% webkit-column-break-inside ✕ 0.8752% size ✕ 
0.8334% font-kerning ✕ 0.8034% stroke-linejoin ✕ 0.7869% tab-size ✕ 
0.7689% break-inside ✕ 0.7589% webkit-text-stroke-width ✕ 0.7353% 
column-width ✕ 0.6924% webkit-mask-position ✕ 0.6869% border-image-width 
✕ 0.6323% border-image-repeat ✕ 0.5994% border-image-outset ✕ 0.5885% all 
✕ 0.5859% webkit-text-stroke-color ✕ 0.5435% webkit-print-color-adjust ✕ 
0.5420% webkit-text-stroke ✕ 0.5195% writing-mode ✕ 0.4741% clip-rule ✕ 
0.4685% webkit-clip-path ✕ 0.4578% text-anchor ✕ 0.4535% shape-rendering 
✕ 0.4526% webkit-column-break-before ✕ 0.4494% clip-path ✕ 0.4452% 
webkit-mask ✕ 0.4393% mix-blend-mode ✕ 0.4166% text-align-last ✕ 0.4033% 
column-rule ✕ 0.3990% webkit-mask-box-image ✕ 0.3989% 
font-variant-ligatures ✕ 0.3881% column-fill ✕ 0.3865% webkit-line-break 
✕ 0.3857% border-image-sourc
 e ✕ 0.3528% stop-opacity ✕ 0.3075% webkit-perspective-origin-y ✕ 0.3054% 
webkit-perspective-origin-x ✕ 0.2994% webkit-writing-mode ✕ 0.2717% 
dominant-baseline ✕ 0.2634% column-rule-color ✕ 0.2586% 
webkit-box-decoration-break ✕ 0.2467% webkit-text-security ✕ 0.2374% 
webkit-background-origin ✕ 0.2146% font-variant-caps ✕ 0.2005% 
column-rule-style ✕ 0.1976% shape-outside ✕ 0.1971% webkit-padding-before 
✕ 0.1896% break-after ✕ 0.1782% webkit-padding-after ✕ 0.1774% 
text-orientation ✕ 0.1747% webkit-text-orientation ✕ 0.1655% mask ✕ 
0.1626% alignment-baseline ✕ 0.1572% page ✕ 0.1530% 
webkit-column-break-after ✕ 0.1521% webkit-box-reflect ✕ 0.1504% 
webkit-text-emphasis-color ✕ 0.1499% object-position ✕ 0.1470% break-before 
✕ 0.1455% webkit-margin-collapse ✕ 0.1452% baseline-shift ✕ 0.1451% 
hyphens ✕ 0.1309% rx ✕ 0.1304% ry ✕ 0.1256% background-blend-mode ✕ 
0.1136% font-variant-numeric ✕ 0.1135% background-repeat-x ✕ 0.112
 3% background-repeat-y ✕ 0.1086% webkit-text-emphasis ✕ 0.1058% 
webkit-rtl-ordering ✕ 0.1040% column-rule-width ✕ 0.1036% isolation ✕ 
0.1002% webkit-highlight ✕ 0.0843% webkit-transform-origin-y ✕ 0.0786% 
webkit-transform-origin-x ✕ 0.0770% webkit-app-region ✕ 0.0685% column-span 
✕ 0.0653% r ✕ 0.0611% y ✕ 0.0602% x ✕ 0.0555% 
webkit-border-vertical-spacing ✕ 0.0545% webkit-border-horizontal-spacing ✕ 
0.0542% webkit-border-start-width ✕ 0.0450% webkit-border-start-color ✕ 
0.0424% webkit-border-after-width ✕ 0.0424% webkit-border-before-width ✕ 
0.0423% webkit-border-end-width ✕ 0.0351% marker ✕ 0.0349% 
webkit-border-end-color ✕ 0.0347% webkit-border-after-color ✕ 0.0347% 
webkit-border-before-color ✕ 0.0342% mask-type ✕ 0.0328% 
color-interpolation-filters ✕ 0.0325% webkit-border-end ✕ 0.0319% 
vector-effect ✕ 0.0307% color-rendering ✕ CSS Units and Valuesrefs: 
https://drafts.csswg.org/css-values/ 2016-12-11 Textual pre-defined key
 words CSS-wide keywords initial inherit unset <custom-ident>: 
author-defined identifiers ✓ <string>: quoted strings ("xxx") 
<url>: resourec locators (url()) Numeric <integer> ✓ 
<number> ✓ <percentage> Length <length> relative 
font-relative em ex ch ic rem ✓🔧 viewport-percentage vw ✓🔧 vh ✓🔧 
vi vb vmin ✓🔧 vmax ✓🔧 absolute cm ✓🔧 mm ✓🔧 Q ✓🔧 in 
✓🔧 pc ✓🔧 pt ✓🔧 px autofixed to number Quantities <angle> 
deg grad rad turn <time> s ms <frequency> Hz kHz <resolution> 
dpi dpcm dppx Elsewhere <color> ✓ <image> <position> 
Functional calc() toggle() attr() JS APIsrefs: 
https://www.w3.org/standards/techs/js 2016-12-11 Completed WorkStandards last 
update spec supported 2016-11-17 Media Source Extensions™ - (media related) 
2016-11-08 Geolocation API Specification 2nd Edition ✕ developing 2016-10-27 
Pointer Lock - 2016-10-18 Vibration API (Sec
 ond Edition) ✕ 2016-04-19 Web Storage (Second Edition) ✓ async storage 
module 2015-10-22 Web Notifications ✕ 2015-05-19 HTML5 Web Messaging ✕ 
BroadcastChannel developing 2015-02-24 Pointer Events - 2015-02-10 Vibration 
API ✕ 2015-02-03 Server-Sent Events ✕ 2015-01-08 Indexed Database API ✕ 
2014-03-13 Metadata API for Media Resources 1.0 - (media related) 2014-02-11 
Progress Events ✕ 2014-01-16 JSON-LD 1.0 Processing Algorithms and API - 
2013-12-12 Performance Timeline - (perf related) 2013-12-12 User Timing - (perf 
related) 2013-10-31 Widget Interface - 2013-10-29 Page Visibility (Second 
Edition) ✕ onviewappear/onviewdisappear 2013-10-10 Touch Events ✕ 
2013-02-21 Selectors API Level 1 - 2012-12-17 Navigation Timing - (perf 
related) 2012-12-17 High Resolution Time - (perf related) 2008-12-22 Element 
Traversal Specification - DraftsProposed Recommendations last update spec 
supported 2016-09-15 WebIDL Level 1 - Candidate Recommendations last update 
spec supported 20
 16-12-08 Performance Timeline Level 2 - (perf related) 2016-11-22 Page 
Visibility Level 2 ✕ onviewappear/onviewdisappear 2016-11-01 High Resolution 
Time Level 2 - (perf related) 2016-08-18 DeviceOrientation Event Specification 
✕ 2016-07-21 Resource Timing Level 1 - (perf related) 2016-07-14 Presentation 
API - 2016-07-07 Battery Status API ✕ 2016-07-05 Encrypted Media Extensions - 
2016-05-19 Media Capture and Streams - (media related) 2014-12-11 Web 
Cryptography API - 2014-09-09 HTML Media Capture - (media related) 2012-09-20 
The WebSocket API ✕ Last Call Drafts last update spec supported 2011-12-01 
Geolocation API Specification Level 2 ✕ Other Working Drafts last update spec 
supported 2016-12-09 MediaStream Image Capture - (media related) 2016-12-06 
MediaStream Recording - (media related) 2016-12-06 Selection API ✕ 2016-12-05 
Input Events ✕ 2016-12-02 Gamepad - 2016-11-29 WebDriver - 2016-11-24 WebRTC 
1.0: Real-time Communication Between Browsers ✕ 2016-11-22 Pointer
  Lock 2.0 - 2016-11-07 Remote Playback API - (media related) 2016-11-03 
Resource Timing Level 2 - (perf related) 2016-11-02 Audio Output Devices API - 
(media related) 2016-11-01 Indexed Database API 2.0 ✕ 2016-11-01 User Timing 
Level 2 - (perf related) 2016-10-31 The Screen Orientation API ✕ 2016-10-31 
High Resolution Time Level 3 - (perf related) 2016-10-24 UI Events 
KeyboardEvent code Values - 2016-10-24 UI Events KeyboardEvent key Values - 
2016-10-11 Service Workers 1 ✕ 2016-09-21 Identifiers for WebRTC’s 
Statistics API - 2016-09-13 Accelerometer Sensor ✕ 2016-09-13 Gyroscope 
Sensor ✕ 2016-09-13 Magnetometer Sensor ✕ 2016-08-30 Ambient Light Sensor 
✕ 2016-08-30 Media Capture from DOM Elements - (media related) 2016-08-30 
Generic Sensor API ✕ 2016-08-03 Wake Lock API ✕ 2016-07-19 Proximity Sensor 
✕ 2016-07-19 Pointer Events - Level 2 - 2016-07-14 Screen Capture ✕ 
2016-07-12 Media Capture Depth Stream Extensions - (media related) 2016-05-17 
Cooperative Sched
 uling of Background Tasks ✕ 2016-04-22 Navigation Timing Level 2 - (perf 
related) 2016-04-03 Clipboard API and events ✕ clipboard module 2015-12-15 
Push API ✕ 2015-12-08 Web Audio API - (media related) 2015-10-15 FindText API 
- 2015-09-24 Web Workers ✕ 2015-04-21 File API ✕ 2014-02-20 Network Service 
Discovery ✕ 2012-03-06 MediaStream Capture Scenarios - (media related) 
2011-12-15 Audio Processing API - (media 
related)","type":"references"},{"title":"如何参与社区","path":"cn/guide/contributing.html","permalink":"https://weex.apache.org/cn/guide/contributing.html","text":"如何参与社区åŠ
 å…¥ Weex 邮件列表 (Mailing List)在 Weex 
官方社区所有的信息都会汇聚于邮件列表。订阅
开发邮件列表的方式是发送邮件到 
[email protected] 然后你的邮箱会收到一封来自 
Apache 的回信 (英文),把 Apache 
的这封回信再次回复过去,即可完成订阅。 
这里需要强调的是 Apache 是一个面向å…
 ¨çƒçš„å…
¨è‹±æ–‡çš„社区,所以我们希望您能够用英文在邮件列表中跟大家交流。
 
如果您确实对使用英文存在很大的疑虑或困惑,我们也非常欢迎大家来中文问答平台
 SegmentFault 提问,这里有非常多热心的开发者
一起讨论和解答 Weex 相关的问题。 
使用邮件列表的另外一个好处是它可以方便大家随时查阅
之前的邮件记录: 
http://mail-archives.apache.org/mod_mbox/incubator-weex-dev/ 
如果您对邮件列表中的内容已经不再感å…
´è¶£ï¼Œè¿™é‡Œä¹Ÿæœ‰é€€è®¢é‚®ä»¶åˆ—表的方法: 发送邮件至 
[email protected] å¹¶æ 
¹æ®å›žä¿¡çš„æç¤ºè¿›è¡ŒäºŒæ¬¡å›žå¤ç¡®è®¤ï¼Œå®Œæˆé€€è®¢ã€‚ 除了开发 
(dev) 邮件列表,我们还有另外几个的邮件列表供大家查阅
:http://mail-archives.apache.org/mod_mbox/#weex.incubator 分支管理 
(英)master ↑dev <--- PR(hotfix/typo/3rd-PR) ↑ 
PR{domain}-feature-{date} master branch master is the latest
  (pre-)release branch. dev branch dev is the stable developing branch. It’s 
RECOMMENDED to commit hotfix (like typo) or feature PR to dev. 
{domain}-feature-{date} branch The branch for a developing iteration, e.g. 
android-feature-20160607 is an android developing iteration which is done at 
2016.06.07. {domain} consists of android, ios, jsfm and html5. DO NOT commit 
any PR to such a branch. 
分支命名{module}-{action}-{shortName} 
{module}, see commit log module {action} feature: checkout from {module} and 
merge to {module} later. If {module} not exists, merge to dev bugfix: like 
feature, for bugfix only hotfix: checkout from master or release tag, merge to 
master and {module} later. If {module} not exists, merge to dev for example: 
android-bugfix-memory jsfm-feature-communication android-hotfix-compute-layout 
提交日志格式 (英){action} [{module}] 
{description} {action} + add * update or bugfix - remove {module} Inc
 luding: android, ios, jsfm, html5, component, doc, website, example, test, all 
{description} Just make it as clear and simple as possible. for example: + 
[android] close #123, add refreshing for WebView * [doc] fix #123, update video 
auto-play property - [example] remove abc 发送 Pull Request (英)You can 
create pull requests in GitHub. First we suggest you have some discussion with 
the community (commonly in our mailing list) before you code. Fork repo from 
https://github.com/apache/incubator-weex/ Finish the job you want to do. Create 
a pull request. 编码规范 (英)Objective-C Tabs for indentation(not spaces) 
* operator goes with the variable name (e.g. Type *variable;) Function 
definitions: place each brace on its own line. Other braces: place the open 
brace on the line preceding the code block; place the close brace on its own 
line. Use #pragma marks to categorize methods into functional groupings and 
protocol implementations Follow other guidelines on GitHub Objective-C St
 yle Guide Java & Android Use Google Java Style as basic guidelines of java 
code. Follow AOSP Code Style for rest of android related code 
style.","type":"guide"},{"title":"集成 Weex 
到已有应用","path":"cn/guide/integrate-to-your-app.html","permalink":"https://weex.apache.org/cn/guide/integrate-to-your-app.html","text":"集成
 Weex 到已有应用集成到 Android注:以下文档都是假设您已经å…
·å¤‡ä¸€å®šçš„Android开发经验。 Android 集成有两种方式 源ç 
ä¾èµ–:能够快速使用WEEX最新功能,可以æ 
¹æ®è‡ªå·±é¡¹ç›®çš„特性进行相关改进。 SDK依赖:WEEX 会在jcenter 
定期发布稳定版本。jcenter注:国内可能需要翻墙 前期准备 
已经安装了JDK version>=1.7 并配置了环境变量 已经安装Android 
SDK 并配置环境变量。 Android SDK version 23 (compileSdkVersion in 
build.gradle) SDK build tools version 23.0.1 (buildToolsVersion in 
build.gradle) Android Support Repository >= 17 (for Android Support Library) 
 快速接入如果你是尝鲜或者
对稳定性要求比较高可以使用依赖SDK的方式。步骤如下: 
创建Android工程,没有什么要特别说明的,按照你的习惯来。 
修改build.gradle 加入如下基础依赖 compile 
'com.android.support:recyclerview-v7:23.1.1'compile 
'com.android.support:support-v4:23.1.1'compile 
'com.android.support:appcompat-v7:23.1.1'compile 
'com.alibaba:fastjson:1.1.46.android'compile 
'com.taobao.android:weex_sdk:0.5.1@aar' 注:版本可以高不可以低。 代ç 
å®žçŽ°æ³¨:附录中有完整代码地址 
实现图片下载接口,初始化时设置。 package com.weex.sample;import 
android.widget.ImageView;import 
com.taobao.weex.adapter.IWXImgLoaderAdapter;import 
com.taobao.weex.common.WXImageStrategy;import 
com.taobao.weex.dom.WXImageQuality;/** * Created by lixinke on 16/6/1. */public 
class ImageAdapter implements IWXImgLoaderAdapter { @Override public void 
setImage(String url, ImageView view, WXImageQuality quality, WXImageSt
 rategy strategy) { //实现你自己的图片下载,否则图片无
法显示。 }} 初始化 package com.weex.sample;import 
android.app.Application;import com.taobao.weex.InitConfig;import 
com.taobao.weex.WXSDKEngine;/** * 
注意要在Manifest中设置android:name=\".WXApplication\" * 
要实现ImageAdapter 否则图片不能下载 * gradle 中一定要添加
一些依赖,否则初始化会失败。 * compile 
'com.android.support:recyclerview-v7:23.1.1' * compile 
'com.android.support:support-v4:23.1.1' * compile 
'com.android.support:appcompat-v7:23.1.1' * compile 
'com.alibaba:fastjson:1.1.45' */public class WXApplication extends Application 
{ @Override public void onCreate() { super.onCreate(); InitConfig 
config=new InitConfig.Builder().setImgAdapter(new ImageAdapter()).build(); 
WXSDKEngine.initialize(this,config); }} 开始渲染 package 
com.weex.sample;import android.os.Bundle;import 
android.support.v7.app.AppCompatActivity;import android.view.
 View;import com.taobao.weex.IWXRenderListener;import 
com.taobao.weex.WXSDKInstance;import 
com.taobao.weex.common.WXRenderStrategy;import 
com.taobao.weex.utils.WXFileUtils;public class MainActivity extends 
AppCompatActivity implements IWXRenderListener { WXSDKInstance 
mWXSDKInstance; @Override protected void onCreate(Bundle savedInstanceState) 
{ super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); mWXSDKInstance = new 
WXSDKInstance(this); mWXSDKInstance.registerRenderListener(this); /** * 
WXSample 可以替换成自定义的字符串,针对埋点有效。 * 
template 是.we transform 后的 js文件。 * option 可以为空,或者
通过option传入 js需要的参数。例如bundle js的地址等。 * 
jsonInitData 可以为空。 * width 为-1 默认全屏,可以自己定制。 
* height =-1 默认全屏,可以自己定制。 */ 
mWXSDKInstance.render(\"WXSample\", WXFileUtils.loadFileContent(\"hello.js\", 
this), null, null, -1, -1, WXRenderStrate
 gy.APPEND_ASYNC); } @Override public void onViewCreated(WXSDKInstance 
instance, View view) { setContentView(view); } @Override public void 
onRenderSuccess(WXSDKInstance instance, int width, int height) { } 
@Override public void onRefreshSuccess(WXSDKInstance instance, int width, int 
height) { } @Override public void onException(WXSDKInstance instance, 
String errCode, String msg) { } @Override protected void onResume() 
{ super.onResume(); if(mWXSDKInstance!=null){ 
mWXSDKInstance.onActivityResume(); } } @Override protected void 
onPause() { super.onPause(); if(mWXSDKInstance!=null){ 
mWXSDKInstance.onActivityPause(); } } @Override protected void 
onStop() { super.onStop(); if(mWXSDKInstance!=null){ 
mWXSDKInstance.onActivityStop(); } } @Override protected void 
onDestroy() { super.onDestroy(); if(mWXSDKInstance!=null){ 
mWXSDKInstance.onActivityDestroy(); } }} æº
 ç ä¾èµ–(IDE Android Studio) 下载源码 git clone 
https://github.com/alibaba/weex 创建 Android 工程。 通过以下路径引å…
¥ SDK ModuleFile->New-Import Module-> 选择 WEEX SDK 
Module(weex/android/sdk) -> Finish app 的 build.gradle 中添加
如下依赖:compile project(':weex_sdk') å…
¶ä»–设置请参考上面快速接入 附录WXSample地址 
https://github.com/xkli/WXSample.git 集成到 iOS通过cocoaPods 集成 Weex 
iOS SDK到你的项目首先假设你已经完成了安装 iOS 开发环境 和 
CocoaPods 第一步:添加依赖导入 Weex iOS SDK 到你已有的项目, 
如果没有,可以参考新建项目在继续下面内容之前,确保你
已有的项目目录有名称为 Podfile 
文件,如果没有,创建一个,用文本编辑器打开 集成 
framework WeexSDK 在 cocoaPods 上最新版本 可以在这获取 在 Podfile 
文件中添加如下内容 source 
'[email protected]:CocoaPods/Specs.git' target 'YourTarget' 
do plat
 form :ios, '7.0' pod 'WeexSDK', '0.9.5' ## 
建议使用WeexSDK新版本 end 源码集成 首先 拷贝 ios/sdk 目录到你
已有项目目录 (此处以拷贝到你已有项目的æ 
¹ç›®å½•为例子),然后在 Podfile 文件中添加 source 
'[email protected]:CocoaPods/Specs.git' target 'YourTarget' 
do platform :ios, '7.0' pod 'WeexSDK', 
:path=>'./sdk/' end 第二步:安装
依赖打开命令行,切换到你已有项目 Podfile 
这个文件存在的目录,执行 pod 
install,没有出现任何错误表示已经完成环境配置。 
第三步:初始化 Weex 环境在 AppDelegate.m 
文件中做初始化操作,一般会在 didFinishLaunchingWithOptions 
方法中如下添加。 //business configuration[WXAppConfiguration 
setAppGroup:@"AliApp"];[WXAppConfiguration 
setAppName:@"WeexDemo"];[WXAppConfiguration 
setAppVersion:@"1.0.0"];//init sdk enviroment [WXSDKEngine ini
 tSDKEnviroment];//register custom module and component,optional[WXSDKEngine 
registerComponent:@"MyView" withClass:[MyViewComponent 
class]];[WXSDKEngine registerModule:@"event" withClass:[WXEventModule 
class]];//register the implementation of protocol, optional[WXSDKEngine 
registerHandler:[WXNavigationDefaultImpl new] 
withProtocol:@protocol(WXNavigationProtocol)];//set the log level [WXLog 
setLogLevel: WXLogLevelAll]; 第四步:渲染 weex InstanceWeex 
支持整体页面渲染和部分渲染两种模式,你需要做的事情
是用指定的 URL 渲染 Weex 的 view,然后添加
到它的父容器上,父容器一般都是 viewController。 #import 
<WeexSDK/WXSDKInstance.h>- (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]; [wea
 kSelf.view addSubview:weakSelf.weexView]; }; _instance.onFailed = 
^(NSError *error) { //process failure }; _instance.renderFinish = ^ 
(UIView *view) { //process renderFinish }; [_instance 
renderWithURL:self.url options:@{@"bundleUrl":[self.url 
absoluteString]} data:nil];} WXSDKInstance 
是很重要的一个类,提供了基础的方法和一些回调,如 
renderWithURL, onCreate, onFailed 等,可以参见 WXSDKInstance.h 
的声明。 第五步:销毁 Weex Instance 在 viewController 的 dealloc 
阶段 销毁掉 Weex instance,释放内存,避免造成内存泄露。 - 
(void)dealloc{ [_instance destroyInstance];} 导入 Weex SDK 
framework 到工程 可以通过源码编译出 Weex SDK,可以在新的 
feature 或者 bugfix 分支,尝试最新的 feature。 
参考此处直接导入 
weexSDK。","type":"guide"},{"title":"搭建开发环境","path":"cn/guide/set-up-env.html","permalink":"https://weex.apache.org/cn/gu
 ide/set-up-env.html","text":"搭建开发环境使用 dotWe 对 Weex 
尝鲜是一个不错的选择,但如果你想更专业的开发 Weex, 
dotWe 就不怎么够用了。本节会教你
如何搭建本地开发环境进行 Weex 开发。 第一步:安装
依赖Weex 官方提供了 weex-toolkit 的脚手架工具来辅
助开发和调试。首先,你需要 Node.js 和 Weex CLi。 安装 Node.js 
方式多种多样,最简单的方式是在 Node.js 官网 
下载可执行程序直接安装即可。 对于 Mac,可以使用 Homebrew 
进行安装: brew install node 更多安装方式可参考 Node.js 
官方信息 安装完成后,可以使用以下命令检测是否安装
成功: $ node -vv6.3.1$ npm -v3.10.3 通常,安装了 Node.js 环境,npm 
包管理工具也随之安装了。因此,直接使用 npm 来安装 
weex-toolkit。 npm 是一个 JavaScript 包管理工具,它可以让开发者
轻松共享和重用代码。Weex 很多依赖来自社区,同样,Weex 
也å°
 †å¾ˆå¤šå·¥å…·å‘布到社区方便开发者使用。 注意: weex-toolkit 在 
1.0.1 之后才支持初始化 Vue 
项目,使用前请确认版本是否正确。 $ npm install -g weex-toolkit$ 
weex -vv1.0.3weex-builder : v0.2.4weex-previewer : v1.3.4 国内开发者
可以考虑使用淘宝的 npm 镜像 —— cnpm 安装 weex-toolkit $ npm 
install -g cnpm --registry=https://registry.npm.taobao.org$ cnpm install -g 
weex-toolkit 提示: 如果提示权限错误(permission error),使用 
sudo 关键字进行安装 $ sudo cnpm install -g weex-toolkit 安装
结束后你可以直接使用 weex 命令验证是否安装
成功,它会显示 weex 命令行工具各参数: 
第二步:初始化然后初始化 Weex 项目: $ weex init awesome-project 
执行完命令后,在 awesome-project 目录中就创建了一个使用 Weex 
和 Vue 的模板项目。 第三步:开发之后我们进å…
¥é¡¹ç›®æ‰€åœ¨è·¯å¾„,weex-toolkit 已经为我们生成了æ 
‡å‡†é¡¹ç›®ç»“构。 在 package.
 json 中,已经配置好了几个常用的 npm script,分别是: build: 
源码打包,生成 JS Bundle dev: webpack watch 模式,方便开发 serve: 
开启静态服务器 debug: 调试模式 我们先通过 npm install 安装
项目依赖。之后运行 npm run dev 和 npm run serve 开启watch 
模式和静态服务器。 然后我们打开浏览器,进入 
http://localhost:8080/index.html 即可看到 weex h5 页面。 
初始化时已经为我们创建了基本的示例,我们可以在 
src/foo.vue 中查看。 代码如下所示: <template> <div 
class=\"wrapper\"> <text class=\"weex\">Hello Weex !</text> 
<text class=\"vue\">Hello Vue !</text> 
</div></template><style scoped> .wrapper { 
flex-direction: column; justify-content: center; } .weex { font-size: 
60px; text-align: center; color: #1B90F7; } .vue { font-size: 60px; 
text-align: center; margin-top: 30px; color: #41B883; }</style&g
 t; 关于 Weex 语法部分,你可以直接参考 Vue 
Guide,这里不再重复介绍。如果您想了解有关技术详情
的更多信息,请继续阅读下一节。并且不要忘记在 dotWe 
写代ç 
å¹¶éšæ—¶é¢„览。","type":"guide"},{"title":"颜色名称列表","path":"cn/references/color-names.html","permalink":"https://weex.apache.org/cn/references/color-names.html","text":"Weex
 支持的所有颜色名称基础颜色关键词: 颜色名 十六进制RGB值 
black(黑) #000000 silver(银) #C0C0C0 gray(灰) #808080 white(白) #FFFFFF 
maroon(褐紫红) #800000 red(红) #FF0000 purple(紫) #800080 fuchsia(晚樱) 
#FF00FF green(绿) #008000 lime(石灰) #00FF00 olive(橄榄) #808000 
yellow(黄) #FFFF00 navy(海军蓝) #000080 blue(蓝) #0000FF teal(水鸭) 
#008080 aqua(水蓝) #00FFFF 扩展颜色关键词: 颜色名 十å…
­è¿›åˆ¶RGB值 aliceblue #F0F8FF antiquewhite #FAEBD7 aqua #00FFFF aquamarine 
#7FFFD4 azure #F0FFFF beige #F5F5DC bisque #FFE4C4 black #000000 blanchedalmo
 nd #FFEBCD blue #0000FF blueviolet #8A2BE2 brown #A52A2A burlywood #DEB887 
cadetblue #5F9EA0 chartreuse #7FFF00 chocolate #D2691E coral #FF7F50 
cornflowerblue #6495ED cornsilk #FFF8DC crimson #DC143C cyan #00FFFF darkblue 
#00008B darkcyan #008B8B darkgoldenrod #B8860B darkgray #A9A9A9 darkgreen 
#006400 darkgrey 

<TRUNCATED>

Reply via email to