# 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": {
}
}