mirror of
https://github.com/pure-admin/vue-pure-admin.git
synced 2025-06-06 00:18:51 +08:00
project init
This commit is contained in:
parent
721b84824c
commit
58f3fcbaf3
11
.gitignore
vendored
Normal file
11
.gitignore
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
/doc/node_modules
|
||||
/doc/docs/.vitepress/dist
|
||||
|
||||
/backend/node_modules
|
||||
|
||||
/frontend/angular-ts/node_modules
|
||||
|
||||
/frontend/react-ts/node_modules
|
||||
|
||||
/frontend/vue-ts/node_modules
|
||||
/frontend/vue-ts/dist
|
41
README.md
41
README.md
@ -1,2 +1,43 @@
|
||||
# CURD-TS
|
||||
一套基于TS的增删改查系统,前端语言Vue3.0、React、Angular,后端语言node+express,采用了三种数据库MySQL、MongoDB、SQLite编写。
|
||||
A TS based add, delete, modify and query system, the front-end language vue3.0, react, angular, back-end language node + Express, using three kinds of database mysql, mongodb, SQLite
|
||||
|
||||
# 结构介绍
|
||||
① sql为数据库存放文件夹
|
||||
② doc为文档编写存放文件夹
|
||||
③ backend为后端项目存放文件夹
|
||||
④ frontend为前端项目存放文件夹
|
||||
|
||||
# Structure introduction
|
||||
① SQL stores the folder for the database
|
||||
② Doc write storage folder for documents
|
||||
③ Backend stores the folder for the back-end project
|
||||
④ Frontend stores the folder for the front-end project
|
||||
|
||||
# 前端对应代码存放目录
|
||||
vue => /frontend/vue-ts
|
||||
react => /frontend/react-ts
|
||||
angular => /frontend/angular-ts
|
||||
|
||||
# Front end corresponding code storage directory
|
||||
vue => /frontend/vue-ts
|
||||
react => /frontend/react-ts
|
||||
angular => /frontend/angular-ts
|
||||
|
||||
# 注意点
|
||||
① 接口文档使用Swagger
|
||||
② 编写者必须严格遵守项目中tslint编写规则
|
||||
③ 编写者必须严格遵循代码命名语义化、提高代码可读性
|
||||
④ 编写者编写代码完毕必须经过单元测试,保证代码可用性
|
||||
⑤ 编写必须完全使用TypeScript,保证代码严谨性、可维护性
|
||||
⑥ 编写者提交代码发生冲突,必须先解决,在推送,严禁使用git push -f origin 分支
|
||||
⑦ 编写者无须在项目中放置.gitignore文件,如需加入别的git忽略请放在CURD-TS文件夹跟目录的.gitignore文件
|
||||
|
||||
# Attention point
|
||||
① Interface documents use swagger
|
||||
② The author must strictly abide by the tslint writing rules in the project
|
||||
③ The author must strictly follow the code naming semantics and improve the readability of the code
|
||||
④ The author must go through the unit test to ensure the usability of the code
|
||||
⑤ Typescript must be used completely to ensure code rigor and maintainability
|
||||
⑥ If the code submitted by the writer conflicts, it must be resolved first. In pushing, GIT push - f origin branch is strictly prohibited
|
||||
⑦ The author does not need to place the. Gitignore file in the project. If you want to add other git ignore, please put it in the curd-ts folder and the. Gitignore file in the directory
|
21
backend/README.md
Normal file
21
backend/README.md
Normal file
@ -0,0 +1,21 @@
|
||||
# 接口
|
||||
|
||||
# 安装依赖
|
||||
```
|
||||
npm install
|
||||
```
|
||||
|
||||
# 项目启动
|
||||
```
|
||||
npm run dev
|
||||
```
|
||||
|
||||
# Swagger文档访问地址
|
||||
http://localhost:3000
|
||||
|
||||
# 注意点
|
||||
请先全局安装typescript、ts-node,如安装请忽略
|
||||
```
|
||||
npm install -g typescript
|
||||
npm install -g ts-node
|
||||
```
|
3376
backend/package-lock.json
generated
Normal file
3376
backend/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
24
backend/package.json
Normal file
24
backend/package.json
Normal file
@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "check-ts",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"build": "tsc",
|
||||
"dev": "ts-node ./src/server.ts",
|
||||
"start": "nodemon ./dist/server.js",
|
||||
"prod": "npm run build && npm run start"
|
||||
},
|
||||
"author": "Coral Ram",
|
||||
"license": "ISC",
|
||||
"devDependencies": {
|
||||
"nodemon": "^1.19.4",
|
||||
"tslint": "^5.20.1",
|
||||
"typescript": "^3.9.7"
|
||||
},
|
||||
"dependencies": {
|
||||
"@types/express": "^4.17.9",
|
||||
"express": "^4.17.1",
|
||||
"express-swagger-generator": "^1.1.17"
|
||||
}
|
||||
}
|
BIN
backend/public/favicon-16x16.png
Normal file
BIN
backend/public/favicon-16x16.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 665 B |
BIN
backend/public/favicon-32x32.png
Normal file
BIN
backend/public/favicon-32x32.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 628 B |
59
backend/public/index.html
Normal file
59
backend/public/index.html
Normal file
@ -0,0 +1,59 @@
|
||||
<!-- HTML for static distribution bundle build -->
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Swagger UI</title>
|
||||
<link rel="stylesheet" type="text/css" href="./swagger-ui.css">
|
||||
<link rel="icon" type="image/png" href="./favicon-32x32.png" sizes="32x32" />
|
||||
<link rel="icon" type="image/png" href="./favicon-16x16.png" sizes="16x16" />
|
||||
<style>
|
||||
html {
|
||||
box-sizing: border-box;
|
||||
overflow: -moz-scrollbars-vertical;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
|
||||
*,
|
||||
*:before,
|
||||
*:after {
|
||||
box-sizing: inherit;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
background: #fafafa;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="swagger-ui"></div>
|
||||
|
||||
<script src="./swagger-ui-bundle.js" charset="UTF-8"> </script>
|
||||
<script src="./swagger-ui-standalone-preset.js" charset="UTF-8"> </script>
|
||||
<script>
|
||||
window.onload = function () {
|
||||
// Begin Swagger UI call region
|
||||
const ui = SwaggerUIBundle({
|
||||
url: "http://localhost:3000/swagger.json",
|
||||
dom_id: '#swagger-ui',
|
||||
deepLinking: true,
|
||||
presets: [
|
||||
SwaggerUIBundle.presets.apis,
|
||||
SwaggerUIStandalonePreset
|
||||
],
|
||||
plugins: [
|
||||
SwaggerUIBundle.plugins.DownloadUrl
|
||||
],
|
||||
layout: "StandaloneLayout"
|
||||
})
|
||||
// End Swagger UI call region
|
||||
|
||||
window.ui = ui
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
74
backend/public/oauth2-redirect.html
Normal file
74
backend/public/oauth2-redirect.html
Normal file
@ -0,0 +1,74 @@
|
||||
<!doctype html>
|
||||
<html lang="en-US">
|
||||
<head>
|
||||
<title>Swagger UI: OAuth2 Redirect</title>
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
</html>
|
||||
<script>
|
||||
'use strict';
|
||||
function run () {
|
||||
var oauth2 = window.opener.swaggerUIRedirectOauth2;
|
||||
var sentState = oauth2.state;
|
||||
var redirectUrl = oauth2.redirectUrl;
|
||||
var isValid, qp, arr;
|
||||
|
||||
if (/code|token|error/.test(window.location.hash)) {
|
||||
qp = window.location.hash.substring(1);
|
||||
} else {
|
||||
qp = location.search.substring(1);
|
||||
}
|
||||
|
||||
arr = qp.split("&")
|
||||
arr.forEach(function (v,i,_arr) { _arr[i] = '"' + v.replace('=', '":"') + '"';})
|
||||
qp = qp ? JSON.parse('{' + arr.join() + '}',
|
||||
function (key, value) {
|
||||
return key === "" ? value : decodeURIComponent(value)
|
||||
}
|
||||
) : {}
|
||||
|
||||
isValid = qp.state === sentState
|
||||
|
||||
if ((
|
||||
oauth2.auth.schema.get("flow") === "accessCode"||
|
||||
oauth2.auth.schema.get("flow") === "authorizationCode"
|
||||
) && !oauth2.auth.code) {
|
||||
if (!isValid) {
|
||||
oauth2.errCb({
|
||||
authId: oauth2.auth.name,
|
||||
source: "auth",
|
||||
level: "warning",
|
||||
message: "Authorization may be unsafe, passed state was changed in server Passed state wasn't returned from auth server"
|
||||
});
|
||||
}
|
||||
|
||||
if (qp.code) {
|
||||
delete oauth2.state;
|
||||
oauth2.auth.code = qp.code;
|
||||
oauth2.callback({auth: oauth2.auth, redirectUrl: redirectUrl});
|
||||
} else {
|
||||
let oauthErrorMsg
|
||||
if (qp.error) {
|
||||
oauthErrorMsg = "["+qp.error+"]: " +
|
||||
(qp.error_description ? qp.error_description+ ". " : "no accessCode received from the server. ") +
|
||||
(qp.error_uri ? "More info: "+qp.error_uri : "");
|
||||
}
|
||||
|
||||
oauth2.errCb({
|
||||
authId: oauth2.auth.name,
|
||||
source: "auth",
|
||||
level: "error",
|
||||
message: oauthErrorMsg || "[Authorization failed]: no accessCode received from the server"
|
||||
});
|
||||
}
|
||||
} else {
|
||||
oauth2.callback({auth: oauth2.auth, token: qp, isValid: isValid, redirectUrl: redirectUrl});
|
||||
}
|
||||
window.close();
|
||||
}
|
||||
|
||||
window.addEventListener('DOMContentLoaded', function () {
|
||||
run();
|
||||
});
|
||||
</script>
|
3
backend/public/swagger-ui-bundle.js
Normal file
3
backend/public/swagger-ui-bundle.js
Normal file
File diff suppressed because one or more lines are too long
1
backend/public/swagger-ui-bundle.js.map
Normal file
1
backend/public/swagger-ui-bundle.js.map
Normal file
File diff suppressed because one or more lines are too long
3
backend/public/swagger-ui-es-bundle-core.js
Normal file
3
backend/public/swagger-ui-es-bundle-core.js
Normal file
File diff suppressed because one or more lines are too long
1
backend/public/swagger-ui-es-bundle-core.js.map
Normal file
1
backend/public/swagger-ui-es-bundle-core.js.map
Normal file
File diff suppressed because one or more lines are too long
3
backend/public/swagger-ui-es-bundle.js
Normal file
3
backend/public/swagger-ui-es-bundle.js
Normal file
File diff suppressed because one or more lines are too long
1
backend/public/swagger-ui-es-bundle.js.map
Normal file
1
backend/public/swagger-ui-es-bundle.js.map
Normal file
File diff suppressed because one or more lines are too long
3
backend/public/swagger-ui-standalone-preset.js
Normal file
3
backend/public/swagger-ui-standalone-preset.js
Normal file
File diff suppressed because one or more lines are too long
1
backend/public/swagger-ui-standalone-preset.js.map
Normal file
1
backend/public/swagger-ui-standalone-preset.js.map
Normal file
File diff suppressed because one or more lines are too long
4
backend/public/swagger-ui.css
Normal file
4
backend/public/swagger-ui.css
Normal file
File diff suppressed because one or more lines are too long
1
backend/public/swagger-ui.css.map
Normal file
1
backend/public/swagger-ui.css.map
Normal file
File diff suppressed because one or more lines are too long
3
backend/public/swagger-ui.js
Normal file
3
backend/public/swagger-ui.js
Normal file
File diff suppressed because one or more lines are too long
1
backend/public/swagger-ui.js.map
Normal file
1
backend/public/swagger-ui.js.map
Normal file
File diff suppressed because one or more lines are too long
31
backend/src/app.ts
Normal file
31
backend/src/app.ts
Normal file
@ -0,0 +1,31 @@
|
||||
import * as express from "express";
|
||||
import * as bodyParser from "body-parser";
|
||||
|
||||
class App {
|
||||
public app: express.Application;
|
||||
constructor() {
|
||||
this.app = express();
|
||||
this.config();
|
||||
};
|
||||
private config(): void{
|
||||
//支持json编码的主体
|
||||
this.app.use(bodyParser.json());
|
||||
//支持编码的主体
|
||||
this.app.use(bodyParser.urlencoded({
|
||||
extended: true
|
||||
}));
|
||||
//设置静态访问目录(Swagger)
|
||||
this.app.use(express.static('public'));
|
||||
//设置跨域访问
|
||||
this.app.all('*', (req, res, next) => {
|
||||
res.header("Access-Control-Allow-Origin", "*");
|
||||
res.header("Access-Control-Allow-Headers", "content-type");
|
||||
res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
|
||||
res.header("X-Powered-By", ' 3.2.1');
|
||||
res.header("Content-Type", "application/json;charset=utf-8");
|
||||
next();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export default new App().app;
|
13
backend/src/router/api/test.ts
Normal file
13
backend/src/router/api/test.ts
Normal file
@ -0,0 +1,13 @@
|
||||
/**
|
||||
* 测试
|
||||
* @route GET /getApi/
|
||||
* @summary 测试
|
||||
* @group test - 测试
|
||||
* @returns {object} 200
|
||||
* @security JWT
|
||||
* @returns {Error} default - Unexpected error
|
||||
*/
|
||||
|
||||
exports.testGetApi = (req, res) => {
|
||||
res.json({code:1 , msg: "成功"})
|
||||
}
|
43
backend/src/server.ts
Normal file
43
backend/src/server.ts
Normal file
@ -0,0 +1,43 @@
|
||||
import app from "./app";
|
||||
const PORT = 3000;
|
||||
const expressSwagger = require('express-swagger-generator')(app)
|
||||
|
||||
// 引入测试数据
|
||||
const test = require("./router/api/test")
|
||||
|
||||
let options = {
|
||||
swaggerDefinition: {
|
||||
info: {
|
||||
description: 'This is a sample server',
|
||||
title: 'Swagger',
|
||||
version: '1.0.0'
|
||||
},
|
||||
host: 'localhost:3000',
|
||||
basePath: '/',
|
||||
produces: ['application/json', 'application/xml'],
|
||||
schemes: ['http', 'https'],
|
||||
securityDefinitions: {
|
||||
JWT: {
|
||||
type: 'apiKey',
|
||||
in: 'header',
|
||||
name: 'Authorization',
|
||||
description: ''
|
||||
}
|
||||
}
|
||||
},
|
||||
route: {
|
||||
url: '/swagger-ui.html',
|
||||
docs: '/swagger.json' //swagger文件 api
|
||||
},
|
||||
basedir: __dirname, //app absolute path
|
||||
files: ['./router/api/*.ts'] //Path to the API handle folder
|
||||
}
|
||||
expressSwagger(options)
|
||||
|
||||
app.get('/getApi', (req, res) => {
|
||||
test.testGetApi(req, res)
|
||||
})
|
||||
|
||||
app.listen(PORT, () => {
|
||||
console.log('Swagger文档地址:', `http://localhost:${PORT}`);
|
||||
})
|
18
backend/tsconfig.json
Normal file
18
backend/tsconfig.json
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"module": "commonjs",
|
||||
"moduleResolution": "node",
|
||||
"pretty": true,
|
||||
"sourceMap": true,
|
||||
"target": "es6",
|
||||
"outDir": "./dist",
|
||||
"baseUrl": "./lib"
|
||||
},
|
||||
"include": [
|
||||
"src/**/*.ts", "src/router/api/user.js"
|
||||
],
|
||||
"exclude": [
|
||||
"node_modules",
|
||||
"dist"
|
||||
]
|
||||
}
|
13
backend/tslint.json
Normal file
13
backend/tslint.json
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"defaultSeverity": "error",
|
||||
"extends": [
|
||||
"tslint:recommended"
|
||||
],
|
||||
"jsRules": {},
|
||||
"rules": {
|
||||
"interface-name": [false],
|
||||
"no-console": [false],
|
||||
"quotemark": [true, "single"]
|
||||
},
|
||||
"rulesDirectory": []
|
||||
}
|
19
doc/README.md
Normal file
19
doc/README.md
Normal file
@ -0,0 +1,19 @@
|
||||
# simplicity
|
||||
|
||||
简约而不简单的文档
|
||||
|
||||
# 安装依赖
|
||||
```
|
||||
npm install
|
||||
```
|
||||
|
||||
# 文档启动
|
||||
```
|
||||
npm run docs
|
||||
```
|
||||
|
||||
# 文档打包
|
||||
```
|
||||
npm run docs:build
|
||||
```
|
||||
打包后会在.vitepress文件夹下生成dist目录
|
25
doc/deploy.sh
Normal file
25
doc/deploy.sh
Normal file
@ -0,0 +1,25 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
# 确保脚本抛出遇到的错误
|
||||
set -e
|
||||
|
||||
# 生成静态文件
|
||||
npm run docs:build
|
||||
|
||||
# 进入生成的文件夹
|
||||
cd docs/.vitepress/dist
|
||||
|
||||
# 如果是发布到自定义域名
|
||||
# echo 'www.example.com' > CNAME
|
||||
|
||||
git init
|
||||
git add -A
|
||||
git commit -m 'deploy'
|
||||
|
||||
# 如果发布到 https://<USERNAME>.github.io
|
||||
git push -f git@github.com:xiaoxian521/xiaoxian521.github.io.git master:main
|
||||
|
||||
# 如果发布到 https://<USERNAME>.github.io/<REPO>
|
||||
# git push -f git@github.com:<USERNAME>/<REPO>.git master:gh-pages
|
||||
|
||||
cd -
|
43
doc/docs/.vitepress/config.js
Normal file
43
doc/docs/.vitepress/config.js
Normal file
@ -0,0 +1,43 @@
|
||||
const config = {
|
||||
title: '简约而不简单的文档',
|
||||
themeConfig: {
|
||||
repo: 'https://github.com/xiaoxian521',
|
||||
docsDir: 'docs',
|
||||
locales: {
|
||||
'/': {
|
||||
lang: 'zh-CN',
|
||||
nav: [
|
||||
{ text: '书写规范', link: '/zh/standard/' },
|
||||
],
|
||||
sidebar: [
|
||||
{
|
||||
text: '简介',
|
||||
children: [
|
||||
{ text: '项目描述', link: '/zh/introduction/description' },
|
||||
{ text: '开源精神', link: '/zh/introduction/openSource' },
|
||||
{ text: '贡献者', link: '/zh/introduction/contributor' },
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
'/en/': {
|
||||
lang: 'en-US',
|
||||
nav: [
|
||||
{ text: 'Standard', link: '/en/standard/' },
|
||||
],
|
||||
sidebar: [
|
||||
{
|
||||
text: 'introduction',
|
||||
children: [
|
||||
{ text: 'description', link: '/en/introduction/description' },
|
||||
{ text: 'openSource', link: '/en/introduction/openSource' },
|
||||
{ text: 'contributor', link: '/en/introduction/contributor' },
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = config
|
8
doc/docs/en/index.md
Normal file
8
doc/docs/en/index.md
Normal file
@ -0,0 +1,8 @@
|
||||
:tada: :100:
|
||||
::: tip
|
||||
Welcome to join the open source family. Let's look at the document on the left and explore it! :heart_eyes_cat:
|
||||
:::
|
||||
|
||||
::: warning
|
||||
This document is written by vitepress. As vitepress is being improved, it is normal to encounter small bugs in browsing :joy:
|
||||
:::
|
9
doc/docs/en/introduction/contributor.md
Normal file
9
doc/docs/en/introduction/contributor.md
Normal file
@ -0,0 +1,9 @@
|
||||
# contributor
|
||||
|
||||
:tada: :100:
|
||||
::: tip
|
||||
```
|
||||
和尚 WeChat:18237613535
|
||||
```
|
||||
GitHub:https://github.com/xiaoxian521
|
||||
:::
|
6
doc/docs/en/introduction/description.md
Normal file
6
doc/docs/en/introduction/description.md
Normal file
@ -0,0 +1,6 @@
|
||||
# description
|
||||
|
||||
## Main Technologies:
|
||||
| front end | after end | database |
|
||||
| -- |:--:| -- |
|
||||
| Vue3.0、React、Angular | Node | MySQL、MongoDB、SQlite |
|
26
doc/docs/en/introduction/openSource.md
Normal file
26
doc/docs/en/introduction/openSource.md
Normal file
@ -0,0 +1,26 @@
|
||||
# openSource
|
||||
|
||||
## Why contribute to open source?
|
||||
|
||||
### Improve software you rely on
|
||||
Lots of open source contributors start by being users of software they contribute to. When you find a bug in an open source software you use, you may want to look at the source to see if you can patch it yourself. If that’s the case, then contributing the patch back is the best way to ensure that your friends (and yourself when you update to the next release) will be able to benefit from it.
|
||||
|
||||
### Improve existing skills
|
||||
Whether it’s coding, user interface design, graphic design, writing, or organizing, if you’re looking for practice, there’s a task for you on an open source project.
|
||||
|
||||
### Meet people who are interested in similar things
|
||||
Open source projects with warm, welcoming communities keep people coming back for years. Many people form lifelong friendships through their participation in open source, whether it’s running into each other at conferences or late night online chats about burritos.
|
||||
|
||||
### Find mentors and teach others
|
||||
Working with others on a shared project means you’ll have to explain how you do things, as well as ask other people for help. The acts of learning and teaching can be a fulfilling activity for everyone involved.
|
||||
|
||||
### Build public artifacts that help you grow a reputation (and a career)
|
||||
By definition, all of your open source work is public, which means you get free examples to take anywhere as a demonstration of what you can do.
|
||||
|
||||
### Learn people skills
|
||||
Open source offers opportunities to practice leadership and management skills, such as resolving conflicts, organizing teams of people, and prioritizing work.
|
||||
|
||||
### It’s empowering to be able to make changes, even small ones
|
||||
You don’t have to become a lifelong contributor to enjoy participating in open source. Have you ever seen a typo on a website, and wished someone would fix it? On an open source project, you can do just that. Open source helps people feel agency over their lives and how they experience the world, and that in itself is gratifying.
|
||||
|
||||
### You can learn about the open source spirit here: http://opensource.guide/
|
3
doc/docs/en/standard/index.md
Normal file
3
doc/docs/en/standard/index.md
Normal file
@ -0,0 +1,3 @@
|
||||
# Writing Standard
|
||||
|
||||
|
8
doc/docs/index.md
Normal file
8
doc/docs/index.md
Normal file
@ -0,0 +1,8 @@
|
||||
:tada: :100:
|
||||
::: tip
|
||||
欢迎加入开源大家庭,下面让我们来查看左侧文档进行相关探索吧!:heart_eyes_cat:
|
||||
:::
|
||||
|
||||
::: warning
|
||||
本文档采用vitepress编写,因vitepress正在完善中,浏览中如遇小bug是正常现象。 :joy:
|
||||
:::
|
9
doc/docs/zh/introduction/contributor.md
Normal file
9
doc/docs/zh/introduction/contributor.md
Normal file
@ -0,0 +1,9 @@
|
||||
# 贡献者
|
||||
|
||||
:tada: :100:
|
||||
::: tip
|
||||
```
|
||||
和尚 微信:18237613535
|
||||
```
|
||||
GitHub:https://github.com/xiaoxian521
|
||||
:::
|
6
doc/docs/zh/introduction/description.md
Normal file
6
doc/docs/zh/introduction/description.md
Normal file
@ -0,0 +1,6 @@
|
||||
# 项目描述
|
||||
|
||||
## 主要技术:
|
||||
| 前端 | 后端 | 数据库 |
|
||||
| -- |:--:| -- |
|
||||
| Vue3.0、React、Angular | Node | MySQL、MongoDB、SQlite |
|
23
doc/docs/zh/introduction/openSource.md
Normal file
23
doc/docs/zh/introduction/openSource.md
Normal file
@ -0,0 +1,23 @@
|
||||
# 开源精神
|
||||
|
||||
## 为什么要为开源做贡献?
|
||||
|
||||
### 巩固现有技能
|
||||
无论是撰写代码、设计用户界面、图形设计、撰写文档、亦或是组织活动,假如你有实践的愿望,你总能在开源项目中找到自己的位置。
|
||||
|
||||
### 遇见那些和你”臭味相投”的人
|
||||
开源项目一般都会有一个和谐、热心的社区,以让大家团结一致。实际上,开源界经常发生这样的情形,很多人的深厚友谊都是通过共同参与开源所建立起来的,至于具体的方式,可能是在一次技术研讨会上相谈甚欢,也可能是一直在聊天室中探讨问题。
|
||||
|
||||
### 寻找导师,并且尝试帮助他人
|
||||
和他人共同在一个共享的项目下工作,这意味着需要向他人解释清楚自己是如何做的,同理,也需要向他人求助,询问别人是如何做的。相互学习和彼此教学对于每位参与者都能满载而归。
|
||||
|
||||
### 在公众间建立你的声誉(职业口碑)
|
||||
根据开源的定义,你在开源下所有的工作都是公开的,这也就意味着开源项目是一个很好展示你实力的地方。
|
||||
|
||||
### 学习领导和管理的艺术
|
||||
开源为实践领导力和管理技能提供了很好的机会,比如解决冲突、组织团队、工作的优先级排列。
|
||||
|
||||
### 鼓励作出改变,哪怕改变是很微小的
|
||||
在开源的世界里,作出贡献的不一定非得是花了很长时间拥有大量经验的人。你是否遇到过浏览某些网站发现有拼写错误,希望有人能修改它?其实,在开源的项目中,你只需要做就可以了。没有那么多的顾忌,开源让人们在很舒服的状态做事,而这才是这个世界应有的体验。
|
||||
|
||||
### 关于开源精神你可以来这里学习:http://opensource.guide/zh-hans/
|
3
doc/docs/zh/standard/index.md
Normal file
3
doc/docs/zh/standard/index.md
Normal file
@ -0,0 +1,3 @@
|
||||
# 书写规范
|
||||
|
||||
|
2971
doc/package-lock.json
generated
Normal file
2971
doc/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
14
doc/package.json
Normal file
14
doc/package.json
Normal file
@ -0,0 +1,14 @@
|
||||
{
|
||||
"name": "simplicity",
|
||||
"version": "0.0.1",
|
||||
"description": "简约而不简单的文档",
|
||||
"author": "和尚",
|
||||
"license": "ISC",
|
||||
"scripts": {
|
||||
"docs": "vitepress dev docs",
|
||||
"docs:build": "vitepress build docs"
|
||||
},
|
||||
"devDependencies": {
|
||||
"vitepress": "^0.7.4"
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user