# business-example **Repository Path**: asf/business-example ## Basic Information - **Project Name**: business-example - **Description**: 示例项目 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2016-06-22 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 网站类开发规范 ## 使用的技术 网站类应用主要使用了如下一些技术,需要进行掌握。 - [spring](https://spring.io) - [paoding-rose](https://github.com/XiaoMi/rose) - [velocity](http://velocity.apache.org) - [hibernate](http://hibernate.org/orm/) - [require.js](http://requirejs.org) - [jQuery](http://jquery.com/) - [bootstrap](https://getbootstrap.com) ## 工具 开发/编译/发布/部署用到的工具 - [eclipse](https://www.eclipse.org/) - [tomcat](http://tomcat.apache.org) - [tomcatPlugin](http://www.eclipsetotale.com/tomcatPlugin.html) - [git](https://git-scm.com) - [maven](https://maven.apache.org) - [nodejs/npm](https://nodejs.org/en/) - [fis3](http://fis.baidu.com) ## 项目开发流程 1. 创建一个 JDSOA 的 web 项目 创建一个空的 Web 项目,将 JDSOA 平台文件拷贝至创建的空项目 webapp 目录下。配置数据库连接,授权信息等。注:开发环境推荐使用 eclipse + [tomcat插件](http://www.eclipsetotale.com/tomcatPlugin.html),然后在 tomcat 的 server.xml 配置文件中直接配置一个 Context 指向刚才创建项目的 webapp 目录,例如:``。 2. 创建业务项目 创建一个空的 Java maven 项目,添加依赖 jar 包配置,配置前面创建的 web 项目的 `Java Build Path`,添加 `Link Source` 指向该 maven 项目的源代码目录。 3. 创建 git 项目代码管理 项目目录必须遵循平台目录规范。像 .class, eclipse 项目信息文件等,要进行排除,不要放到 git 代码库里。 4. 日常工作流程 在日常工作中,必须遵循如下工作流程: - 早上开始工作之前,从 git 中 pull 项目代码,如果有冲突,解决冲突 - 查看自己当日工作内容,自己合理安排先后顺序 - 程序设计开发,每完成一项任务,及时在项目管理中标记 - 设计开发中,如果发现非自己开发部分的问题,及时提交 BUG,详细描述 BUG 出现的情况和场景 - 每日工作结束后,在同步代码前,先 git pull 拉取一下代码,如果有冲突,解决冲突 - 提交自己本日工作代码,并详细编写代码提交描述说明 ## 开发规范 ### 项目目录规范 |目录 |存放内容 |web项目对应目录 | |-------------------|-----------------|----------------------------| |docs |项目文档 | | |conf |配置文件 |web项目/WEB-INF/conf | |lib |依赖jar包 |web项目/WEB-INF/lib | |src |业务类 || |  main/java ||| |  main/resources ||| |  test/java ||| |  test/resources ||| |static |前端静态文件 || |  libs |第三方js/css库 |web项目/static/libs | |  css |页面样式 |web项目/static/app/业务代码/css | |    common.css |项目公共样式 || |  img |图片 |web项目/static/app/业务代码/img | |  js |javascript脚本 |web项目/static/app/业务代码/js | |    common.js |项目公共js代码 || |  html |静态页面文件 |web项目/static/app/业务代码/html | |  design |UI设计html页面 || |  template |velocity模板文件 |web项目/WEB-INF/views | |.gitignore |git忽略文件 || |fis-conf.js |fis3配置文件 || |package.json |fis3项目信息配置 || |README.md |项目说明 || |pom.xml |maven项目依赖配置 || ### Java业务类开发规范 - 业务类遵循 Java 开发规范: - 业务类的 jar 包依赖必须使用 pom.xml 进行管理,对于没有在 maven 仓库中管理的类,可以放在 lib 目录之下。 - 对于业务方法,原则上必须编写单元测试用例,测试覆盖率应在90%以上。 - 所有业务方法必须编写符合 javadoc 注解规范的详细调用说明。 - 生成的业务 jar 包,必须带有版本号,遵循业务 jar 包版本号规则。 ### Java类命名空间规范 - **com.公司标识.app.项目代码简称** 项目常量类,异常处理类等基础功能 - **com.公司标识.app.项目代码简称.bean** Java Bean 对象实体类 - **com.公司标识.app.项目代码简称.mq** MQ 处理类 - **com.公司标识.app.项目代码简称.service** 服务接口类 - **com.公司标识.app.项目代码简称.service.impl** 服务实现类,所有服务必须实现 `com.jdsoft.app.项目代码简称.service` 下的某个接口类,同时继承 `net.fruit.rose.service.BaseService` 类。 - **com.公司标识.app.项目代码简称.util** 该项目的相关工具类,不通用,只适应于此项目。 - **com.公司标识.app.项目代码简称.web.controllers** web 视图层类 ### maven项目依赖规范(pom.xml) 使用 maven 管理 jar 包依赖。 ### 业务jar包版本号规则 jar 包版本号使用三级编号:主版本号.子版本号.修正版本号[_希腊字母版本] - 主版本号 当功能模块有较大的变动,比如增加多个模块或者整体架构发生变化。此版本号由项目负责人决定是否修改。 - 子版本号 当功能有一定的增加或变化,比如增加了对权限控制、增加自定义视图等功能。此版本号由项目负责人决定是否修改。 - 修正版本号 一般是 Bug 修复或是一些小的变动,要经常发布修订版,时间间隔不限,修复一个严重的bug即可发布一个修订版。此版本号由项目经理决定是否修改。 - 希腊字母版本 此版本号可选。共有4种类型: * alpha : 以实现软件功能为主,只在软件开发者内部交流,一般而言,该版本软件的 Bug 较多,需要继续修改 * beta : 该版本消除了严重的错误,但还是存在着一些缺陷,需要经过多次测试来进一步消除,此版本主要的修改对像是软件的UI * RC : 该版本已经相当成熟了,基本上不存在导致错误的 BUG,与即将发行的正式版相差无几 * release : 最终交付用户使用的一个版本 ### 页面开发规范 - 页面中的 css 和 js 都必须以文件方式引用,不能在页面中直接编写 css/js 代码。 - 每个页面只和本页面相关样式和 js 脚本,只使用一个 css 文件和 js 文件。 - 多个页面公共的样式或脚本,使用 common.css 或 common.js 文件。 - 引入的页面相关的 css 文件 和 js 文件,必须使用和 URL 对应的目录结构及文件名。 - 基于 `bootstrap` 框架来制作页面时,只依赖于 css 样式,不要使用 `bootstrap.js` 文件以及需要 js 支持的样式效果。 - js 使用 jQuery 框架。 - 引入页面相关的 js 文件时,使用 `require.js`,因此 js 脚本必须符合 AMD 规范。 - css 文件中引用的图片文件,在图片路径后增加 `?__sprite`,以便于进行图片合并。例如:background-image: url('./img/list-1.png?__sprite')。 ### 前端发布配置(fis3) 前端发布使用 fis3,符合“项目目录规范”的配置示例: **fis-conf.js** // 业务代码 var bcode = "test"; fis.match('::package', { postpackager: fis.plugin('loader'), spriter: fis.plugin('csssprites') }); // 项目忽略的文件 fis.set('project.ignore', [ 'fis-conf.js', 'package.json', 'src/**', 'pom.xml', 'README.md', 'target/**' ]); // 文件指纹 fis.match('*.{js,css,png}', { useHash: false, domain: '' }); // 压缩资源 // 清除其他配置,只保留如下配置 fis.match('*.js', { // fis-optimizer-uglify-js 插件进行压缩,已内置 optimizer: fis.plugin('uglify-js') }); fis.match('*.css', { // fis-optimizer-clean-css 插件进行压缩,已内置 optimizer: fis.plugin('clean-css') }); fis.match('*.png', { // fis-optimizer-png-compressor 插件进行压缩,已内置 optimizer: fis.plugin('png-compressor') }); // CssSprite图片合并 fis.match('*.css', { useSprite: true }); // 发布到web项目对应目录 fis.match('conf/*', { release: '/WEB-INF/$0' }); fis.match('lib/*', { release: '/WEB-INF/$0' }); fis.match('static/libs/*', { release: '/$0' }); fis.match('static/css/(*)', { release: '/static/app/' + bcode + '/css/$1' }); fis.match('static/js/(*)', { release: '/static/app/' + bcode + '/js/$1' }); fis.match('static/img/(*)', { release: '/static/app/' + bcode + '/img/$1' }); fis.match('static/html/(*)', { release: '/static/app/' + bcode + '/html/$1' }); fis.match('static/design/(*)', { release: '/static/app/' + bcode + '/design/$1' }); fis.match('static/template/(*)', { release: '/WEB-INF/views/$1' }); // -End fis.match('*', { deploy: fis.plugin('local-deliver', { to: '/Users/9dsoft/Project/biz-example-publish' }) }); **package.json** { "name": "biz-example", "version": "1.0.0", "description": "业务代码示例", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "repository": { "type": "git", "url": "" }, "keywords": [ ], "author": "CNJUN", "license": "", "bugs": { "url": "" }, "homepage": "", "dependencies": { } }