介绍

此Demo项目基于Choerodon开发,使用React作为开发语言。

本文包括如下几个步骤:

  • 新建Demo项目
  • 新建Demo模块
  • 编写config.js
  • 编写package.json
  • 编写demo入口文件
  • 页面访问

新建Demo项目

本地新建一个空的项目choerodon-todo-service

  1. $ mkdir -p choerodon-todo-service
  2. $ cd choerodon-todo-service

新建Demo模块

创建新模块的文件夹

  1. $ mkdir -p react/src/app/demo/containers

编写config.js

在react文件夹下创建config.js

  1. $ cd react
  2. $ touch config.js
  1. // config.js
  2. const config = {
  3. local: true, //是否为本地开发
  4. server: 'http://api.staging.saas.hand-china.com', // 后端接口服务器地址
  5. master: '@choerodon/master',
  6. projectType: 'choerodon',
  7. buildType: 'single',
  8. dashboard: {},
  9. };
  10. module.exports = config;

编写package.json

在项目根目录下创建package.json

  1. $ cd ..
  2. $ npm init
  1. // package.json
  2. {
  3. "name": "@choerodon/demo", // name为模块名(可以增加@choerodon scope)
  4. "routeName": "demo", // routeName为路由前缀(如空,取name为路由前缀)
  5. "version": "1.0.0",
  6. "description": "",
  7. "main": "./react/src/app/demo/containers/DEMOIndex.js", // main为入口index的路径(如空,当前模块不会被编译进去,一般只有总前端类型不设置)
  8. "scripts": {
  9. "start": "choerodon-front-boot start --config ./react/config.js",
  10. "dist": "choerodon-front-boot dist --config ./react/config.js",
  11. "lint-staged": "lint-staged",
  12. "lint-staged:es": "eslint",
  13. "compile": "gulp compile"
  14. },
  15. "contributors": [
  16. "choerodon"
  17. ],
  18. "license": "ISC",
  19. "dependencies": {
  20. "@choerodon/boot": "0.17.x",
  21. "@choerodon/master": "0.17.x" // 表示进入页面后的部分,菜单、header和AutoRouter等,可自己配置
  22. },
  23. "files": [
  24. "lib"
  25. ],
  26. "lint-staged": {
  27. "react/**/*.{js,jsx}": [
  28. "npm run lint-staged:es"
  29. ],
  30. "react/**/*.scss": "stylelint --syntax scss"
  31. },
  32. "husky": {
  33. "hooks": {
  34. "pre-commit": "lint-staged"
  35. }
  36. },
  37. "devDependencies": {
  38. "babel-preset-env": "^1.7.0",
  39. "gulp": "^3.9.1",
  40. "gulp-babel": "^7.0.1",
  41. "through2": "^2.0.3"
  42. }
  43. }

编写demo入口文件

containers文件夹下创建Index文件,文件名为模块名大写+Index

containers文件夹用于存放前端的页面。

  1. $ touch react/src/app/demo/containers/DEMOIndex.js
  1. // DEMOIndex.js
  2. import React from 'react';
  3. import { Route, Switch } from 'react-router-dom';
  4. import { inject } from 'mobx-react';
  5. import { asyncRouter, nomatch } from '@choerodon/boot';
  6. @inject('AppState')
  7. class DEMOIndex extends React.Component {
  8. render() {
  9. const { match, AppState } = this.props;
  10. return (
  11. <Switch>
  12. <Route path="*" component={nomatch} />
  13. </Switch>
  14. );
  15. }
  16. }
  17. export default DEMOIndex;

启动及页面访问

package.json 同级目录下,安装并启动。

  1. $ npm install
  2. $ npm run start

当开始编译后会自动打开浏览器,通过 localhost:9090,查看页面效果。