uknownothingsnow / jsbridge Goto Github PK
View Code? Open in Web Editor NEWandroid java and javascript bridge, inspired by wechat webview jsbridge
android java and javascript bridge, inspired by wechat webview jsbridge
请问,这个库需要混淆吗?混淆规则是什么样的呢?
javascript not corresponding to this method is called
你好,Android 4.4以下,设置iframe的src, 但是webviewclient 的shouldOverrideUrlLoading不会触发啊,这样整个框架就没法用了。请问有什么解决办法吗
IF Js data contains "%"
in BridgeWebView BridgeWebViewClient
method URLDecoder.decode(url, "UTF-8");
statement will make app crash
org.json.JSONException: Unterminated object at character 51 of [{"responseId":"JAVA_CB_4_2099","responseData":"{"isCanBuy":false,"tempOrderVO":{"orderStoreViewList":[{"goodsAmount":158,"baseGoodsAmount":258,"oriGoodsAmount":158,"goodsViewList":[{"id":287001,"goodsPrice":14,"basePrice":24,"storeId":1000},{"id":287015,"goodsPrice":16,"basePrice":26,"storeId":1000}],"storeId":"1000","orderAmount":158,"baseOrderAmount":258,"oriOrderAmount":158,"discountAmount":100}],"allOrderAmount":"158.00","allBaseOrderAmount":"258.00","allOriOrderAmount":"158.00","discountAmount":"100.00"}}"}]
在解析的时候出错。
Android4.4以上版本正常,4.4一下版本出错。
如果可以的话 可以改成中英文都能够支持的吗 谢谢
I/Web Console: {"data":"eeoioieoirpwipeiepwoie","handlerName":"functionInJs","callbackId":"JAVA_CB_1_4158"} at null:1
I/Web Console: WebViewJavascriptBridge: WARNING: javascript handler threw. at null:1
这是什么原因?
Hi, I would like to use your open source code, please provide Licence or NOTICE file in your source code, so that I can include it when I distribute the binary.
Thanks
在Android6.0系统的手机上无法显示页面,在6.0以下没有问题,
求大神帮忙
你好,我是新人,想问一下我的html怎么加载WebViewJavascriptBridge.js文件呢?WebViewJavascriptBridge.js在android端。即我的app需要加载任意html页面,那么html中怎么识别WebViewJavascriptBridge呢?谢谢哈~
js 发送消息给java 为什么不直接发送? 而是通知java 有消息 , 然后再来取消息呢?
推荐建立与android logcat 沟通的方法 方便日志调试 谢谢...
由于项目需求会在webview加载开始和加载结束失败等会处理一些逻辑数据与界面显示,建议楼主可以写一些接口回调一些webviewclient里面的一些方法,
我在这里想做一下intent传递,到另一个activity中,去执行 function.onCallBack("aa")回调,所有我要做CallBackFunction的序列化,但是我把所有没有进行序列化的类都进行了序列化,但是还是不行能帮忙看一下吗
`public class ChangeViewRegisterhandle extends BaseRegisterHandle implements Serializable {
/打开一个新模态/
webview.registerHandler("present", new BridgeHandler() {
@OverRide
public void handler(String data, CallBackFunction function) {
try {
String url = JsonUtils.getJSonString(data, "url");
Intent intent = new Intent(getHfaxFragment().getActivity(), HfaxActivity.class);
intent.putExtra("url", url);
if (function != null) {
// 这里进行CallBackFunction的序列化
callBack = new HfaxSerializableCallBack();
callBack.setCallBack(function);
Bundle bundle = new Bundle();
bundle.putSerializable(HfaxConstant.HFAX_PRESENTCALLBACK, callBack);
intent.putExtras(bundle);
}
getHfaxFragment().getActivity().startActivity(intent);
} catch (JSONException e) {
e.printStackTrace();
LogUtils.v("tag", getClass().getSimpleName() + " json解析失败……");
}
}
});
}
// 这是序列化类
public class HfaxSerializableCallBack implements Serializable {
private static final long serialVersionUID = 2L;
private CallBackFunction callBackFunction;
public CallBackFunction getCallBack() {
return callBackFunction;
}
public void setCallBack(CallBackFunction callBackFunction) {
this.callBackFunction = callBackFunction;
}
}
`
W/System.err: java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.hfax.hfaxsdk.tools.HfaxSerializableCallBack)
W/System.err: at android.os.Parcel.writeSerializable(Parcel.java:1468)
W/System.err: at android.os.Parcel.writeValue(Parcel.java:1416)
W/System.err: at android.os.Parcel.writeArrayMapInternal(Parcel.java:686)
W/System.err: at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1330)
W/System.err: at android.os.Bundle.writeToParcel(Bundle.java:1079)
W/System.err: at android.os.Parcel.writeBundle(Parcel.java:711)
W/System.err: at android.content.Intent.writeToParcel(Intent.java:7797)
W/System.err: at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:2642)
W/System.err: at android.app.Instrumentation.execStartActivity(Instrumentation.java:1509)
W/System.err: at android.app.Activity.startActivityForResult(Activity.java:3993)
W/System.err: at android.app.Activity.startActivityForResult(Activity.java:3954)
W/System.err: at android.app.Activity.startActivity(Activity.java:4277)
W/System.err: at android.app.Activity.startActivity(Activity.java:4245)
W/System.err: at com.hfax.hfaxsdk.register.ChangeViewRegisterhandle$1.handler(ChangeViewRegisterhandle.java:60)
W/System.err: at com.hfax.hfaxsdk.jsbridge.BridgeWebView$1.onCallBack(BridgeWebView.java:191)
W/System.err: at com.hfax.hfaxsdk.jsbridge.BridgeWebView.handlerReturnData(BridgeWebView.java:85)
W/System.err: at com.hfax.hfaxsdk.jsbridge.BridgeWebViewClient.shouldOverrideUrlLoading(BridgeWebViewClient.java:30)
W/System.err: at com.android.webview.chromium.WebViewContentsClientAdapter.shouldOverrideUrlLoading(WebViewContentsClientAdapter.java:327)
W/System.err: at org.chromium.android_webview.AwContentsClientBridge.shouldOverrideUrlLoading(AwContentsClientBridge.java:266)
W/System.err: at org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(Native Method)
W/System.err: at org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:37)
W/System.err: at android.os.Handler.dispatchMessage(Handler.java:102)
W/System.err: at android.os.Looper.loop(Looper.java:148)
W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5458)
W/System.err: at java.lang.reflect.Method.invoke(Native Method)
W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:738)
W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628)
W/System.err: Caused by: java.io.NotSerializableException: com.hfax.hfaxsdk.jsbridge.BridgeWebView$1$1
W/System.err: at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1344)
W/System.err: at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1651)
W/System.err: at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1497)
W/System.err: at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1461)
W/System.err: at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:959)
W/System.err: at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:360)
W/System.err: at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1054)
W/System.err: at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1384)
W/System.err: at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1651)
W/System.err: at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1497)
W/System.err: at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1461)
W/System.err: at android.os.Parcel.writeSerializable(Parcel.java:1463)
W/System.err: ... 26 more
我的问题是这样的.
Activity1里面用webview.loadDataWithBaseURL方式加载页面,然后改页面里有另外的url.
我们的需求是点击内部url时跳转到Activity2,该Activity2里面也有一个BridgeWebView, BridgeWebView.loadUrl(url);的方式将改url加载出来.
问题是:
当Activity2加载url时,Activity1里面的内容也被重新加载为Activity1里的url的内容.
求大神指教该问题怎么破呢?期待回复,提前感谢!
如此,会导致传递带/数据时出现问题,比如传递个url神马的就躺坑了
首先JS调用安卓中的方法 安卓开始进行耗时操作 如果在子线程中 进行回调传值 JS将不能接收到...
function.onCallBack("安卓的耗时任务完成"); 在android的工作线程中调用 JS 将不能收到传递过去的值。请问如果进行操作...
Hi I am trying to store the callback function as a object and wanted to call onCallback() later when event occurs. When i am calling callback.OnCallback(), it is not hitting the JS callback method. Can you please help me with this. Thanks in advance.
function.onCallBack(“这是字符串”); 我传递一个json数据,js端接收到的json内容被作为responseData的value。 并自动加入转义字符,能不能和ios的开源项目一样可以传递自己的jsonObject?
the function choose file work well in android 4.2 and lower version.but when I install demo into android 4.4 or 5.0 machine,it can not work. how to make this function work well in upper android version?
如果native经过jsBridge传递给js的数据中有”%5C“,会报illegal token
String nativeToJsStr = "\"http://math.zuoyebao.net/latex/png?tex=%5Cunderset%7B%5Cbullet%7D%7B1%7D2\"";
每次进来首先会对url encode,若url的前缀不是要拦截的,或url参数里有特殊的字符,此时会将url截断,这里其实没必要encode
你好,我将你的这个示例在手机上安装后,有点问题:
//send message to native
window.WebViewJavascriptBridge.send(
data
, function(responseData) {
document.getElementById("show").innerHTML = "repsonseData from java, data = " + responseData
}
);//call native method
window.WebViewJavascriptBridge.callHandler(
'submitFromWeb'
, {'param': str1}
, function(responseData) {
document.getElementById("show").innerHTML = "send get responseData from java, data = " + responseData
}
);
这两个方法,java都无法收到调用。
bridge.registerHandler("functionInJs", function(data, responseCallback) {
document.getElementById("show").innerHTML = ("data from Java: = " + data);
var responseData = "Javascript Says Right back aka!";
responseCallback(responseData); //这里的回调,java收不到
});
手机安卓版本4.3
when I use setWebViewClient besides setWebChromeClient, then the method for js to call become disabled.
采用webview.loadUrl(param)方式进行nativie和js的交互,如果param过长,param会被系统自动截取,如何解决这种问题。
h5在dom ready 后callHandler 唤起native registerHandler的方法不成功 ,当h5加了延时后才才能唤起,是什么原因,若是基于h5点击事件唤起 就没有这个问题
UncaughtException in Thread main
java.lang.NullPointerException
at com.github.lzyzsd.jsbridge.BridgeWebView$1.onCallBack(BridgeWebView.java:228)
at com.github.lzyzsd.jsbridge.BridgeWebView.handlerReturnData(BridgeWebView.java:75)
at com.github.lzyzsd.jsbridge.BridgeWebView.access$000(BridgeWebView.java:23)
at com.github.lzyzsd.jsbridge.BridgeWebView$BridgeWebViewClient.shouldOverrideUrlLoading(BridgeWebView.java:91)
at android.webkit.CallbackProxy.uiOverrideUrlLoading(CallbackProxy.java:354)
at android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:488)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.java:5493)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1225)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1041)
at dalvik.system.NativeStart.main(Native Method)
@lzyzsd
你好, 怎样才能通过CallBackFunction获取Function Name呢?
我目前项目用的时候angular.js,我发现WebViewJavascriptBridge.js也没引入是通过怎么实现的呢
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: Activity com.talkweb.cloudcampus.jsbridge.WebActivity has leaked ServiceConnection android.speech.tts.TextToSpeech$Connection@429edcd8 that was originally bound here
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: android.app.ServiceConnectionLeaked: Activity com.talkweb.cloudcampus.jsbridge.WebActivity has leaked ServiceConnection android.speech.tts.TextToSpeech$Connection@429edcd8 that was originally bound here
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.app.LoadedApk$ServiceDispatcher.(LoadedApk.java:979)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:873)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.app.ContextImpl.bindServiceAsUser(ContextImpl.java:1818)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.app.ContextImpl.bindService(ContextImpl.java:1806)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.content.ContextWrapper.bindService(ContextWrapper.java:503)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.speech.tts.TextToSpeech.connectToEngine(TextToSpeech.java:687)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.speech.tts.TextToSpeech.initTts(TextToSpeech.java:656)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.speech.tts.TextToSpeech.(TextToSpeech.java:609)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.webkit.AccessibilityInjector$TextToSpeechWrapper.(AccessibilityInjector.java:696)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.webkit.AccessibilityInjector.addTtsApis(AccessibilityInjector.java:492)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.webkit.AccessibilityInjector.addAccessibilityApisIfNecessary(AccessibilityInjector.java:173)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.webkit.AccessibilityInjector.updateJavaScriptEnabled(AccessibilityInjector.java:427)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.webkit.WebViewClassic.updateJavaScriptEnabled(WebViewClassic.java:3523)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.webkit.WebSettingsClassic.setJavaScriptEnabled(WebSettingsClassic.java:1572)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at com.talkweb.cloudcampus.jsbridge.BridgeWebView.init(BridgeWebView.java:62)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at com.talkweb.cloudcampus.jsbridge.BridgeWebView.(BridgeWebView.java:36)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at com.talkweb.cloudcampus.view.ProgressWebView.(ProgressWebView.java:18)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at java.lang.reflect.Constructor.constructNative(Native Method)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.view.LayoutInflater.createView(LayoutInflater.java:600)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:702)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.view.LayoutInflater.inflate(LayoutInflater.java:498)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.view.LayoutInflater.inflate(LayoutInflater.java:398)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.view.LayoutInflater.inflate(LayoutInflater.java:354)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at com.talkweb.cloudcampus.ui.base.BaseActivity.onCreate(BaseActivity.java:64)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at com.talkweb.cloudcampus.ui.base.TitleActivity.onCreate(TitleActivity.java:25)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.app.Activity.performCreate(Activity.java:5369)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2267)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2358)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.app.ActivityThread.access$700(ActivityThread.java:165)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1326)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.os.Handler.dispatchMessage(Handler.java:99)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.os.Looper.loop(Looper.java:137)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.app.ActivityThread.main(ActivityThread.java:5450)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at java.lang.reflect.Method.invokeNative(Native Method)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at java.lang.reflect.Method.invoke(Method.java:525)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at dalvik.system.NativeStart.main(Native Method)
When JavaScript uses Promise framework to call methods, this library fails to give callback to the method. Please let me know if we can do something to support Promise calls.
Ex:
return new Promise(function (resolve, reject) {
function onResultOK(data) {
console.log('onResultOK');
resolve(data);
}
function onResultError(error) {
console.log('onResultError: %s', error);
reject(error);
}
console.log('this call is a promise');
Android.nativeMethod(cons, onResultOK, onResultError); // Calling native android method.
});
调用native方法,crash,log看是转码问题
大神们好,我想请问一下,其中的回调函数可以做成“异步”的吗?不然卡在页面上,效果不好啊。感谢!具体怎做呢?开个线程吗?
你好,发现jsbridge基本和https://github.com/marcuswestin/WebViewJavascriptBridge基本一致,请问要统一使用的话,WebViewJavascriptBridge 需要修改哪些地方
华为荣耀6,5.11系统
在demo的MainActivity中
onCreate的webView = (BridgeWebView) findViewById(R.id.webView);后加上
webView.loadUrl("http://www.baidu.com");
js的_createQueueReadyIframe方法将无法创建iframe
bridge.callHandler('test',{"content":"乐乐乐乐"}, function(response) {
alert(response);
}
类似这种, 在android里,取到content时,汉字不正确了,
The latest build - 1.0.4 does not have callback working. Trying to get the latest jar from Jitpack with the latest commit gives a no artifact error. Can a new version with working Callback be released?
这个 问题 怎么解决?
这里,在 js 中定义
WebViewJavascriptBridge.registerHandler("getMedicineConfigs", function (data, responseCallback) { console.log("====== data ======" + data); getMedicineConfigs(data); });
当 java中 call
webView.callHandler("getMedicineConfigs", JSON.toJSONString(response.getMedicineConfigs()), null);
按照 下面js中定义的
function _handleMessageFromNative(messageJSON) { console.log(messageJSON); if (receiveMessageQueue) { receiveMessageQueue.push(messageJSON); } else { _dispatchMessageFromNative(messageJSON); } }
只会加入到queue,而不会 dispatch
js调用java的时候没有抛异常的callback,如果旧版本没有提供接口,怎么判断
@lzyzsd 发送汉字给java回报数据解析错误?
when I call the Method
webView.callHandler(jsHandlerName, data, new CallBackFunction() {
@OverRide
public void onCallBack(String dataFromJS) { } });
and data
is a json String as :
{"misp_rate": 0.0, "miss_rate": 0.0, "reading_difficulty": 3, "sentence": "What's your name?", "sentscore": 7.729825044290912, "hypsent": "", "redu_rate": 100.0, "score": 0.0, "frame_stats": [{"end": 0.0, "fluency": "ok", "start": 0.0, "score": 0.0, "word": "WHAT'S", "class": "missing"}, {"end": 0.0, "fluency": "ok", "start": 0.0, "score": 0.0, "word": "YOUR", "class": "missing"}, {"end": 0.0, "fluency": "ok", "start": 0.0, "score": 0.0, "word": "NAME", "class": "missing"}], "result": [{"end": 0.0, "fluency": "ok", "start": 0.0, "score": 0.0, "word": "WHAT'S", "class": "missing"}, {"end": 0.0, "fluency": "ok", "start": 0.0, "score": 0.0, "word": "YOUR", "class": "missing"}, {"end": 0.0, "fluency": "ok", "start": 0.0, "score": 0.0, "word": "NAME", "class": "missing"}], "overall_score_grade": [1.0, 0.16716503179825531, 0.04837733590220021, 0.005763443891519606, 0.0009540585770522334, 6.666328219118981e-20, 0.0, 0.0, 0.0], "frames": 0.0, "vocal_score": 47.2583396248}
will happen a err:07-06 11:22:17.740: I/chromium(12174): [INFO:CONSOLE(1)] "Uncaught SyntaxError: Unexpected identifier", source: (1)
I added compile 'com.github.lzyzsd.jsbridge:library:1.0.0'
into gradle.build ,but there is a error:
Error:Failed to find: com.github.lzyzsd.jsbridge:library:1.0.0
how Can I resolve this problem
如题,多谢!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.