Currently, in both Vue [1] and Rax [2] there are some code for generating 
document object, instance config and function to require native modules etc. I 
think they could be included in shared JS runtime code and be executed to 
generate a `weex` variable before each creating the instance by a certain JS 
Framework.

So I suggest when `global.createInstance` called from native [3], We can 
generate a `weex` variable besides detecting the JS framework this instance 
uses by default. And it has some properties below:

* `weex.requireModule(name)`: require a native module by name.
* `weex.requireFramework(name)`: create a framework by name when first call, 
and return it.
* `weex.config`: which includes `bundleUrl`, `bundleVersion`, `WXEnvironment` 
...
* `weex.document`: this `Document` instance.
* `weex.unit`: supported CSS units and values, for example: 
`weex.unit.rgba(r,g,b,a)`.

At the same time, we have an `env` object to pass into JS framework for init 
this Weex page:

* `info`: kv-pairs from bundle header comment. for example: `{ framework, 
version, ... }`.
* `config`: just `weex.config`.
* `callbacks`: CallbackManager instance for this Weex page.
* `created`: the timestamp this Weex page created.
* `variables`: all instance variables and service variables injected from JS 
Services

Thanks.

[1] 
https://github.com/vuejs/vue/blob/dev/src/platforms/weex/framework.js#L87:L93
[2] 
https://github.com/alibaba/rax/blob/master/packages/weex-rax-framework/src/index.js#L159-L337
[3] https://github.com/alibaba/weex/blob/dev/html5/runtime/init.js#L51:L91

Jinjiang

Reply via email to