Lib.JS 是一个由一组JavaScript库组成的框架。
用途:
能够帮助开发人员将HTML5 Web应用程序组件集成至主项目中,而不需要编写任何JavaScript。
构成:
LibJS由几个JavaScript库组成,构成了基本的框架。
在这些库中包括:
ClassJS, 一个快速的class实现
MaskJS, 用于编写你的视图
IncludeJS,是一个资源加载器。
IncludeJS.Builder 是一个用于构建项目的Node.js工具
CompoJS是一个MVC库RuqqJS是一个帮助类库。
就单单的从js方面来说
库:lib,方法库,或组件库。核心库是给二次开发同学用的,它严谨、符合标准、独立健壮、无污染。
框架:framework,主要是给用户使用,当然也给二次开发者用,它易使用、易扩展、可持续发展、可控。
有些框架,依赖它开发的东西,只能在它的树荫下生存,而无法独立。这样的框架,就不能当库来用。如jquery。
有些库,几乎没有框架的特性,所以易用性很差,如YUI2,所以,它的用户群也只能局限于二次开发者,或水平比较高的开发者。
为作框架,可能为了易用性,牺牲了严谨性。例如:渲染String与Array的prototype。这就与库的无污染理念冲突。
所以,一个产品,如果需要它自己即能当框架,也能当库,那么,它就需要权衡取舍。当然,他也可以选择有多种形式的输出(输出成独立的库,或是易用的框架)。
所以jquery是一个框架,其实目前来说,js库都可以叫作js框架,js类包是使用了oo的思想,封装的一个方法包,jquery也可以看作一个类包
参考链接: WebGL throwing abort(104) on callback from .jslib function
1.C#绑定js方法 ProvideCallback 方法名 、 返回值 、 参数数量 要与jslib一模一样
2.要传入js的方法要加MonoPInvokeCallback
1.返回的字符串需要转为字节数组
2.用$variableName开头声明的变量要用autoAddDeps(LibraryJsCallCsTest, '$variableName')注册。如果一个方法被另一个方法调用,也要加$MethodName号,并注册
3. Runtime.dynCall('vi', JsCallCsTest.callback, [buffer]) 方法里 vi 里 v 指的是返回值是 void , i 值是 int或指针类型 ,字节数组是指针类型,所以:
SendMessage (unity_gameObjectName, gameObject_Method_Name, [string_params])
js里直接return相应的数字即可
C#传字符串给js,js拿到的是指针,用 Pointer_stringify(str) 转换一下即可
C# - .jslib 2-way communication
https://github.com/emscripten-core/emscripten/blob/ee17f05c0a45cad728ce0f215f2d2ffcdd75434b/src/library_browser.js#L715