Lib.js 做什么用的

JavaScript031

Lib.js 做什么用的,第1张

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