AMIS:這是讓前端失業的一個框架

程序員的成長之路
互聯網/程序員/成長/職場 
關注


閱讀本文大概須要 2.8 分鐘。javascript

AMIS

一種頁面渲染器,能夠直接基於特定格式的JSON配置將頁面渲染出來,結合業務方API可快速完成各種管理頁面的開發。前端

目前用於百度內部AMIS平臺,已有100+部門接入使用,建立1.2w +頁面,歡迎你們使用和提建議。java

經過amis搭建本身的後臺系統,能夠參考這:https//github.com/fex-team/amis-admingit

AMIS是作啥的

徹底基於 JSON 的 mis 工具,,不須要前端就能夠本身搭建信息管理系統,好比監控啊管理啊之類的,這是能讓前端失業的一個框架。程序員

這個截圖全部的元素, 都由json控制, 不須要任何前端代碼,十足的後端福利。
github

AMIS學習曲線高麼

我的感受,多看看文檔的示例, 通常需求增刪改查什麼的都沒啥問題。(首頁就能找到【使用文檔】web

大概看下基本用法中的例子:面試

爲了簡化前端開發,amis Renderer 可以直接用配置就能將頁面渲染出來。
json

先來看個簡單的例子。後端

{
"$schema": "https://houtai.baidu.com/v2/schemas/page.json#",
"type": "page",
"title": "這是標題部分",
"subTitle": "這是子標題",
"remark": "這是小提示信息",
"aside": "這是側邊欄部分",
"body": "這是內容區",
"toolbar": "這是工具欄部分"
}

PS: 能夠經過編輯器實時修改預覽

從上面的內容能夠看出,一個簡單頁面框架已經基本出來了,這是 amis 渲染器配置的入口。從 page 渲染器開始出發,經過在容器中放置不一樣的渲染器來配置不一樣性質的頁面。

簡單說明以上配置信息。

  • $schema 這個字段能夠忽略,他是指定當前 JSON 配置是符合指定路徑 https://houtai.baidu.com/v2/schemas/page.json 的 JSON SCHEMA 文件描述的。PS: 編輯器就是靠這個描述文件提示的,能夠 hover 到字段上看效果。

  • type 指定渲染器類型,這裏指定的類型爲 page。更多渲染器類型能夠去這裏面查看。

  • title 從 title 開始就是對應的渲染模型上的屬性了。這裏用來指定標題內容。

  • subTitle 副標題.

  • remark 標題上面的提示信息

  • aside 邊欄區域內容

  • body 內容區域的內容

  • toolbar 工具欄部分的內容

這裏有三個配置都是容器類型的。asidebody 和 toolbar


什麼是容器類型?


容器類型表示,他可以把其餘渲染類型放進來。以上的例子爲了簡單,直接放了個字符串。


字符串類型內部是把他當成了 tpl 渲染器來處理,在這裏也能夠經過對象的形式指定,如如下的例子的 body 區域是徹底等價的。

{
"$schema": "https://houtai.baidu.com/v2/schemas/page.json",
"type": "page",
"body": {
"type": "tpl",
"tpl": "這是內容區"
}
}

容器內能夠直接放一個渲染器,也能夠放多個,用數組包起來便可如:

{
"$schema": "https://houtai.baidu.com/v2/schemas/page.json",
"type": "page",
"body": [
{
"type": "tpl",
"tpl": "<p>段落1</p>"
},

{
"type": "tpl",
"tpl": "<p>段落2</p>"
},

"<p>段落3</p>"
]
}

再來看一個表單頁面的列子

{
"$schema": "https://houtai.baidu.com/v2/schemas/page.json#",
"type": "page",
"body": {
"api": "/api/mock2/form/saveForm",
"type": "form",
"title": "聯繫咱們",
"controls": [
{
"type": "text",
"label": "姓名",
"name": "name"
},

{
"type": "email",
"label": "郵箱",
"name": "email",
"required": true
},

{
"type": "textarea",
"label": "內容",
"name": "content",
"required": true
}
],
"actions": [
{
"label": "發送",
"type": "submit",
"primary": true
}
]
}
}

這個例子就是在 body 容器內,放置一個 form 類型的渲染器,它就成了一個簡單的表單提交頁面了,controls 中能夠決定放哪些表單項目,actions 中能夠放置操做按鈕。

GitHub地址

https://github.com/baidu/amis


    End



以前發了一篇【美團】Java 崗 154 道面試題 的文章,只有面試題沒有解析,接下來準備下方公衆號內發佈解析(工做日:面試題解析+IT 趣圖,週末:IT 趣圖),利用碎片時間看面試題解析,持續精進,趕忙關注一波。



往期精彩回顧

乾貨收藏 | Java 程序員必備的一些流程圖

讓web開發部署提速 8 倍的一款 IDEA 插件,我參與貢獻了

一週 GitHub 開源項目推薦:阿里、騰訊、陌陌、bilibili……

淘寶服務端高併發分佈式架構演進之路

【底層原理】進程與線程的一個簡單解釋

HR 問「你目前有幾個 offer」,聰明人會怎麼說?

如何超過大多數人(方法論乾貨)

寫留言

朕已閱 

本文分享自微信公衆號 - 程序員的成長之路(cxydczzl)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索