diff --git a/sites/a.mla.xin/components/mip-bannerapi/README.md b/sites/a.mla.xin/components/mip-bannerapi/README.md
new file mode 100644
index 000000000..b10fa3aee
--- /dev/null
+++ b/sites/a.mla.xin/components/mip-bannerapi/README.md
@@ -0,0 +1,63 @@
+# mip-bannerapi
+
+标题|内容
+----|----
+类型|
+支持布局|
+所需脚本| [https://c.mipcdn.com/extensions/platform/v2/a.mla.xin/mip-bannerapi/mip-bannerapi.js](https://c.mipcdn.com/extensions/platform/v2/a.mla.xin/mip-bannerapi/mip-bannerapi.js)
+
+## 说明
+
+扩展官方 mip-carousel 多图轮播,通过json的方式获取数据
+
+## 示例
+
+示例说明
+
+```
+
+
+```
+
+## 属性
+
+### url
+
+**获取json的地址**:
+
+**必选项**:是
+
+**单位**:无
+
+**默认值**:#
+
+### bwidth
+
+**轮播图的宽度**:
+
+**必选项**:否
+
+**单位**:px
+
+**默认值**:1920
+
+### bheight
+
+**轮播图的宽度**:
+
+**必选项**:否
+
+**单位**:px
+
+**默认值**:500
+
+### defer
+
+**轮播的间隔时间**:
+
+**必选项**:否
+
+**单位**:px
+
+**默认值**:3000
diff --git a/sites/a.mla.xin/components/mip-bannerapi/example/index.html b/sites/a.mla.xin/components/mip-bannerapi/example/index.html
new file mode 100644
index 000000000..8a8764d06
--- /dev/null
+++ b/sites/a.mla.xin/components/mip-bannerapi/example/index.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+ MIP page
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sites/a.mla.xin/components/mip-bannerapi/mip-bannerapi.js b/sites/a.mla.xin/components/mip-bannerapi/mip-bannerapi.js
new file mode 100644
index 000000000..a6bc3385c
--- /dev/null
+++ b/sites/a.mla.xin/components/mip-bannerapi/mip-bannerapi.js
@@ -0,0 +1,33 @@
+const { util } = MIP
+const { dom } = util
+export default class MIPBannerapi extends MIP.CustomElement {
+ build () {
+ let me = this
+ let url = this.element.getAttribute('url')
+ let width = this.element.getAttribute('bwidth') ? this.element.getAttribute('bwidth') : 1920
+ let height = this.element.getAttribute('bheight') ? this.element.getAttribute('bheight') : 500
+ let defer = this.element.getAttribute('defer') ? this.element.getAttribute('defer') : 5000
+ let carousel = dom.create(``)
+ let dot = dom.create(``)
+ let objHtml = ''
+ let dotHtml = ''
+ window.fetch(url).then(function (res) {
+ return res.json()
+ }).then(function (data) {
+ let oData = data.data
+ for (let i = 0; i < oData.length; i++) {
+ objHtml = `` + objHtml
+ if (i === 0) {
+ dotHtml += ``
+ } else {
+ dotHtml += ``
+ }
+ }
+ dotHtml = `` + dotHtml + `
`
+ carousel.innerHTML = objHtml
+ dot.innerHTML = dotHtml
+ me.element.appendChild(carousel)
+ me.element.appendChild(dot)
+ })
+ }
+}
diff --git a/sites/a.mla.xin/mip.config.js b/sites/a.mla.xin/mip.config.js
new file mode 100644
index 000000000..d5457bef4
--- /dev/null
+++ b/sites/a.mla.xin/mip.config.js
@@ -0,0 +1,31 @@
+/**
+ * @file mip页面项目配置项
+ * @author
+ */
+
+module.exports = {
+ dev: {
+ /**
+ * 启动mip server调试的端口号
+ *
+ * @type {number}
+ */
+ port: 8111,
+
+ /**
+ * 启用调试页面自动刷新
+ *
+ * @type {boolean}
+ */
+ livereload: true,
+
+ /**
+ * server 启动自动打开页面,false 为关闭
+ * 如:
+ * autoopen: '/example/index.html'
+ *
+ * @type {string|boolean}
+ */
+ autoopen: false
+ }
+}
diff --git a/sites/a.mla.xin/package.json b/sites/a.mla.xin/package.json
new file mode 100644
index 000000000..7578cfdd3
--- /dev/null
+++ b/sites/a.mla.xin/package.json
@@ -0,0 +1,25 @@
+{
+ "name": "mla.xin",
+ "version": "0.0.1",
+ "description": "banner通过json的方式获取",
+ "scripts": {
+ "dev": "mip2 dev",
+ "build": "mip2 build",
+ "lint": "npm run lint:js",
+ "lint:js": "eslint --ext .vue,.js .",
+ "fix": "npm run fix:js",
+ "fix:js": "eslint --ext .vue,.js . --fix"
+ },
+ "author": "mla (admin@mla.xin)",
+ "dependencies": {},
+ "devDependencies": {
+ "eslint": "^4.19.1",
+ "eslint-config-standard": "^11.0.0",
+ "eslint-plugin-import": "^2.12.0",
+ "eslint-plugin-jsdoc": "^3.7.1",
+ "eslint-plugin-node": "^6.0.1",
+ "eslint-plugin-promise": "^3.8.0",
+ "eslint-plugin-standard": "^3.1.0",
+ "eslint-plugin-vue": "^4.5.0"
+ }
+}