推荐一下两款基于WebGL技术的3D框架。
Threejs
目前最流行的开源3D框架,2009年4月诞生,2005年adobe收购了macromedia的flash产品,2008,2009年正是flash如日中天之时,threejs也识时务的选择了flash的ActionScript平台,后来flash没落之后选择了WebGL。
ThingJS
新兴的3D框架,2018年诞生,是针对物联网领域的JavaScript 3D Library。它是由在3D领域经营多年的优锘科技公司研发,旨在简化3D应用开发。
设计对比
Threejs库的出现解决了底层的渲染细节和复杂的数据结构,终于将复杂的底层细节抽象出来,使得大家开发3D应用更容易了一些。和很多开发者交流threejs都是他们首次接触的WebGL 3D库,并能很容易的就能开始做一些实验。但是使用Threejs开发应用还是门槛很高,但就一个加载模型,调光,选择模型弹框的功能,就能写出Threejs上百行代码。同时还有很多复杂的3D概念需要理解。
ThingJS是更为上层的抽象,不用关心渲染,mesh,光线等复杂概念。它抽象是一个个具体的模型,ThingJS封装了对模型交互事件的各种API,比如单击,左键,鼠标滑过等,ThingJS封装了对模型的操作,例如移动,放大缩小,上色,勾边,甚至开门,ThingJS还封装了模型的层次关系,例如物体是放在某个房间里的,房间又在某个楼层,楼层又是某个大楼的。大楼在园区里。
就单单的从js方面来说
库:lib,方法库,或组件库。核心库是给二次开发同学用的,它严谨、符合标准、独立健壮、无污染。
框架:framework,主要是给用户使用,当然也给二次开发者用,它易使用、易扩展、可持续发展、可控。
有些框架,依赖它开发的东西,只能在它的树荫下生存,而无法独立。这样的框架,就不能当库来用。如jquery。
有些库,几乎没有框架的特性,所以易用性很差,如YUI2,所以,它的用户群也只能局限于二次开发者,或水平比较高的开发者。
为作框架,可能为了易用性,牺牲了严谨性。例如:渲染String与Array的prototype。这就与库的无污染理念冲突。
所以,一个产品,如果需要它自己即能当框架,也能当库,那么,它就需要权衡取舍。当然,他也可以选择有多种形式的输出(输出成独立的库,或是易用的框架)。
所以jquery是一个框架,其实目前来说,js库都可以叫作js框架,js类包是使用了oo的思想,封装的一个方法包,jquery也可以看作一个类包