184 lines
6.8 KiB
Markdown
184 lines
6.8 KiB
Markdown
# nunu-layout-basic - Basic Layout
|
|
|
|
Nunu is an application scaffold based on Golang. Its name comes from a game character in League of Legends, a little boy riding on the shoulder of a yeti. Like Nunu, this project also stands on the shoulders of giants. It is a composition of various popular libraries from the Golang ecosystem, which can help you quickly build efficient and reliable applications.
|
|
|
|
[简体中文介绍](https://github.com/go-nunu/nunu-layout-basic/blob/main/README_zh.md)
|
|
|
|

|
|
|
|
## Documentation
|
|
* [User Guide](https://github.com/go-nunu/nunu/blob/main/docs/en/guide.md)
|
|
* [Architecture](https://github.com/go-nunu/nunu/blob/main/docs/en/architecture.md)
|
|
* [Getting Started Tutorial](https://github.com/go-nunu/nunu/blob/main/docs/en/tutorial.md)
|
|
|
|
## Features
|
|
- **Gin**: https://github.com/gin-gonic/gin
|
|
- **Gorm**: https://github.com/go-gorm/gorm
|
|
- **Wire**: https://github.com/google/wire
|
|
- **Viper**: https://github.com/spf13/viper
|
|
- **Zap**: https://github.com/uber-go/zap
|
|
- **Golang-jwt**: https://github.com/golang-jwt/jwt
|
|
- **Go-redis**: https://github.com/go-redis/redis
|
|
- **Testify**: https://github.com/stretchr/testify
|
|
- **Sonyflake**: https://github.com/sony/sonyflake
|
|
- **gocron**: https://github.com/go-co-op/gocron
|
|
- More...
|
|
|
|
## Highlights
|
|
* **Low Learning Curve and Customization**: Nunu encapsulates popular libraries that Gophers are familiar with. You can easily customize the application to meet specific requirements.
|
|
* **High Performance and Scalability**: Nunu aims to be high-performance and scalable. It utilizes the latest technologies and best practices to ensure your application can handle high traffic and large data volumes.
|
|
* **Security and Reliability**: Nunu uses stable and reliable third-party libraries to ensure the security and reliability of your application.
|
|
* **Modularity and Extensibility**: Nunu is designed to be modular and extensible. You can easily add new features and functionalities by using third-party libraries or writing your own modules.
|
|
* **Comprehensive Documentation and Test Coverage**: Nunu has comprehensive documentation and test coverage. It provides detailed documentation and examples to help you get started quickly. It also includes a test suite to ensure your application works as expected.
|
|
|
|
## Nunu CLI
|
|
|
|

|
|
|
|
## Directory Structure
|
|
```
|
|
.
|
|
├── cmd
|
|
│ └── server
|
|
│ ├── main.go
|
|
│ ├── wire.go
|
|
│ └── wire_gen.go
|
|
├── config
|
|
│ ├── local.yml
|
|
│ └── prod.yml
|
|
├── internal
|
|
│ ├── handler
|
|
│ │ ├── handler.go
|
|
│ │ └── user.go
|
|
│ ├── middleware
|
|
│ │ └── cors.go
|
|
│ ├── model
|
|
│ │ └── user.go
|
|
│ ├── repository
|
|
│ │ ├── repository.go
|
|
│ │ └── user.go
|
|
│ ├── server
|
|
│ │ └── http.go
|
|
│ └── service
|
|
│ ├── service.go
|
|
│ └── user.go
|
|
├── pkg
|
|
├── LICENSE
|
|
├── README.md
|
|
├── README_zh.md
|
|
├── go.mod
|
|
└── go.sum
|
|
|
|
```
|
|
|
|
This is a classic directory structure for a Golang project, which includes the following directories:
|
|
|
|
- cmd: Contains the entry points of the application, including the main function and dependency injection code.
|
|
- server: The main entry point of the application, including the main function and dependency injection code.
|
|
- main.go: The main function used to start the application.
|
|
- wire.go: The dependency injection code generated using Wire.
|
|
- wire_gen.go: The dependency injection code generated using Wire.
|
|
|
|
- config: Contains the configuration files of the application.
|
|
- local.yml: The configuration file for the local environment.
|
|
- prod.yml: The configuration file for the production environment.
|
|
|
|
- internal: Contains the internal code of the application.
|
|
- handler: Contains the handlers for handling HTTP requests.
|
|
- handler.go: The common handler for handling HTTP requests.
|
|
- user.go: The handler for handling user-related HTTP requests.
|
|
- middleware: Contains the middleware code.
|
|
- cors.go: The CORS (Cross-Origin Resource Sharing) middleware.
|
|
- model: Contains the data model code.
|
|
- user.go: The user data model.
|
|
- repository: Contains the data access code.
|
|
- repository.go: The common interface for data access.
|
|
- user.go: The implementation of the user data access interface.
|
|
- server: Contains the server code.
|
|
- http.go: The implementation of the HTTP server.
|
|
- service: Contains the business logic code.
|
|
- service.go: The common interface for business logic.
|
|
- user.go: The implementation of the user business logic.
|
|
|
|
- pkg: Contains the public packages of the application.
|
|
- storage: Contains the storage files of the application.
|
|
- go.mod: The Go module file.
|
|
- go.sum: The dependency versions file for the Go module.
|
|
|
|
## Requirements
|
|
To use Nunu, you need to have the following software installed on your system:
|
|
|
|
* Golang 1.16 or higher
|
|
* Git
|
|
|
|
### Installation
|
|
|
|
You can install Nunu using the following command:
|
|
|
|
```bash
|
|
go install github.com/go-nunu/nunu@latest
|
|
```
|
|
|
|
### Creating a New Project
|
|
|
|
You can create a new Golang project using the following command:
|
|
|
|
```bash
|
|
nunu new projectName
|
|
```
|
|
|
|
By default, it will pull from the GitHub repository, but you can also use a mirror repository for faster access:
|
|
|
|
```
|
|
// Use the basic template
|
|
nunu new projectName -r https://gitee.com/go-nunu/nunu-layout-basic.git
|
|
// Use the advanced template
|
|
nunu new projectName -r https://gitee.com/go-nunu/nunu-layout-advanced.git
|
|
```
|
|
|
|
This command will create a directory named `projectName` and generate an elegant Golang project structure within it.
|
|
|
|
### Creating Components
|
|
|
|
You can create handlers, services, repositories, and models for your project using the following commands:
|
|
|
|
```bash
|
|
nunu create handler user
|
|
nunu create service user
|
|
nunu create repository user
|
|
nunu create model user
|
|
```
|
|
or
|
|
```
|
|
nunu create all user
|
|
```
|
|
|
|
These commands will create components named `UserHandler`, `UserService`, `UserDao`, and `UserModel` respectively and place them in the correct directories.
|
|
|
|
### Starting the Project
|
|
|
|
You can quickly start your project using the following command:
|
|
|
|
```bash
|
|
nunu run
|
|
```
|
|
|
|
This command will start your Golang project and support hot-reloading of files.
|
|
|
|
### Compiling wire.go
|
|
|
|
You can quickly compile `wire.go` using the following command:
|
|
|
|
```bash
|
|
nunu wire
|
|
```
|
|
|
|
This command will compile your `wire.go` file and generate the required dependencies.
|
|
|
|
## Contribution
|
|
|
|
If you find any issues or have any improvement suggestions, please feel free to raise an issue or submit a pull request. Your contributions are highly appreciated!
|
|
|
|
## License
|
|
|
|
Nunu is released under the MIT License. See the [LICENSE](LICENSE) file for more information. |