Giter Site home page Giter Site logo

chihm / symph-joy Goto Github PK

View Code? Open in Web Editor NEW

This project forked from symph-joy/symph-joy

0.0 1.0 0.0 623 KB

Minimalistic framework for React applications, inspiration comes from Next.js and Dva

Home Page: https://lnlfps.github.io/symph-joy

License: MIT License

JavaScript 100.00%

symph-joy's Introduction

介绍

官网:https://lnlfps.github.io/symph-joy

@symph/joy让我们轻松的进行前端应用开发,零配置可用,简单清晰的业务和数据管理模块,已集成大量最佳实践的优化方案,即使你才刚接触React,也可以轻松创建高可用、可维护的前端应用。

该项目已在生产环境大量使用,如有任何疑问、使用帮助、bug反馈、特性讨论,请和我们联系(邮件:[email protected]; QQ群:929743297),或者到github创建issue,欢迎加入。

特征

  • 零配置可用,优化的默认配置,快速开发,已集成react、redux、react-router4和ES6、7语法支持等
  • 支持服务端渲染,在业务组件内部获取渲染数据,组件内聚更高,便于维护
  • 支持静态版本导出,脱离Node.js运行,也可单独导出静态页面
  • 使用MVC架构,应用结构清晰、依赖明确,创新Model类简化业务方法和数据管理,简化和规范redux的使用
  • 支持aync语法来编排业务,监听业务执行结果,再复杂的业务逻辑也能轻松找到解决方案
  • 使用@装饰器的方式,动态注册model和controller,不侵入业务代码,代码更干净
  • 内置网络请求代理服务,解决跨域和服务中转问题,前后端分离开发畅通无阻
  • 支持插件化配置,自定义配置插件也很容易

安装和开始

运行yarn init创建一个空工程,并填写项目的基本信息,当然也可以在一个已有的项目中直接安装。

yarn add  @symph/joy react react-dom

@symph/joy 只支持 React 16及以上版本

添加NPM脚本到package.json文件:

{
  "scripts": {
    "dev": "joy dev"
  }
}

然后就可以开始正式工作了,下面从hello world示例开始,首先编写一个Model组件来管理应用的数据和业务,如果没有复杂的数据需要管理,也可以省略这步。

// /src/models/HelloModel.js

import model from '@symph/joy/model'

@model() // 标明这是一个Model。
export default class HelloModel {
  namespace = 'hello'
  
  // model的初始状态数据
  initState = {
    message: 'Welcome to @symph/joy!'
  }
  
  // async业务方法,从服务端异步获取新的欢迎消息
  async fetchMessage () {
    let newMsg = await fetch('/hello_message');
    //更新model的状态,界面的状态也会自动更新
    this.setState({
      message: newMsg
    });
  }
 
}

接下来编写界面,展示欢迎消息。@symph/joy默认使用/src/index.js文件作为应用的启动入口组件,可以在这里初始化基础功能模块和设置子页面路由等。

// /src/index.js
import React, { Component } from 'react'
import {controller, requireModel } from '@symph/joy/controller'
import HelloModel from './models/HelloModel'


@controller((store) => {             // 标明这是一个Controller
  return {
    message: store.hello.message,    // 绑定model中的数据
  }
})
@requireModel(HelloModel)            // 注册依赖的Model
export default class HelloController extends Component {
  
  async componentDidMount() {
    await this.props.dispatch({
      type: 'hello/fetchMessage'
    })
  }
  
  render(){
    return <div>${this.props.message}</div>
  }
}

最后运行yarn run dev命令,在浏览器中输入访问地址http://localhost:3000,即可看到刚才写的页面。如果需要使用其它端口来启动应用 yarn run dev -- -p <your port here>

到目前为止,一个简单完整的前端已经创建完成,还有更多神奇的特性,等着你发现哦,请查看 详细使用指南

文档

https://lnlfps.github.io/symph-joy

快速连接:

联系我们

邮件:[email protected] QQ群:929743297

symph-joy's People

Watchers

Chihm avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.