当前位置: 首页 > news >正文

什么是二次开发

什么是二次开发?

二次开发,简单的说就是在现有的软件上进行定制修改,功能的扩展,然后达到自己想要的功能和效果,一般来说都不会改变原有系统的内核。

为什么要二次开发?

随着信息化技术的不断发展,IT行业涌现出了一系列优秀的开源作品,其作者或是个人,或是项目小组,或是软件公司。选择和应用这些优秀的开源软件,并在此基础上进行符合业务需求的二次开发,将给企业节省信息化成本(时间成本及开发成本)的同时,更能带来技术上的保障。这就是我们常听的:站在巨人的肩膀上,你将看的更远。所以国内很多公司需要二次开发的人才。

怎么做二次开发?

第一,你要有这个开源产品的所用语言的语言基础,能看懂代码是最基本的。

第二,你要对这个开源产品的功能和使用要有比较熟悉,因为你熟悉了,你才知道一个需求下来,你要改什么,什么是系统自带的,大概要怎么改。

第三,你要熟悉这个开源产品的数据结构,代码结构,系统的框架结构,核心是哪里,附属功能是在哪里。简单点说,就是数据库,代码逻辑,文件目录的熟悉。

第四,根据你的需求,然后利用开源产品的内核,进行系统的扩展和修改,以达到你的需求介绍PHP的开源

产品的二次开发的基本要求:

第一, 基本要求:HTML(必须要非常熟悉),PHP(能看懂代码,能写一些小系统,如:留言板,小型CMS),Mysql(至少会一种数据库),Javascript(能看懂,能改现成的一些代码),Div+Css(能进行界面的调整,明白CSS是怎么使用的)

第二, 熟悉开源产品的使用,比如 Dedecms,你要知道怎么登录,怎么新建栏目,怎么添加文章,模板标签的使用方法,模型的概念和使用方法等等一些功能

第三, 要熟悉这个开源产品的数据库结构,还要理解里面核心文件的内容,比如:数据库类怎么使用,常用的安全过滤是怎么做的,模板引擎又是怎么使用的等等一些核心内容。还要知道这个开源产品的目录结构,就是说,你要知道哪是放模板的,哪里是做控制的,哪里是放样式的,等等

第四, 熟悉你的需求,对需求进行解读,然后确定如何对这个开源产品进行修改和扩展经过二次开发后,你能获取到的是什么呢?

你能完成你的需求,你能积累经验,这里的经验有你自己的,也有别人的。所谓别人的,就是在你做这个二次开发的时候,你能吸收到这个系统的精华,然后融入到你自己的思想里,你还能总结项目架构的经验。有句话说的好,就是:聪明的人会把别人的失败的经验当作自己的经验,而傻的人就是自己无数次体验失败后才作为己的经验。二次开发不仅仅是开发,而更重要的是吸取精华,总结经验,理顺思路,少走弯路,提升自己。

转载于:https://www.cnblogs.com/ecshopdevelop/p/10175206.html

相关文章:

  • C++ 解析json串
  • 系统管理员需知的 16 个 iptables 使用技巧
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • 《HelloGitHub》第 33 期
  • grep-学习记录
  • 面试题30:包含 min 函数的栈
  • intellij中导入java包
  • Java模仿http请求工具类
  • 数据结构之链表 给定一个链表,判断链表中是否有环。
  • 有点颓废
  • JS判断单、多张图片加载完成
  • webfont在vue中的使用
  • DS树+图综合练习--二叉树之最大路径
  • cf954H
  • ajax跨域请求,亲测有效
  • 【Linux系统编程】快速查找errno错误码信息
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • CSS相对定位
  • JavaScript标准库系列——Math对象和Date对象(二)
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • Redis字符串类型内部编码剖析
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • 翻译--Thinking in React
  • 欢迎参加第二届中国游戏开发者大会
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 强力优化Rancher k8s中国区的使用体验
  • python最赚钱的4个方向,你最心动的是哪个?
  • Semaphore
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • ​2020 年大前端技术趋势解读
  • #stm32驱动外设模块总结w5500模块
  • #预处理和函数的对比以及条件编译
  • (3)nginx 配置(nginx.conf)
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (二)Linux——Linux常用指令
  • (九)One-Wire总线-DS18B20
  • (一) storm的集群安装与配置
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • ***详解账号泄露:全球约1亿用户已泄露
  • **python多态
  • *p++,*(p++),*++p,(*p)++区别?
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .net 托管代码与非托管代码
  • /dev/VolGroup00/LogVol00:unexpected inconsistency;run fsck manually
  • @RequestMapping 的作用是什么?
  • [20161214]如何确定dbid.txt
  • [Android] Android ActivityManager
  • [Asp.net MVC]Bundle合并,压缩js、css文件
  • [ASP.NET 控件实作 Day7] 设定工具箱的控件图标
  • [BZOJ5250][九省联考2018]秘密袭击(DP)