A highly extensible JavaScript
English | 简体中文
Introductionschema-plugin-flow, abbreviated as Sifo ([sɪfɔ]),is a highly extensible JavaScript library. This library allows developers to extend business logic and page layout without touching source code, when the source code is written in Sifo.
sifo-model is the core of Sifo, which using JSON (as Schema) to describe page's structures and using plugins as logic controller. There are three kinds of plugin: modelPlugin、pagePlugin and componentPluign. You can learn about Sifo's basic information and the usage patterns by reading this package's README. sifo-react is a React Component encapsulates sifo-model and sifo-singleton. sifo-react also supportsifoAppDecorator
, with which a normal React Commponent will has extension ability. You can learn about that via package's README or online demos.
sifo-vue is a Vue Component encapsulates sifo-model and sifo-singleton. sifo-vue also support sifoAppDecorator
, with which a normal Vue Commponent will has extension ability. You can learn about that via package's README or online demos.
sifo-singleton is a global extensions holder. All kinds of extend-plugins and extend-components are registered to it.
Three elements of Sifo
schema: to describe page's structures
components
plugins: logic controller

form-extend-demo
sifo-react-extends-demo
simple demo
In this demo, there are seven extend-plugins in seven independent js. The checkbox set which plugin should be registered. Each plugin control different logic and all registered plugins make up a integrated page.
sifo-model
+ react
= sifo-react
sifo-model
+ vue
= sifo-vue
sifo-react
+ sifo-mplg-form-core
+ ant-design
= sifo-mplg-form-antd
sifo-react
+ sifo-mplg-form-core
+ fusion
= sifo-mplg-form-fusion
sifo-vue
+ sifo-mplg-form-core
+ ant-design-vue
= sifo-mplg-form-antdv

$ npm i @schema-plugin-flow/sifo-model --save $ npm i @schema-plugin-flow/sifo-react --save $ npm i @schema-plugin-flow/sifo-vue --save How Sifo extensions works
project
extend.js
import SifoSingleton from '@schema-plugin-flow/sifo-singleton'; const singleton = new SifoSingleton('quick-start'); // target namespace singleton.registerItem('testExtendId', () => { return { plugins, components } });
app.js
import React from 'react'; import ReactDOM from "react-dom"; import SifoApp from '@schema-plugin-flow/sifo-react'; const plugins = [{ modelPlugin, componentPlugin, pagePlugin }]; class App extends React.Component { render() { return ( <SifoApp namespace='quick-start' components={components} schema={schema} plugins={plugins} /> ); } } ReactDOM.render( <App /> rootElement );
runtime
load extend js
load app js
you should load the extend js before sifoApp rendered.
<script src="extend.js"></script> <script src="app.js"></script> Try in local
React
clone code and start$ git clone https://github.com/alibaba/schema-plugin-flow.git
$ cd schema-plugin-flow
$ npm run i
$ npm run start
then visit http://localhost:8000
.
Vue
clone code and start$ git clone https://github.com/alibaba/schema-plugin-flow.git
$ cd schema-plugin-flow
$ npm run i
$ npm run i-vue
$ npm run start-vue
then visit http://localhost:8080
.
Try online (codesandbox.io)
sifo-react
sifo-react-quick-start sifo-react-decorator sifo-mplg-form-antd sifo-react-mplg-optimize sifo-mplg-drag-reactsifo-vue
sifo-vue-quick-start sifo-vue-decorator sifo-vue-use-optimize sifo-mplg-form-antdv sifo-mplg-drag-vue版权声明:
1、该文章(资料)来源于互联网公开信息,我方只是对该内容做点评,所分享的下载地址为原作者公开地址。2、网站不提供资料下载,如需下载请到原作者页面进行下载。