背景
目前市面上一些web前端工程在打包发布之前都会进行代码混淆加密。代码混淆(Obfuscated code)是将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式的行为。代码混淆可以用于程序源代码,也可以用于程序编译而成的中间代码。而混淆后的代码很难被反编译,即使反编译成功也很难得出程序的真正语义。通过进行代码混淆可以有效提升应用被逆向破解的难度,并使其对可能别有用心的黑客无用,还可以减少文件大小、提升性能。
如果项目或客户对现有的前端工程有定制化开发的需求,拿到混淆后的前端代码也无从下手,这个时候只能申请相关前端工程源码去做定制化开发,然而这样源码就会对外暴露并存在泄露的风险,还有可能会暴露出一些独有技术或者商业信息。基于以上类似的场景,元年提供了一个前端无源码定制化开发的能力。本文将从无源码定制化开发的概念、意义,实践和优势来进行讲解说明。
什么是无源码定制化开发
想要了解什么是无源码定制化开发,首先要明白什么是源码定制化开发。
源码定制化开发
所谓源码就是指编写的最原始的程序代码。任何一个网站页面,换成源码就是一堆按一定格式书写的文字和符号。程序员编写程序的过程中需要他们的“语言”,而他们的工作语言就是“源码”了。用户平时使用软件时就是程序把“源码”翻译成用户可以直观看到的模样。
定制化开发,以现有软件产品为基础,以客户的个性化需求为目标。通常,它由软件产品开发人员执行,或者由供应商提供的第三方执行定制化开发接口和源代码。不同于完全定制的开发,定制化开发不是从零开始开发,而是基于现有的软件。通俗地说就是在现有的软件上进行定制修改、扩展功能,然后达到自己想要的功能,一般来说都不会改变原有系统的内核。去做定制化开发你需要掌握以下能力:
第一,你要有这个开源产品的所用语言的语言基础,能看懂代码是最基本的;
第二,你要对这个开源产品的功能能力和使用比较熟悉;
第三,你要熟悉这个开源产品的代码结构,系统的框架结构,核心思想的代码逻辑,以及文件目录;
第四,你要根据项目的需求,利用开源产品的内核,进行系统的扩展和修改,从而达到用户需求。
无源码定制化开发
无源码定制化开发指的是在源码编译混淆的基础上进行定制化功能开发,在不需要了解代码结构及不改变整体逻辑结构的情况下从而快速达到用户需求的开发方式,它具备成本低效率高,自定义能力强,安全敏捷等优点。元年无源码定制化开发是通过开发一款yn-webpack-plugin插件,它能在使用webpack打包编译的情况下将指定的定制化开发目标源文件放到对应的定制化开发目录下,编译发版后在不提供给用户源码的情况下项目也能基于发版出去的工程去做定制化开发从而快速满足用户的定制化开发业务需求。
无源码定制化开发的意义
元年的平台产品是一个庞大且复杂的系统,对内涉及的产品线数量多且功能复杂,对外涉及的项目也比较多,每个业务线和项目的需求又大有不同,而且变动频繁,常常需要设计者与开发者能快速做出响应。基于无源码定制化开发能力可以快速响应每个业务线及企业的不同需求,满足不同企业不同定制化的要求。并且每个项目在基于无源码定制化开发能力开发的时候还能使用平台提供的一些基础能力,避免重复造轮子。在一些通用能力上只需要元年工程开发一套就能满足所有企业都能使用,它能在以下几点更好的满足企业发展。
节约时间成本
使用无源码进行定制化开发的开发方式,可以节约很大一部分时间成本。因为程序的整体源码逻辑已经确定下来,开发基于无源码定制化开发的能力不需要像很多源码定制化开发一样还要去了解项目结构,代码逻辑编程思想等。开发要做的主要工作就是基于无源码定制化开发能力,在定制化开发文件上,对原来代码的基础进行功能的改进,基于此项目在开发周期上可以大大节省开发时间,并且能使上线时间提前。
节约人力成本
无源码定制化开发可以节约人力成本。项目初期如果每个项目都存在一些定制化需求,那么每个项目都至少需要一个开发工程师,并且还对项目开发有一定的能力要求。无源码定制化开发能力提供的能力可以减少项目自己去做一些重复造轮子的事情,可以基于提供的一些定制化开发能力直接使用,减少开发周期,减少人员,最后可能一个开发工程师就能支持多个项目。我们都知道,软件开发公司最大的成本就是人力的成本,如果能够从人力上节约成本,就能给软件开发公司带来更多的收益。所以无源码定制化开发,不管是对公司还是对客户,都有很大的帮助和好处。
提升安全性
无源码定制化开发可以提升安全性。无源码定制化开发不需要我们提供源码给项目上,项目只需要拿到发版物对预留的定制化开发文件做处理即可,这样就减少了源码暴露的风险,在保证安全性的同时降低安全投入成本。
无源码定制化开发能力的应用
元年的无源码定制化开发原理是通过插件机制来实现的,通过开发一款yn-webpack-plugin插件,它能在编译发版后在不提供给项目源代码的情况下将预留的定制化开发文件保留,项目通过去对定制化开发文件去做定制化开发从而快速满足项目的定制化开发业务需求。项目还能避免去走申请流程申请源码定制化开发等一系列耗时流程,直接拿到元年的发版物之后就能处理快速满足客户的一些需求。并且在我们发版后的定制化开发文件中也会将元年的一些基础能力对外暴露,这样项目上能直接使用基础的能力,不需要再次赋能,减少项目对前端开发能力的一些要求。
无源码定制化开发优势
无源码定制化开发是通过一系列技术手段实现的一种开发方式,使用无源码进行定制化开发的开发方式,它的优势有以下几点:
-
解决各个项目个性化需求难实现问题;
-
增强业务扩展性、业务适配性;
-
降低项目上对人员的开发能力要求,更快上手;
-
降低源码及商业信息暴露的风险;
-
降低代码冲突及代码升级合版的风险;
-
可以更好资源整合、合理分配、降低成本等。
综上,无源码定制化开发的能力不仅能满足企业内部业务线、外部企业更好地敏捷开发,从时间、成本、人员、安全性等各个方面应对市场的变化,还能够快速驾驭需求的变化满足企业的要求。