From 972b73a9dbb21bd3c0f8f625f535d38dec80f717 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=AD=E8=83=9C=E5=BC=BA?= Date: Thu, 23 Aug 2018 15:07:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E9=A1=B9mpvue=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E7=A7=BB=E6=A4=8D=E7=A4=BA=E4=BE=8B=EF=BC=9A=E3=80=8CONE=20?= =?UTF-8?q?=C2=B7=20=E4=B8=80=E4=B8=AA=E3=80=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/uniapp-one/App.vue | 75 +++++ examples/uniapp-one/README.md | 11 + examples/uniapp-one/components/article.vue | 64 +++++ examples/uniapp-one/components/movieItem.vue | 89 ++++++ .../mpvue-wxparse/components/wxParseImg.vue | 97 +++++++ .../components/wxParseTemplate0.vue | 101 +++++++ .../components/wxParseTemplate1.vue | 92 +++++++ .../components/wxParseTemplate10.vue | 92 +++++++ .../components/wxParseTemplate11.vue | 80 ++++++ .../components/wxParseTemplate2.vue | 92 +++++++ .../components/wxParseTemplate3.vue | 92 +++++++ .../components/wxParseTemplate4.vue | 92 +++++++ .../components/wxParseTemplate5.vue | 92 +++++++ .../components/wxParseTemplate6.vue | 92 +++++++ .../components/wxParseTemplate7.vue | 92 +++++++ .../components/wxParseTemplate8.vue | 92 +++++++ .../components/wxParseTemplate9.vue | 92 +++++++ .../mpvue-wxparse/components/wxParseVideo.vue | 15 + .../mpvue-wxparse/libs/html2json.js | 252 +++++++++++++++++ .../mpvue-wxparse/libs/htmlparser.js | 188 +++++++++++++ .../mpvue-wxparse/libs/wxDiscode.js | 197 ++++++++++++++ .../components/mpvue-wxparse/wxParse.css | 257 ++++++++++++++++++ .../components/mpvue-wxparse/wxParse.vue | 65 +++++ .../uniapp-one/components/questionList.vue | 97 +++++++ examples/uniapp-one/components/readList.vue | 98 +++++++ examples/uniapp-one/main.js | 13 + examples/uniapp-one/manifest.json | 53 ++++ examples/uniapp-one/pages.json | 79 ++++++ .../uniapp-one/pages/daily/detail/main.vue | 145 ++++++++++ examples/uniapp-one/pages/daily/main.vue | 141 ++++++++++ examples/uniapp-one/pages/home/main.vue | 65 +++++ examples/uniapp-one/pages/home/weather.vue | 56 ++++ .../uniapp-one/pages/movie/detail/main.vue | 38 +++ examples/uniapp-one/pages/movie/main.vue | 51 ++++ examples/uniapp-one/pages/read/essay/main.vue | 34 +++ examples/uniapp-one/pages/read/main.vue | 68 +++++ .../uniapp-one/pages/read/question/main.vue | 92 +++++++ .../uniapp-one/static/assert/arrow-right.png | Bin 0 -> 2253 bytes examples/uniapp-one/static/assert/music.png | Bin 0 -> 6654 bytes examples/uniapp-one/static/assert/pause.png | Bin 0 -> 2781 bytes examples/uniapp-one/static/assert/play.png | Bin 0 -> 3154 bytes .../uniapp-one/static/icon/daily-active.png | Bin 0 -> 5150 bytes examples/uniapp-one/static/icon/daily.png | Bin 0 -> 5179 bytes .../uniapp-one/static/icon/home-active.png | Bin 0 -> 12503 bytes examples/uniapp-one/static/icon/home.png | Bin 0 -> 12455 bytes .../uniapp-one/static/icon/movie-active.png | Bin 0 -> 2227 bytes examples/uniapp-one/static/icon/movie.png | Bin 0 -> 2263 bytes .../uniapp-one/static/icon/read-active.png | Bin 0 -> 4355 bytes examples/uniapp-one/static/icon/read.png | Bin 0 -> 4396 bytes examples/uniapp-one/store/index.js | 33 +++ examples/uniapp-one/store/modules/home.js | 38 +++ examples/uniapp-one/store/modules/movie.js | 40 +++ examples/uniapp-one/store/modules/read.js | 47 ++++ examples/uniapp-one/store/modules/weather.js | 38 +++ examples/uniapp-one/store/mutations_type.js | 14 + examples/uniapp-one/utils/api.js | 29 ++ examples/uniapp-one/utils/request.js | 29 ++ 57 files changed, 3709 insertions(+) create mode 100644 examples/uniapp-one/App.vue create mode 100644 examples/uniapp-one/README.md create mode 100644 examples/uniapp-one/components/article.vue create mode 100644 examples/uniapp-one/components/movieItem.vue create mode 100644 examples/uniapp-one/components/mpvue-wxparse/components/wxParseImg.vue create mode 100644 examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate0.vue create mode 100644 examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate1.vue create mode 100644 examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate10.vue create mode 100644 examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate11.vue create mode 100644 examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate2.vue create mode 100644 examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate3.vue create mode 100644 examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate4.vue create mode 100644 examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate5.vue create mode 100644 examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate6.vue create mode 100644 examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate7.vue create mode 100644 examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate8.vue create mode 100644 examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate9.vue create mode 100644 examples/uniapp-one/components/mpvue-wxparse/components/wxParseVideo.vue create mode 100644 examples/uniapp-one/components/mpvue-wxparse/libs/html2json.js create mode 100644 examples/uniapp-one/components/mpvue-wxparse/libs/htmlparser.js create mode 100644 examples/uniapp-one/components/mpvue-wxparse/libs/wxDiscode.js create mode 100644 examples/uniapp-one/components/mpvue-wxparse/wxParse.css create mode 100644 examples/uniapp-one/components/mpvue-wxparse/wxParse.vue create mode 100644 examples/uniapp-one/components/questionList.vue create mode 100644 examples/uniapp-one/components/readList.vue create mode 100644 examples/uniapp-one/main.js create mode 100644 examples/uniapp-one/manifest.json create mode 100644 examples/uniapp-one/pages.json create mode 100644 examples/uniapp-one/pages/daily/detail/main.vue create mode 100644 examples/uniapp-one/pages/daily/main.vue create mode 100644 examples/uniapp-one/pages/home/main.vue create mode 100644 examples/uniapp-one/pages/home/weather.vue create mode 100644 examples/uniapp-one/pages/movie/detail/main.vue create mode 100644 examples/uniapp-one/pages/movie/main.vue create mode 100644 examples/uniapp-one/pages/read/essay/main.vue create mode 100644 examples/uniapp-one/pages/read/main.vue create mode 100644 examples/uniapp-one/pages/read/question/main.vue create mode 100644 examples/uniapp-one/static/assert/arrow-right.png create mode 100644 examples/uniapp-one/static/assert/music.png create mode 100644 examples/uniapp-one/static/assert/pause.png create mode 100644 examples/uniapp-one/static/assert/play.png create mode 100644 examples/uniapp-one/static/icon/daily-active.png create mode 100644 examples/uniapp-one/static/icon/daily.png create mode 100644 examples/uniapp-one/static/icon/home-active.png create mode 100644 examples/uniapp-one/static/icon/home.png create mode 100644 examples/uniapp-one/static/icon/movie-active.png create mode 100644 examples/uniapp-one/static/icon/movie.png create mode 100644 examples/uniapp-one/static/icon/read-active.png create mode 100644 examples/uniapp-one/static/icon/read.png create mode 100644 examples/uniapp-one/store/index.js create mode 100644 examples/uniapp-one/store/modules/home.js create mode 100644 examples/uniapp-one/store/modules/movie.js create mode 100644 examples/uniapp-one/store/modules/read.js create mode 100644 examples/uniapp-one/store/modules/weather.js create mode 100644 examples/uniapp-one/store/mutations_type.js create mode 100644 examples/uniapp-one/utils/api.js create mode 100644 examples/uniapp-one/utils/request.js diff --git a/examples/uniapp-one/App.vue b/examples/uniapp-one/App.vue new file mode 100644 index 00000000..5e83aec6 --- /dev/null +++ b/examples/uniapp-one/App.vue @@ -0,0 +1,75 @@ + + + diff --git a/examples/uniapp-one/README.md b/examples/uniapp-one/README.md new file mode 100644 index 00000000..6d34d929 --- /dev/null +++ b/examples/uniapp-one/README.md @@ -0,0 +1,11 @@ +# uni-one + +> 使用uni-app开发的 [「ONE · 一个」](http://wufazhuce.com) +> 移植自[mpvue-one](https://github.com/feng-fu/mpvue-one/blob/master/README.md) +> 本项目仅作为mpvue项目移植示例 + +## 使用方式 +将项目拖入[HbuildX](http://www.dcloud.io/hbuilderx.html),直接运行即可 + +## 注意事项 +* 在小程序中预览提示合法域名校验出错,需打开微信开发者工具内 设置-项目设置,勾选“不校验合法域名、web-view(业务域名)、TLS 版本以及 HTTPS 证书”。 \ No newline at end of file diff --git a/examples/uniapp-one/components/article.vue b/examples/uniapp-one/components/article.vue new file mode 100644 index 00000000..e2628a45 --- /dev/null +++ b/examples/uniapp-one/components/article.vue @@ -0,0 +1,64 @@ + + + + + + diff --git a/examples/uniapp-one/components/movieItem.vue b/examples/uniapp-one/components/movieItem.vue new file mode 100644 index 00000000..8ae318a8 --- /dev/null +++ b/examples/uniapp-one/components/movieItem.vue @@ -0,0 +1,89 @@ + + + + + + diff --git a/examples/uniapp-one/components/mpvue-wxparse/components/wxParseImg.vue b/examples/uniapp-one/components/mpvue-wxparse/components/wxParseImg.vue new file mode 100644 index 00000000..1d0f9142 --- /dev/null +++ b/examples/uniapp-one/components/mpvue-wxparse/components/wxParseImg.vue @@ -0,0 +1,97 @@ + + + diff --git a/examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate0.vue b/examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate0.vue new file mode 100644 index 00000000..22603e52 --- /dev/null +++ b/examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate0.vue @@ -0,0 +1,101 @@ + + + diff --git a/examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate1.vue b/examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate1.vue new file mode 100644 index 00000000..6209da4f --- /dev/null +++ b/examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate1.vue @@ -0,0 +1,92 @@ + + + diff --git a/examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate10.vue b/examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate10.vue new file mode 100644 index 00000000..b3f2100b --- /dev/null +++ b/examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate10.vue @@ -0,0 +1,92 @@ + + + diff --git a/examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate11.vue b/examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate11.vue new file mode 100644 index 00000000..5f2d1713 --- /dev/null +++ b/examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate11.vue @@ -0,0 +1,80 @@ + + + diff --git a/examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate2.vue b/examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate2.vue new file mode 100644 index 00000000..bb006971 --- /dev/null +++ b/examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate2.vue @@ -0,0 +1,92 @@ + + + diff --git a/examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate3.vue b/examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate3.vue new file mode 100644 index 00000000..d52687f7 --- /dev/null +++ b/examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate3.vue @@ -0,0 +1,92 @@ + + + diff --git a/examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate4.vue b/examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate4.vue new file mode 100644 index 00000000..2c0d2ccb --- /dev/null +++ b/examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate4.vue @@ -0,0 +1,92 @@ + + + diff --git a/examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate5.vue b/examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate5.vue new file mode 100644 index 00000000..c66270fd --- /dev/null +++ b/examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate5.vue @@ -0,0 +1,92 @@ +s + + diff --git a/examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate6.vue b/examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate6.vue new file mode 100644 index 00000000..0d9c1e33 --- /dev/null +++ b/examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate6.vue @@ -0,0 +1,92 @@ + + + diff --git a/examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate7.vue b/examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate7.vue new file mode 100644 index 00000000..139ef711 --- /dev/null +++ b/examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate7.vue @@ -0,0 +1,92 @@ + + + diff --git a/examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate8.vue b/examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate8.vue new file mode 100644 index 00000000..b960a6a2 --- /dev/null +++ b/examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate8.vue @@ -0,0 +1,92 @@ + + + diff --git a/examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate9.vue b/examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate9.vue new file mode 100644 index 00000000..a5978f5a --- /dev/null +++ b/examples/uniapp-one/components/mpvue-wxparse/components/wxParseTemplate9.vue @@ -0,0 +1,92 @@ + + + diff --git a/examples/uniapp-one/components/mpvue-wxparse/components/wxParseVideo.vue b/examples/uniapp-one/components/mpvue-wxparse/components/wxParseVideo.vue new file mode 100644 index 00000000..43b5b9fb --- /dev/null +++ b/examples/uniapp-one/components/mpvue-wxparse/components/wxParseVideo.vue @@ -0,0 +1,15 @@ + + + diff --git a/examples/uniapp-one/components/mpvue-wxparse/libs/html2json.js b/examples/uniapp-one/components/mpvue-wxparse/libs/html2json.js new file mode 100644 index 00000000..e4c2bf66 --- /dev/null +++ b/examples/uniapp-one/components/mpvue-wxparse/libs/html2json.js @@ -0,0 +1,252 @@ +/** + * html2Json 改造来自: https://github.com/Jxck/html2json + * + * + * author: Di (微信小程序开发工程师) + * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com) + * 垂直微信小程序开发交流社区 + * + * github地址: https://github.com/icindy/wxParse + * + * for: 微信小程序富文本解析 + * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184 + */ + +import wxDiscode from './wxDiscode'; +import HTMLParser from './htmlparser'; + +const placeImgeUrlHttps = 'https'; + +function makeMap(str) { + const obj = {}; + const items = str.split(','); + for (let i = 0; i < items.length; i += 1) obj[items[i]] = true; + return obj; +} + +// Block Elements - HTML 5 +const block = makeMap('br,a,code,address,article,applet,aside,audio,blockquote,button,canvas,center,dd,del,dir,div,dl,dt,fieldset,figcaption,figure,footer,form,frameset,h1,h2,h3,h4,h5,h6,header,hgroup,hr,iframe,ins,isindex,li,map,menu,noframes,noscript,object,ol,output,p,pre,section,script,table,tbody,td,tfoot,th,thead,tr,ul,video'); + +// Inline Elements - HTML 5 +const inline = makeMap('abbr,acronym,applet,b,basefont,bdo,big,button,cite,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,select,small,span,strike,strong,sub,sup,textarea,tt,u,var'); + +// Elements that you can, intentionally, leave open +// (and which close themselves) +const closeSelf = makeMap('colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr'); + +function removeDOCTYPE(html) { + return html + .replace(/<\?xml.*\\?>\n/, '') + .replace(/<.*!doctype.*\\>\n/, '') + .replace(/<.*!DOCTYPE.*\\>\n/, ''); +} + +function trimHtml(html) { + return html + .replace(//gi, '') + .replace(/\/\*.*?\*\//gi, '') + .replace(/[ ]+ { + const { name } = attr; + let { value } = attr; + if (name === 'class') { + if (debug) console.dir(value); + // value = value.join("") + node.classStr = value; + } + // has multi attibutes + // make it array of attribute + if (name === 'style') { + if (debug) console.dir(value); + // value = value.join("") + node.styleStr = value; + } + if (value.match(/ /)) { + value = value.split(' '); + } + + // if attr already exists + // merge it + if (pre[name]) { + if (Array.isArray(pre[name])) { + // already array, push to last + pre[name].push(value); + } else { + // single value, make it array + pre[name] = [pre[name], value]; + } + } else { + // not exist, put it + pre[name] = value; + } + + return pre; + }, {}); + + // 对img添加额外数据 + if (node.tag === 'img') { + node.imgIndex = results.images.length; + let imgUrl = node.attr.src; + imgUrl = wxDiscode.urlToHttpUrl(imgUrl, placeImgeUrlHttps); + node.attr.src = imgUrl || ''; + node.image = image; + if (imgUrl) { + results.images.push(node); + results.imageUrls.push(imgUrl); + } + } + + // 处理a标签属性 + if (node.tag === 'a') { + node.attr.href = node.attr.href || ''; + } + + // 处理font标签样式属性 + if (node.tag === 'font') { + const fontSize = [ + 'x-small', + 'small', + 'medium', + 'large', + 'x-large', + 'xx-large', + '-webkit-xxx-large', + ]; + const styleAttrs = { + color: 'color', + face: 'font-family', + size: 'font-size', + }; + if (!node.attr.style) node.attr.style = []; + if (!node.styleStr) node.styleStr = ''; + Object.keys(styleAttrs).forEach((key) => { + if (node.attr[key]) { + const value = key === 'size' ? fontSize[node.attr[key] - 1] : node.attr[key]; + node.attr.style.push(styleAttrs[key]); + node.attr.style.push(value); + node.styleStr += `${styleAttrs[key]}: ${value};`; + } + }); + } + + // 临时记录source资源 + if (node.tag === 'source') { + results.source = node.attr.src; + } + + if (unary) { + // if this tag doesn't have end tag + // like + // add to parents + const parent = bufArray[0] || results; + if (parent.nodes === undefined) { + parent.nodes = []; + } + parent.nodes.push(node); + } else { + bufArray.unshift(node); + } + }, + end(tag) { + // merge into parent tag + const node = bufArray.shift(); + if (node.tag !== tag && debug) { + console.error('invalid state: mismatch end tag'); + } + + // 当有缓存source资源时于于video补上src资源 + if (node.tag === 'video' && results.source) { + node.attr.src = results.source; + delete results.source; + } + + if (bufArray.length === 0) { + results.nodes.push(node); + } else { + const parent = bufArray[0]; + if (parent.nodes === undefined) { + parent.nodes = []; + } + parent.nodes.push(node); + } + }, + chars(text) { + const node = { + node: 'text', + text: text.trim(), + }; + + if (bufArray.length === 0) { + node.index = index.toString(); + index += 1; + results.nodes.push(node); + } else { + const parent = bufArray[0]; + if (parent.nodes === undefined) { + parent.nodes = []; + } + node.index = `${parent.index}.${parent.nodes.length}`; + parent.nodes.push(node); + } + }, + comment(text) { + const node = { + node: 'comment', + text, + }; + const parent = bufArray[0]; + if (parent.nodes === undefined) { + parent.nodes = []; + } + parent.nodes.push(node); + }, + }); + return results; +} + +export default html2json; diff --git a/examples/uniapp-one/components/mpvue-wxparse/libs/htmlparser.js b/examples/uniapp-one/components/mpvue-wxparse/libs/htmlparser.js new file mode 100644 index 00000000..78771401 --- /dev/null +++ b/examples/uniapp-one/components/mpvue-wxparse/libs/htmlparser.js @@ -0,0 +1,188 @@ +/** + * + * htmlParser改造自: https://github.com/blowsie/Pure-JavaScript-HTML5-Parser + * + * author: Di (微信小程序开发工程师) + * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com) + * 垂直微信小程序开发交流社区 + * + * github地址: https://github.com/icindy/wxParse + * + * for: 微信小程序富文本解析 + * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184 + */ +// Regular Expressions for parsing tags and attributes + +const startTag = /^<([-A-Za-z0-9_]+)((?:\s+[a-zA-Z0-9_:][-a-zA-Z0-9_:.]*(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/; +const endTag = /^<\/([-A-Za-z0-9_]+)[^>]*>/; +const attr = /([a-zA-Z0-9_:][-a-zA-Z0-9_:.]*)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|([^>\s]+)))?/g; + +function makeMap(str) { + const obj = {}; + const items = str.split(','); + for (let i = 0; i < items.length; i += 1) obj[items[i]] = true; + return obj; +} + +// Empty Elements - HTML 5 +const empty = makeMap('area,base,basefont,br,col,frame,hr,img,input,link,meta,param,embed,command,keygen,source,track,wbr'); + +// Block Elements - HTML 5 +const block = makeMap('a,address,code,article,applet,aside,audio,blockquote,button,canvas,center,dd,del,dir,div,dl,dt,fieldset,figcaption,figure,footer,form,frameset,h1,h2,h3,h4,h5,h6,header,hgroup,hr,iframe,ins,isindex,li,map,menu,noframes,noscript,object,ol,output,p,pre,section,script,table,tbody,td,tfoot,th,thead,tr,ul,video'); + +// Inline Elements - HTML 5 +const inline = makeMap('abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,select,small,span,strike,strong,sub,sup,textarea,tt,u,var'); + +// Elements that you can, intentionally, leave open +// (and which close themselves) +const closeSelf = makeMap('colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr'); + +// Attributes that have their values filled in disabled="disabled" +const fillAttrs = makeMap('checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected'); + +// Special Elements (can contain anything) +const special = makeMap('script,style,view,scroll-view,block'); + +function HTMLParser(html, handler) { + let index; + let chars; + let match; + let last = html; + const stack = []; + + stack.last = () => stack[stack.length - 1]; + + function parseEndTag(tag, tagName) { + // If no tag name is provided, clean shop + let pos; + if (!tagName) { + pos = 0; + } else { + // Find the closest opened tag of the same type + tagName = tagName.toLowerCase(); + for (pos = stack.length - 1; pos >= 0; pos -= 1) { + if (stack[pos] === tagName) break; + } + } + if (pos >= 0) { + // Close all the open elements, up the stack + for (let i = stack.length - 1; i >= pos; i -= 1) { + if (handler.end) handler.end(stack[i]); + } + + // Remove the open elements from the stack + stack.length = pos; + } + } + + function parseStartTag(tag, tagName, rest, unary) { + tagName = tagName.toLowerCase(); + + if (block[tagName]) { + while (stack.last() && inline[stack.last()]) { + parseEndTag('', stack.last()); + } + } + + if (closeSelf[tagName] && stack.last() === tagName) { + parseEndTag('', tagName); + } + + unary = empty[tagName] || !!unary; + + if (!unary) stack.push(tagName); + + if (handler.start) { + const attrs = []; + + rest.replace(attr, function genAttr(matches, name) { + const value = arguments[2] || arguments[3] || arguments[4] || (fillAttrs[name] ? name : ''); + + attrs.push({ + name, + value, + escaped: value.replace(/(^|[^\\])"/g, '$1\\"'), // " + }); + }); + + if (handler.start) { + handler.start(tagName, attrs, unary); + } + } + } + + while (html) { + chars = true; + + // Make sure we're not in a script or style element + if (!stack.last() || !special[stack.last()]) { + // Comment + if (html.indexOf(''); + + if (index >= 0) { + if (handler.comment) handler.comment(html.substring(4, index)); + html = html.substring(index + 3); + chars = false; + } + + // end tag + } else if (html.indexOf(']*>`), + (all, text) => { + text = text.replace( + /|/g, + '$1$2', + ); + if (handler.chars) handler.chars(text); + + return ''; + }, + ); + + parseEndTag('', stack.last()); + } + + if (html === last) throw new Error(`Parse Error: ${html}`); + last = html; + } + + // Clean up any remaining tags + parseEndTag(); +} + +export default HTMLParser; diff --git a/examples/uniapp-one/components/mpvue-wxparse/libs/wxDiscode.js b/examples/uniapp-one/components/mpvue-wxparse/libs/wxDiscode.js new file mode 100644 index 00000000..ec67b46f --- /dev/null +++ b/examples/uniapp-one/components/mpvue-wxparse/libs/wxDiscode.js @@ -0,0 +1,197 @@ +// HTML 支持的数学符号 +function strNumDiscode(str) { + str = str.replace(/∀/g, '∀'); + str = str.replace(/∂/g, '∂'); + str = str.replace(/∃/g, '∃'); + str = str.replace(/∅/g, '∅'); + str = str.replace(/∇/g, '∇'); + str = str.replace(/∈/g, '∈'); + str = str.replace(/∉/g, '∉'); + str = str.replace(/∋/g, '∋'); + str = str.replace(/∏/g, '∏'); + str = str.replace(/∑/g, '∑'); + str = str.replace(/−/g, '−'); + str = str.replace(/∗/g, '∗'); + str = str.replace(/√/g, '√'); + str = str.replace(/∝/g, '∝'); + str = str.replace(/∞/g, '∞'); + str = str.replace(/∠/g, '∠'); + str = str.replace(/∧/g, '∧'); + str = str.replace(/∨/g, '∨'); + str = str.replace(/∩/g, '∩'); + str = str.replace(/∪/g, '∪'); + str = str.replace(/∫/g, '∫'); + str = str.replace(/∴/g, '∴'); + str = str.replace(/∼/g, '∼'); + str = str.replace(/≅/g, '≅'); + str = str.replace(/≈/g, '≈'); + str = str.replace(/≠/g, '≠'); + str = str.replace(/≤/g, '≤'); + str = str.replace(/≥/g, '≥'); + str = str.replace(/⊂/g, '⊂'); + str = str.replace(/⊃/g, '⊃'); + str = str.replace(/⊄/g, '⊄'); + str = str.replace(/⊆/g, '⊆'); + str = str.replace(/⊇/g, '⊇'); + str = str.replace(/⊕/g, '⊕'); + str = str.replace(/⊗/g, '⊗'); + str = str.replace(/⊥/g, '⊥'); + str = str.replace(/⋅/g, '⋅'); + return str; +} + +// HTML 支持的希腊字母 +function strGreeceDiscode(str) { + str = str.replace(/Α/g, 'Α'); + str = str.replace(/Β/g, 'Β'); + str = str.replace(/Γ/g, 'Γ'); + str = str.replace(/Δ/g, 'Δ'); + str = str.replace(/Ε/g, 'Ε'); + str = str.replace(/Ζ/g, 'Ζ'); + str = str.replace(/Η/g, 'Η'); + str = str.replace(/Θ/g, 'Θ'); + str = str.replace(/Ι/g, 'Ι'); + str = str.replace(/Κ/g, 'Κ'); + str = str.replace(/Λ/g, 'Λ'); + str = str.replace(/Μ/g, 'Μ'); + str = str.replace(/Ν/g, 'Ν'); + str = str.replace(/Ξ/g, 'Ν'); + str = str.replace(/Ο/g, 'Ο'); + str = str.replace(/Π/g, 'Π'); + str = str.replace(/Ρ/g, 'Ρ'); + str = str.replace(/Σ/g, 'Σ'); + str = str.replace(/Τ/g, 'Τ'); + str = str.replace(/Υ/g, 'Υ'); + str = str.replace(/Φ/g, 'Φ'); + str = str.replace(/Χ/g, 'Χ'); + str = str.replace(/Ψ/g, 'Ψ'); + str = str.replace(/Ω/g, 'Ω'); + + str = str.replace(/α/g, 'α'); + str = str.replace(/β/g, 'β'); + str = str.replace(/γ/g, 'γ'); + str = str.replace(/δ/g, 'δ'); + str = str.replace(/ε/g, 'ε'); + str = str.replace(/ζ/g, 'ζ'); + str = str.replace(/η/g, 'η'); + str = str.replace(/θ/g, 'θ'); + str = str.replace(/ι/g, 'ι'); + str = str.replace(/κ/g, 'κ'); + str = str.replace(/λ/g, 'λ'); + str = str.replace(/μ/g, 'μ'); + str = str.replace(/ν/g, 'ν'); + str = str.replace(/ξ/g, 'ξ'); + str = str.replace(/ο/g, 'ο'); + str = str.replace(/π/g, 'π'); + str = str.replace(/ρ/g, 'ρ'); + str = str.replace(/ς/g, 'ς'); + str = str.replace(/σ/g, 'σ'); + str = str.replace(/τ/g, 'τ'); + str = str.replace(/υ/g, 'υ'); + str = str.replace(/φ/g, 'φ'); + str = str.replace(/χ/g, 'χ'); + str = str.replace(/ψ/g, 'ψ'); + str = str.replace(/ω/g, 'ω'); + str = str.replace(/ϑ/g, 'ϑ'); + str = str.replace(/ϒ/g, 'ϒ'); + str = str.replace(/ϖ/g, 'ϖ'); + str = str.replace(/·/g, '·'); + return str; +} + +// + +function strcharacterDiscode(str) { + // 加入常用解析 + str = str.replace(/ /g, ' '); + str = str.replace(/"/g, "'"); + str = str.replace(/&/g, '&'); + // str = str.replace(/</g, '‹'); + // str = str.replace(/>/g, '›'); + + str = str.replace(/</g, '<'); + str = str.replace(/>/g, '>'); + str = str.replace(/•/g, '•'); + + return str; +} + +// HTML 支持的其他实体 +function strOtherDiscode(str) { + str = str.replace(/Œ/g, 'Œ'); + str = str.replace(/œ/g, 'œ'); + str = str.replace(/Š/g, 'Š'); + str = str.replace(/š/g, 'š'); + str = str.replace(/Ÿ/g, 'Ÿ'); + str = str.replace(/ƒ/g, 'ƒ'); + str = str.replace(/ˆ/g, 'ˆ'); + str = str.replace(/˜/g, '˜'); + str = str.replace(/ /g, ''); + str = str.replace(/ /g, ''); + str = str.replace(/ /g, ''); + str = str.replace(/‌/g, ''); + str = str.replace(/‍/g, ''); + str = str.replace(/‎/g, ''); + str = str.replace(/‏/g, ''); + str = str.replace(/–/g, '–'); + str = str.replace(/—/g, '—'); + str = str.replace(/‘/g, '‘'); + str = str.replace(/’/g, '’'); + str = str.replace(/‚/g, '‚'); + str = str.replace(/“/g, '“'); + str = str.replace(/”/g, '”'); + str = str.replace(/„/g, '„'); + str = str.replace(/†/g, '†'); + str = str.replace(/‡/g, '‡'); + str = str.replace(/•/g, '•'); + str = str.replace(/…/g, '…'); + str = str.replace(/‰/g, '‰'); + str = str.replace(/′/g, '′'); + str = str.replace(/″/g, '″'); + str = str.replace(/‹/g, '‹'); + str = str.replace(/›/g, '›'); + str = str.replace(/‾/g, '‾'); + str = str.replace(/€/g, '€'); + str = str.replace(/™/g, '™'); + + str = str.replace(/←/g, '←'); + str = str.replace(/↑/g, '↑'); + str = str.replace(/→/g, '→'); + str = str.replace(/↓/g, '↓'); + str = str.replace(/↔/g, '↔'); + str = str.replace(/↵/g, '↵'); + str = str.replace(/⌈/g, '⌈'); + str = str.replace(/⌉/g, '⌉'); + + str = str.replace(/⌊/g, '⌊'); + str = str.replace(/⌋/g, '⌋'); + str = str.replace(/◊/g, '◊'); + str = str.replace(/♠/g, '♠'); + str = str.replace(/♣/g, '♣'); + str = str.replace(/♥/g, '♥'); + + str = str.replace(/♦/g, '♦'); + str = str.replace(/'/g, "'"); + return str; +} + +function strDiscode(str) { + str = strNumDiscode(str); + str = strGreeceDiscode(str); + str = strcharacterDiscode(str); + str = strOtherDiscode(str); + return str; +} +function urlToHttpUrl(url, rep) { + const patt1 = new RegExp('^//'); + const result = patt1.test(url); + if (result) { + url = `${rep}:${url}`; + } + return url; +} + +export default { + strDiscode, + urlToHttpUrl, +}; diff --git a/examples/uniapp-one/components/mpvue-wxparse/wxParse.css b/examples/uniapp-one/components/mpvue-wxparse/wxParse.css new file mode 100644 index 00000000..cf3b3859 --- /dev/null +++ b/examples/uniapp-one/components/mpvue-wxparse/wxParse.css @@ -0,0 +1,257 @@ +/** + * author: Di (微信小程序开发工程师) + * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com) + * 垂直微信小程序开发交流社区 + * + * github地址: https://github.com/icindy/wxParse + * + * for: 微信小程序富文本解析 + * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184 + */ + +.wxParse { + width: 100%; + font-family: Helvetica, sans-serif; + font-size: 28rpx; + color: #666; + line-height: 1.8; +} + +view { + word-break: hyphenate; +} + +.wxParse .inline { + display: inline; + margin: 0; + padding: 0; +} + +/*//标题 */ +.wxParse .div { + margin: 0; + padding: 0; +} + +.wxParse .h1 { + font-size: 2em; + margin: 0.67em 0; +} +.wxParse .h2 { + font-size: 1.5em; + margin: 0.83em 0; +} +.wxParse .h3 { + font-size: 1.17em; + margin: 1em 0; +} +.wxParse .h4 { + margin: 1.33em 0; +} +.wxParse .h5 { + font-size: 0.83em; + margin: 1.67em 0; +} +.wxParse .h6 { + font-size: 0.67em; + margin: 2.33em 0; +} + +.wxParse .h1, +.wxParse .h2, +.wxParse .h3, +.wxParse .h4, +.wxParse .h5, +.wxParse .h6, +.wxParse .b, +.wxParse .strong { + font-weight: bolder; +} + +.wxParse .p { + margin: 1em 0; +} + +.wxParse .i, +.wxParse .cite, +.wxParse .em, +.wxParse .var, +.wxParse .address { + font-style: italic; +} + +.wxParse .pre, +.wxParse .tt, +.wxParse .code, +.wxParse .kbd, +.wxParse .samp { + font-family: monospace; +} + +.wxParse .pre { + background: #f5f5f5; + padding: 16rpx; + white-space: pre-wrap; +} + +.wxParse .big { + font-size: 1.17em; +} + +.wxParse .small, +.wxParse .sub, +.wxParse .sup { + font-size: 0.83em; +} + +.wxParse .sub { + vertical-align: sub; +} +.wxParse .sup { + vertical-align: super; +} + +.wxParse .s, +.wxParse .strike, +.wxParse .del { + text-decoration: line-through; +} + +/*wxparse-自定义个性化的css样式*/ +/*增加video的css样式*/ +.wxParse .strong, +.wxParse .s { + display: inline; +} + +.wxParse .a { + color: deepskyblue; + word-break: break-all; + overflow: auto; +} + +.wxParse .video { + text-align: center; + margin: 20rpx 0; +} + +.wxParse .video-video { + width: 100%; +} + +.wxParse .img { + width: 0; + height: 0; + max-width: 100%; + overflow: hidden; +} + +.wxParse .blockquote { + margin: 10rpx 0; + padding: 20rpx 0 20rpx 20rpx; + font-family: Courier, Calibri, "宋体"; + background: #f5f5f5; + border-left: 6rpx solid #dbdbdb; +} +.wxParse .blockquote .p { + margin: 0; +} + +.wxParse .code { + display: inline; + background: #f5f5f5; +} +.wxParse .ul { + margin: 20rpx 10rpx; +} + +.wxParse .li, +.wxParse .li-inner { + display: flex; + align-items: baseline; + margin: 10rpx 0; +} + +.wxParse .li-text { + display: flex; + align-items: center; + line-height: 40rpx; +} + +.wxParse .li-circle { + display: inline-flex; + width: 10rpx; + height: 10rpx; + background-color: #333; + margin-right: 10rpx; + border-radius: 50%; + position: relative; + top: -5rpx; +} + +.wxParse .li-square { + display: inline-flex; + width: 10rpx; + height: 10rpx; + background-color: #333; + margin-right: 10rpx; +} +.wxParse .li-ring { + display: inline-flex; + width: 10rpx; + height: 10rpx; + border: 2rpx solid #333; + border-radius: 50%; + background-color: #fff; + margin-right: 10rpx; +} + +.wxParse .table { + width: 100%; + border-top: 2rpx solid #e0e0e0; +} +.wxParse .thead,.wxParse .tfoot,.wxParse .tr { + display: flex; + flex-direction: row; +} +.wxParse .th,.wxParse .td { + display: flex; + width: 1160rpx; + overflow: auto; +} + +.wxParse .u { + text-decoration: underline; +} +.wxParse .hide { + display: none; +} +.wxParseText { + align-items: center; +} +.wxParse .tr { + width:100%; + display: flex; + border-right: 2rpx solid #e0e0e0; + border-bottom: 2rpx solid #e0e0e0; +} +.wxParse .th, +.wxParse .td { + flex: 1; + padding: 10rpx; + border-left: 2rpx solid #e0e0e0; + word-break: break-all; +} +.wxParse .td:last { + border-top: 2rpx solid #e0e0e0; +} +.wxParse .th { + background: #f0f0f0; + border-top: 2rpx solid #e0e0e0; +} +.wxParse .del { + display: inline; +} +.wxParse .figure { + overflow: hidden; +} diff --git a/examples/uniapp-one/components/mpvue-wxparse/wxParse.vue b/examples/uniapp-one/components/mpvue-wxparse/wxParse.vue new file mode 100644 index 00000000..7e592a6b --- /dev/null +++ b/examples/uniapp-one/components/mpvue-wxparse/wxParse.vue @@ -0,0 +1,65 @@ + + + + + + + diff --git a/examples/uniapp-one/components/questionList.vue b/examples/uniapp-one/components/questionList.vue new file mode 100644 index 00000000..853b3152 --- /dev/null +++ b/examples/uniapp-one/components/questionList.vue @@ -0,0 +1,97 @@ + + + + + diff --git a/examples/uniapp-one/components/readList.vue b/examples/uniapp-one/components/readList.vue new file mode 100644 index 00000000..a46ce6db --- /dev/null +++ b/examples/uniapp-one/components/readList.vue @@ -0,0 +1,98 @@ + + + + + diff --git a/examples/uniapp-one/main.js b/examples/uniapp-one/main.js new file mode 100644 index 00000000..f2597f20 --- /dev/null +++ b/examples/uniapp-one/main.js @@ -0,0 +1,13 @@ +import Vue from 'vue' +import App from './App' +import store from '@/store' + +Vue.config.productionTip = false +Vue.prototype.$store = store +App.mpType = 'app' + +const app = new Vue({ + store, + ...App +}) +app.$mount() diff --git a/examples/uniapp-one/manifest.json b/examples/uniapp-one/manifest.json new file mode 100644 index 00000000..4c343d72 --- /dev/null +++ b/examples/uniapp-one/manifest.json @@ -0,0 +1,53 @@ +{ + "name" : "uni-one", + "appid" : "__UNI__04F77E3", + "description" : "A uni-app project", + "versionName" : "1.0.0", + "versionCode" : "100", + "app-plus" : {/* 5+App特有相关 */ + "modules" : {/* 模块配置 */ + + }, + "distribute" : {/* 应用发布信息 */ + "android" : {/* android打包配置 */ + "permissions" : [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ] + }, + "ios" : {/* ios打包配置 */ + + }, + "sdkConfigs" : {/* SDK配置 */ + + } + } + }, + "quickapp" : {/* 快应用特有相关 */ + + }, + + "mp-weixin" : {/* 小程序特有相关 */ + "appid" : "wxb7bfcea0160eb9f7" + } +} diff --git a/examples/uniapp-one/pages.json b/examples/uniapp-one/pages.json new file mode 100644 index 00000000..3a382499 --- /dev/null +++ b/examples/uniapp-one/pages.json @@ -0,0 +1,79 @@ +{ + "pages": [ + { + "path": "pages/home/main", + "style": { + "navigationBarTitleText": "首页" + } + }, + { + "path": "pages/read/main", + "style": { + "navigationBarTitleText": "文章&问答" + } + }, + { + "path": "pages/read/essay/main" + }, + { + "path": "pages/read/question/main" + }, + { + "path": "pages/movie/main", + "style": { + "navigationBarTitleText": "影评" + } + }, + { + "path": "pages/movie/detail/main" + }, + { + "path": "pages/daily/main", + "style": { + "navigationBarTitleText": "日报" + } + }, + { + "path": "pages/daily/detail/main", + "style": { + "navigationBarTitleText": "日报" + } + } + ], + "globalStyle": { + "backgroundTextStyle": "light", + "navigationBarBackgroundColor": "fafafa", + "navigationBarTitleText": "一个", + "navigationBarTextStyle": "black" + }, + "tabBar": { + "color": "#130f13", + "selectedColor": "#0f0f0f", + "list": [ + { + "pagePath": "pages/home/main", + "text": "ONE", + "iconPath": "static/icon/home.png", + "selectedIconPath": "static/icon/home-active.png" + }, + { + "pagePath": "pages/read/main", + "text": "READ", + "iconPath": "static/icon/read.png", + "selectedIconPath": "static/icon/read-active.png" + }, + { + "pagePath": "pages/movie/main", + "text": "MOVIE", + "iconPath": "static/icon/movie.png", + "selectedIconPath": "static/icon/movie-active.png" + }, + { + "pagePath": "pages/daily/main", + "text": "DAILY", + "iconPath": "static/icon/daily.png", + "selectedIconPath": "static/icon/daily-active.png" + } + ] + } +} \ No newline at end of file diff --git a/examples/uniapp-one/pages/daily/detail/main.vue b/examples/uniapp-one/pages/daily/detail/main.vue new file mode 100644 index 00000000..9857f1ad --- /dev/null +++ b/examples/uniapp-one/pages/daily/detail/main.vue @@ -0,0 +1,145 @@ + + + + + + + + + + diff --git a/examples/uniapp-one/pages/daily/main.vue b/examples/uniapp-one/pages/daily/main.vue new file mode 100644 index 00000000..7a88018e --- /dev/null +++ b/examples/uniapp-one/pages/daily/main.vue @@ -0,0 +1,141 @@ + + + + diff --git a/examples/uniapp-one/pages/home/main.vue b/examples/uniapp-one/pages/home/main.vue new file mode 100644 index 00000000..6c369343 --- /dev/null +++ b/examples/uniapp-one/pages/home/main.vue @@ -0,0 +1,65 @@ + + + + + diff --git a/examples/uniapp-one/pages/home/weather.vue b/examples/uniapp-one/pages/home/weather.vue new file mode 100644 index 00000000..a5de1035 --- /dev/null +++ b/examples/uniapp-one/pages/home/weather.vue @@ -0,0 +1,56 @@ + + + + + diff --git a/examples/uniapp-one/pages/movie/detail/main.vue b/examples/uniapp-one/pages/movie/detail/main.vue new file mode 100644 index 00000000..b2ebc504 --- /dev/null +++ b/examples/uniapp-one/pages/movie/detail/main.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/examples/uniapp-one/pages/movie/main.vue b/examples/uniapp-one/pages/movie/main.vue new file mode 100644 index 00000000..8ff9ca31 --- /dev/null +++ b/examples/uniapp-one/pages/movie/main.vue @@ -0,0 +1,51 @@ + + + + + diff --git a/examples/uniapp-one/pages/read/essay/main.vue b/examples/uniapp-one/pages/read/essay/main.vue new file mode 100644 index 00000000..60048db4 --- /dev/null +++ b/examples/uniapp-one/pages/read/essay/main.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/examples/uniapp-one/pages/read/main.vue b/examples/uniapp-one/pages/read/main.vue new file mode 100644 index 00000000..ea04e28d --- /dev/null +++ b/examples/uniapp-one/pages/read/main.vue @@ -0,0 +1,68 @@ + + + + + diff --git a/examples/uniapp-one/pages/read/question/main.vue b/examples/uniapp-one/pages/read/question/main.vue new file mode 100644 index 00000000..c5d0fb0e --- /dev/null +++ b/examples/uniapp-one/pages/read/question/main.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/examples/uniapp-one/static/assert/arrow-right.png b/examples/uniapp-one/static/assert/arrow-right.png new file mode 100644 index 0000000000000000000000000000000000000000..e0695f0a030c974f88c296a023ceb23a92e49c9c GIT binary patch literal 2253 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 Fe*<<>3Zwu4 literal 0 HcmV?d00001 diff --git a/examples/uniapp-one/static/assert/play.png b/examples/uniapp-one/static/assert/play.png new file mode 100644 index 0000000000000000000000000000000000000000..f8c283dafbc5799a0c67d44a62aa21ae0ed4b499 GIT binary patch literal 3154 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 HXA}MdrS_Pr literal 0 HcmV?d00001 diff --git a/examples/uniapp-one/static/icon/daily-active.png b/examples/uniapp-one/static/icon/daily-active.png new file mode 100644 index 0000000000000000000000000000000000000000..76790a08382af11765e8d3689ad25492accdf0b1 GIT binary patch literal 5150 zcmeHLS6EY9ls*Zet0WYO6gh-0C{ivR3=)JOMGz5CK|*gr=$(iN0RcmkCgB<>mn%gn z(gbN2P@1S9NR=){K)RvK@y8*&_HW9~Me>&`?Z@TIkD%bC)Oaa?R>#VuqKNhj!$u+zmY zt%U#+g)@2zeuga?4w-tBqq`-aht9fWM?CePpilT8uX?RE?$qp*?*{*P0A3{;XIXqvkR=1O)|oa_a_)Ok;a01OU>bM7c?FvFx3B`cXP{A)E;anGw~&O{oFSZy`++fI^PA~p4!&Awzf9sE2dirOof{cE)b#Z zZTF2eFetVJleYSBD1-s9qkBxrCsq~n^7)Gl;!T<+0tp-dT z=-i91UtTQTRs=qC1_UL_%@;yH&8tC<-s-eZ;?3|FH-z@ozfq-li2aw6=JaqvC!(f4 z>CTUS4_B>@VgVnS=)puoZ!=O>G>rynC1CMNw}vI~ZtSDqNjC8NLARP354ck(i1Nf> zLj4#2uoBn9-Hf%{+gefbRcT)`HPECuP7p^gw>u}w@%9fopCqr*dBN#w;wE7+Kq;qp zSzKJ4>e#L#VT9=F>eBbB9C?ER$_$AAI7(IaDRpS1NPtaiyTMfDYI98RK`!}7oh9m~ z=1IyQp!IV1iimP>LdygxH~8~hxsTi1EhjD*E$!C{j7_fZ4xHuF)V}dYU#3~hm<)dV zqbFHqTs}%50|P^+tZh>mClKOu_8HKsSc}7oC(2!72T%%g@4H7xk_8d$sN-T%GAn49 zdKH17Nrt$iVLa09c3pOPUY!~5EfMaSvTN$Vh_8)8nsNd6hHJbg6H`-DWA_~+RWY%8 zMj!K2uX+pxeoPfDu73Tv*#k!6n(kl+Spi`hFHO?=i;E(mT;LH84zLQVciOL|PfblN zO-xJ_0e2k*^br&UY1q@fBCO2_kUE7NO9z}y-QGU3KFY~#p_AfORXzLh9v`_4Tu z5Z11Z&6Iki@sI(^%s1ysz@9W+YAXyD?Mj6*riWMuw95SX|E2#n2X_ZZC03R5`Atnt zpE6wo8s7}Mg-3QK2~J*hkA~Lyr6l&sl`A2S&uad{;|>^bEB1v_KJ*qOts&0E7ah}^ zAHxC~F2uueQrjrpfr^4=az7D_r|m-Mw4dMcyNwMo8-dfv$f9;Fs9`_x3seB@& zi@DNl&~_F9yiY?$Z@=D`<+HzV)hz*vX$;u$Sv1`S@TLqyMKPY2;QDMe-K;!Vv%L$X z{EPj`*I=T$&;CBqr34I92p*ijQm;1pq)-Xs=BJSbpL@wcH{xI6C4s8Z)kl1Z9Ygs} zU3j%mb+kThCT8ZF+dDfET!682q2$lJ5&>q^Mu>gS6UEIq($$w6Q3pVq6oQ6Gg>J~nO66<2;9Gs<+^nY2p0du%}cWUqG=qM5J#sCSN11{*8 zOFg3#@3l%Ycbf|igHD;lpy3Sy>vFi;a_a7wUzdO&ILhl%(E8M!hQKu~J}>i)8*u%w z@_I8XdGL>d&!yzO9J!uLSey_CblAvMy%K}#d%UQ>j%G$;;{Ow~s68LVOr*9Qac`nW z<}(uHG8nM!2{|_}kQ}}dm}^kXNMO&?z9*xy!ftzM@KD;KWbYjCM!_z}R=LB2iS#{s zL-rvn=qk9fzE=PN;qn7;&&5LN1P4bR7Pkv)&M|vkH;CRmOLsHO4nR;8fB0*!5J<>@ z^V-PU$>}F`baaZgx3)A8fP~|K6Sr<8UyR+~z08ahnR5dzo-zm))Hn*!qU(CB(_hg? z^-T~VIMFYT`ifw_B4eICyf9z_;2m!5B6^uwP?`dW7F8>Onf`zZn{qmJK{J8e={R>0 zwVF$%+Nf)3H7VnB;QE|j>Lr~nfVi!#rf~X@k+JdFzP6Ze-@a9wa%)oMMDtEYO)=nq z@?cYHhjit9fh?D5>*bUqWyAwbyBrH(+I0 z&MKNw6-!uqe4wQq2#a2}%=qpMsD5>;?n4U+F7<=qOFb6p8zJR!;e}Sd#gH|99 z-T5Xb5R^t&VM7UOdQUa;@2rgYiUv3X;J-HA_jRZCi0Zh{qBPsN%kqkfeg-Bc{WY1C z+x7`{aen}?X!nf88MQytLKFZE#s2pj@#1Vzvo`iU!9?G@(o`PNICsv#b}Ri#b+SlxCCHWK$wuD6v=u6cG_=yng+@i6A+j&1V`y-xc z%6$hN^G#4Uq1dMUxMCrA7o4sTJ?zC2ybLOSH2fD5YK1Cni0PAEJVHW3!oMzboNI`Z zEcl_RQrlp)z|mw;GT>6a;{#9^A4*m?v1jSO46XSlh~^q zSq&S%UI;}e!Rd5e{*SJQsDVLkWjmq`tc&)=ZQ+Y!!wUuTx;a+8tw^u6w_s zI5D8%aAkOSSivfB1nT5&eq(>KwpMK1B7_79P9KI+jLgqc#Pqw=DP^ zirjcz;sqCfReD0jg9_JAar4(UY_xg%63YBeJ^4l*YI}Xf6m-Ecf5A@p84@NM=kM4m zOcE`&jP2}cwi9~XKikrl7NCjNO%6Y3eCeB1xBp();yqh{S$n&h{h|5#n|zP()$f>K-gmyW-+d&6jKIM++g1%VqXCE0h}VEH-{5l`)0 zOO+uq6RYt>Z)j$g5GWM9@egmm6#c1=@y8jcKZ*hFRLS@iX~siG4&~J$jo^7%X?^Ms ziz?63ZSrB?lvz$aPjW>1Hwqop?IFc)f1@Auk8(J|o0s1kmo9m;fR6o?D0<%gwjZk1 z6;oxlgSqVgR;Iw|HQpfY@ac#N@9^s7JDPP6-3$~RKULLrFei|&UvqWog-!We*LnI( zI!PoRLyy>hBsS8rWC7TX%u$D%l39TOuIi8ds=yRJV~V09vpcUYJ#$87o^LHn zEYO;L?_L~ZlE;!*tmVj_WwAxo&;wu{$768{^Q&**xt{XMSl#ABgDh@^GceIY)3Pq7 zsh5-M(uXv4dqj2k79T-O^s_Af1mp$5fX;B-et=Wv|&Y`9SS>%7I8RY%^@ z^rLjMo5BPq^%@C5Wt65iE?~jmx!mHs;*JK#s}-%kWg%u^%g4{po{}v~+*E%Vvc2@B z-160QD6sxZUUSJoCEik7MpO?rb$v(Yf*tzkWe*|1Y|?u9EfZ-sLsgu;^F9N!(#l9> zXT*)yB9V1v;HJv!2jqIe6i;nr7^c^Q4~Ih<3SeWdkt#p(@G5vkL&!7>M0Itq% z2Yc@%<0m*{zHv;)_LOVv&!%RS->&<4_e?`sAU|aPb%am$2*6NP)zs=msA0tPe{pIw zTldyerQ5-=PZbJPzKTkG7lM;aI$Yn3{;|Vm!>#M(uE=+soX%^#d*+z<+%Hak#yYie09W=b6|LDYb$tWW~O2DNB6^>>#*roKwV6) z)c?m#j=06QDaH@&T7Nh;SgOSe6N^$B$GSqzOi zZc&S_A1~*0GXb3}1F1{X&0CfpyPTnm2;kW1(!vRVsLDDgN4!V#Rpo{CMqmD7@3S=yDV!RI$lh*AqX%VC}v2 z_#sABki_j!`rXfsctfkhA~Mk-f+& Xo3`*vvu6AMZc!pYI>fdCqyB``qV#p8K57{kiX$bEanxa0zn( z01g=F6V0J}+nVT?lqq&W?O#|JAa!Usa}TTB_K+Gja0CL&xXE zR;~(^_32@KzXN(2g0h98HAjP%-!X%h&6sBz znOaFYq6iMb0PsP?mmqp^7zQJ{-oyEDbFd;F9hoEn^bLZj{w(PwYCb&Wxr8qP2qkNG zD)r(~q1$IQrXX+Cw3yxLOz(&CD~~;`c~1 zUuZvA&R0Q()L)JJeHi3Fo+kQVJ{;}wLW4gJySER>6t$<2N5!Kja*JZpGNQzMxDb>z zH^k3s3qi*Df-gdHPDcArv~&SdZUq%v@FgL&oUe++QVRQ3MBd1hlmA^~zVPuM8Jb+T zrfW}S3sq@5*u9-c>nvRVL#zVnLJ114U%3E-8ZI<6Is!djc(4x<*2{y$u!FFGYauyK z_osr5C{|(4-kG+GmwL4FWNj-v2P@PVU77Sg3&Y~hnMHfWN??*|x#I5I@O!QEhc4jfawhXkQst&3H*j;xeq*#DJ$)Kkodz)t{ zIan9LT9+}eD&fYWjK_!Mt!!~1d=1_oJxIu4U*C^FtA6sXjyxHQ4vPtW!lQ!v=*sAi znZp?QXaUE^!x+L__XZugwF9mlY3Z+FbXzmjr1QR`{DchYb$$f;EsmRtQMM?p&pJTH z&hWyjN}*viRXKTmMMk^Ibq&vQ1haMIYB(f#Hc}a*~!;qXORSRxHb{PLU=dgohch@yImn3 z)3$X!MWObfK<0Y(>dBDn6pRi{4&db6>p?P4(xFM5Mx9lOlmkA&5&@eY=nZ%(AUV&P zTUOG)SQMJGu7qw-F%W@H7r`%rY69eVlYX#08si`(a-s}G$5}pmSK7)r@7SC=eF~O; ziLkJ?Ip44%GsLQGg^)%OS1%rp*8Fg#tmw;Oh7H)DQ1LfCputl7kSX3@BH`g zoJp9XRN8*bQJeM~@OlV&enQgBb3e+M0LC2)zS!L;{_>z96DZ|We5^||4@_@16mQ9J zgN+BcCrjpaQkA;a@OVmq2r`}7aTXKS>9XZrTc2UEKOn!D`vH?{JO;NU}xf)?DD|#(sLql z6%B^(ki%}HHp0)>)$K>|z?+S2riCCt%b2lrWOFQ3_{9x@nlXbFQRtWe?G#rS+yD3e z;~#XgJ72%PkZM}wq{)Wj=()ARuJtPSkl!0y;HY|0@V{Z>3JbV-2zmK~vBh*5&c~?a z>(F6cdZ+sVBq5_ajg8#5d564l-Zd1RI}4CrJk-A}+~fcK3OgeYd|)TeJP==Ql1Ve~ z&p)LHX|@(b*)EnHoy2#o5^ug?$vtoAW#|zHn*B|Iqi|njEl7UK-WD%Fs7Y9}$B>+5 zZ-M0Z>SwjtlDMN@D4<$0)W8+5=yHQOd7d_d(CA0!TnK^irmsRR(oX?_m>%s|BSR7L zOYZhBeR(6Py}f-ZUBTv;CBUUT%4@p}o6<$cUauUwAgBXviZB&%0gn3&lLVF{9wn1Tob`mUZq7=(JyLG#Hj-&)YD@Z|rn7h(w>Wo4=RIy*ay zA+x!`p7WlCVMOD#F!`-lSLrP2%oO}NHbNZMjy!jiys=Pg!%vTtnA`zAP9ER#~&Lm?wha#Is!K1o01M8!~qO&$3NWLc*A z$`Xq6NLOcpY-~N9PVbSJ+`@VB(cQi+GX>5c{E$`i;SF5>h$4@Vhyj3+#?Bc=C}KpQ zsH3W?8p@9@HS3i|M%0dYf7@wt{Y>kDd|jc68~^zZXwhUjZ}ZN&=)4|OmrIz6Aa6WW zfb@g6z{PlzMXq4^`;xnjEK zOE^W|^pzlfHmFO$NM^DH8cEWZ|1EV0lFI9y&&pGaU901$KhohN$QQ{#wS6346I&P>9)7TKDPCA7vaOLH#T^qY)=o66l!=RrM?M$VDT5+NNKR1XktEcl`*4}}KGe?h zw>l9jnI9RqQ8n_3sUq<$YKWhAmAD(*+%Xt^#LsOM=a1>t<0PM9KCkN>Z+!+5(Stqn zUfk5bJF{ATk!TwI0<7=XvTm{=672F!z7rtd$R|wIA$%Wsk;qFY%nNk*T7O2{QUcZ7 z5OB`cyPdXR&6woH_9r;~J- z?9EH{(aEFD#;_)xEH&uDihZ&z(<6peUJKzXiM@N5{KKRA+u~;pVGA2V;PTL^U)zix zh&T8V)v+=3Jp3d;M(~2bnH{d{n8bLj2WWDj2rn082bm^s&RP}q)^Z>tJ#XzE(WQOW zLWoXID_h&y5Z?5O6KTdhzlu(|G)*d=H(WmMWNf>5nLx9Hjn|yq8BC)w>eq(16fG<) zibOTS2S$yzBlXF1nc1dpCVjIl$M%!4ExYpmTEfqyW;m?)>S8_RhEnvNm5(y&F|a26 zmIeoH+5sU6_pqFxnT?H_h(^iY^M6)l3T53;jyJtcVR_Wxmr2uh>e54R!qJKbd1g-x z4zzc5#YL^Ir<$)z&lMFB!Myte#%*ng3N?x#|AGTew<2?`w6a{awD9& zFnsin_)<{@$4HRAGh4gY5v!`F+F-uM#pF#Z;II5O- zv1f_D!B=$50WSJlDik`Ol@Nt!h_zezmyP}CNy~z_SW-5U{!ocKXy(*Or!KX+b-cNK zhe;*}vXXqwelY2R;D6%j2}&^^$LX?5wSH5DCYe056H$Ge;lz6Uazw&Q{3;7%fwG6| zzp?f8V>Qp8#MM-Yao4wuL{UdsyFzo1S{MrQ^)N<{u-@8X)t)%}9VRynn}1To@(&@| zeKF=UK#ZA_Uk==|4_Rri%-9Fl@0rIA-*$Z+;w#!(x4%9$b6{LibR{8g?mJCOC6kGA)fb*IdN#$FUi1=d}$wyBj%jX zF`3KX#)jtofBdK{wiBAS7UEI63CoYOIrmf}4y$QG6ii6lF)dl};Y97^NJy=ZMNxlL z><%T@X}nN7G>#x_o-s098f$jcbYlma7p_*{4_LcW@>LbH9Qed#2BTTt;a_JK@pW;n zdZXd5Moou(xQCd_4S|fAk9)l`Y8OYiPzrU!{NGM1BY%z_%en!Y?kK*O&@3O$TzMH+ z=QAL7Z0lzC1X>i%>G8H!N)Y#}IDMPe(b{TQSrM_tJRP7aR`)GLz$)S1Lq+?y%*P(3 zAy3VvrHu7}!L?NR3Pn+7n2_a0VTVplez;NyD5DnZ#Q$yBtpwf}nMto*r}TgDQx=)e5^S5=6Y ztZ%`1L`8MSILeocHiN_1VwZ_rEg2=t>7HBJ3doVhs~=(m6faY3yQs}KuLh`v!;q1R zoVU+z+0(QZBU=;1%JAVEf8PYbCYr4(Z9b{xw+B8(FUzM2Bg_5-_1q7l`3>>dNI1yc z!b|UOg^+Zpyu3V6lObENl4qSH-j+>nh$8D8*oPcJMo+X>91QUD`$ZgE-+Pw3lFZ8@ zTJREOBi;Pu10P*8IHy{g^R|vnOP{C8=|Qs+7x$w^ORt(FNY0O>x-OzO1B-fp5B`aK zo!n;(ODjkF%jB)8toJ~2K%sP;Odbnym1#?1zPl@NzoW3QP|wZP)nTc%bdk#bN2E&n zzNS901j<#dlz*37wq(SES2BrJIIo&tJa{)_gEvbl{*(YRIbJfJx2`aZZ6(|B@UEAG z!!=6TSz70>>ljD1?s}aZAN3d)Pl&rTasejwn4jpkTRfoNNUjotc^0@by1X*hxQ8c( z2RL{!ueUl}yjXtq1O84h|EvB1iyhj+F1yC36_E=D?EPj3&FMcp zi;0MAttfAnTo*3}<#*_|d&(f34;h*N;?AOlgPxp#AicV86QFl}kX}6=jJllJcV2%g z8ho2C{0|kw%AXC@-kA06?d@HW$?LZcO_h?mNA8g;&^S*F3e+6ICG3@wt7fYVh+}b6 z!BiTJ78LuVGm3cvHrWg~q*{|pkL(@=FVo#-61s$8H013#Y!GM~g7=P;`+e{5=`A$5 zw||LRTgZmsFzk!KE+Eh|yT^Iap~A>&*#d9>rr6IG2MLDNSz}MJGsa*e?51-MISg`} zV)xYVS2<_!#}EWj*{r@zF51ML^aVM3;eqsdM<6bYwvCUnW+7Y=M!?qo4mS6BPrCbW+W4nK0yNJ(Vd^~y@oQn?uVv)7%B{w&z)Yt>n4UEWF60zbclv3T0)9O z;@zr{QFf{Z^-z&4N%_)4jjR9y@U8Ms4i(sN$&r!tf)cKFzA`t-s6 char3W)tROd+ad39P*D&V=$aBswXfX%FXRDhV*mgE literal 0 HcmV?d00001 diff --git a/examples/uniapp-one/static/icon/home-active.png b/examples/uniapp-one/static/icon/home-active.png new file mode 100644 index 0000000000000000000000000000000000000000..30657572eb4d3d1265a8bffa8d74cd1ed0ac5d8c GIT binary patch literal 12503 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 IZvW)}0JrY1V*mgE literal 0 HcmV?d00001 diff --git a/examples/uniapp-one/static/icon/read.png b/examples/uniapp-one/static/icon/read.png new file mode 100644 index 0000000000000000000000000000000000000000..b4bc5baed5c0c856a7a7c95b6826bfeb158163ee GIT binary patch literal 4396 zcmeI#`8$-~{|E5fmJm|OM_F1(Xl#)+k)3QKWE*)K*_Xx`8OvCblu{T8LwcL+WY03F z$TC?XOD3Z%F~*W*EW_}>sIKVzjFx2QeP~Im(0Xt{hjiKfM zfW80#(f0v>4!#vV4*($w0I+Zy05mcHKqx4?(OL`q;Lu-YM*3h2){b5i25h*3j2(i( z*7(n5*zKzg0Q{d!^mT9E8(;b!X=NL--?rMnzc`9R_2g7TY_brc5vB!ISK@2%v`VDiMBW4ABb~i(zFAdv^s+X$ z%|>h`^VGCPsZZ=0XmYKLUORHHbuzrgQ>(dQD?9vuR|l@<-`AvWNGPi%zF^Qs9sV$~ zN82MeQ_G?3rtEM}+6jW|%IL09ayqN@v)FmB28;4k>I1$I^!xdrDUuE;PEH=BN!UtW zUW652&--!5#8kCJ&3jg4Z0PL75@~&C4OCn#H#(#(wCda*EKvV_u!RsAzPp(qmZHFw z`nG8~g$<#@x3}o21p7qX?lS%+zw2?JGO9+%8u&PDg8Pcol#+y=lcdpP93)F-j!Pk* z_I*)rLhYQ3eBRPkPtL>~?Cs7?P7d6rE9-LR=Yw0Bj~Y`*#NJADsWD!%4Id^uROcJ| z+95^)f5+fT7d5n;b_9u%Uj{s0|pFNqqjV#0IKd z!6*m2g!M7WFLSBvCeQBEs3DI7zCa!e3AHojYKzV*vv9UAg@jL#C-*)b;5yIu6W7-w zTB9shIA1xvmN0$o=hSN(Jp4U`3MZ7lpfxmvU0%C0)9dB45HWV0U?u;RL8nz&sYkht<8%&t?xD3`M}Z1qunaq-f4oiC{zr`#R#g^3#Cj{uD~*z}K7(-xanQ0U7s zvJ3A-UQGLrUh(%DAE-I28D8mFdQvubg~VSir;-!&%APw_fy>O4yY~p_JAw45>UC*h zc6XsswhCO1cOZew4EUr74-F<~*e+%BoL?)fkKE7MaVq?~mGtPiu6cp&rk zxYXVxCOClO-MN6Y)3cxQ^duc$OVWR3F)&AYPrs@>T0TFiYxa7$qJ5nT} zaZzo?ko-hb&xUKth?Za$5@fy90!iXkQ@ItQWRlJa%UaRxgY@__> z)$LcqekxAA9UU4@p43Hw^Q<{u(MO)K{QT)}MoO=PfH!PikKMP-=Xs6Voz{V)B${U* zd!+iZ=GxQdYER2sUZD9JZwEmp*T~t8r)({cn?_uy<-Pq|3HkXmh~AQug&aP*Fj$Ui zf7TrBUN%hXw@bQ^ygUphBH-pt1Ql-rM%P;H=>9L~zZI|{8?k{8v2GF4Rr1IW&><&CGnjhR9b z?B6YW&@x-!;c-#T*qm3!kMiexRh#(qf5@B=U{vBfq-((;S^^dAS3Y>`^?a<#$!*PjB$PPiBj{p`>&fL>kYBE#O-kHGahK4xZut z_`spc2}N9fAIB#4&Y-Rr-7^OEb3=C_ZchE z;;qbqg%^pKdS}6HbHM~+kZ=IWqC)7M$i^LlL*NKK;S}fIMULHY!r!Ou+SmYKTb!L8 zxP3nw0FsU#1)>F5SpkLXIsjmJ_%P6Rn1u!S*V!`waQ?r8{<{VL`7WrGa7dACs8#tP z;N(%_NBDKBKve_?dddFhc1zciOD0a!Xe|7GX@=e+S3Xl{tbklhMGSC^Q(JF6WqnQ326)R9Nn#$2};tjm=%s z?k~&SI{5vhX98F(3xDbJQ$<`{cb^1-q6PdKweI_C1;1qQ!!$ zxWgxawyr8$q8-FZP*l`W5JY?IT6lcnzJ{W2x^{8$!rw!0Od8V68lbwCT9&`Mn>};7 z4--MYzC4t@Fnx1SZ)1p1PRs9&_=4&xc+n*+{%=DLt-CQNjCJP@UEO}dRL59X*XA~pN$Q3i!ED9U#Ja8ui_5rZJ}61&7^g5EiM_UU z#M|m0lh8e;kBqe#;F`z?d{X*crMA{Qj0r=xnM-bB9o#W(Pn|JYlQ75mg!?5gsYl#G zNZKPR2qP2*%U;F7E>HbBHAB&{#%qUG5xGTQrcL;gmW!A$JCC*BBvagZgiba)|3NjywL zgC|Qmd@9#=8uuAcHnSm9kXVFO|JTd3&#L74W_k~WgT?Tlv^H6^@-;MIY(TXs5H-0N zw%*)Lh6k>-C%)EC9Iu1?*s1aQ;_Y4MPpV_ow>rd?>W;h;l+8~Dvjc^)79Vle_11R^ zi+zE6H-af_r(PV@eeffUv{pCkFDq-qTdb>cBm1Ht^sHbXK@dQi zb;=`c%X@5h+>^sPWMM_+c1B+XLT2n+xlxUMcSrPnU#nC$I<}-#%#?hq22Wz2q7<1T zUf%tn8yP`GK}haxiAN;rW+UP5-Krbu-Bl{SaAvkhy`WBj0XkdrH*v)_2Xy=JCc*@H ze|J(ykXbklTI6)>HJ-`5cAF{b)uhv&WtAhheAm`CsPqs98d0_Qf>D(l?!nTQY%xdR zC*qxZww7$p4;!mg)hGuVl9QT+cQ-jSad&lE{KHn)re-??1kybm(pB7I!DAYM-0;F< z?KCtTlZV}Dx5|}tRU86tvt?7CQ zV?I&M3vnKAk7!4ZW6ZcnDD-+z$a-ssqiY4$&T)8@>f=&Y;_FLurzU9PZ>;Whyz;)tYRpO zGvmyedFzu4@#ws|(kLl9Za#EswR70C7Fy<9`Fg#N>)O}@xJf!(MU}`*EeJ$rW)|pR z&l96?FFqzGCi<08a3GVJY0CbfE4`JLE|Thwxb%=@$4M0oGl1=kwl3N=4F}+q@NeIM zetqP}k@?%OIywWg?}jEQ%Nx(nd!!|$Sg#PI&K^5=R#EZA64ye$#X=vh`i;|28D)!{ z74Ed`-%vk1qCp7wVLF8l+2Gzey{`HzP%CT@Q*{+mwjLKhk#mpv$g#AvDH8tls^`MZ z4>9EX(XZ^gT~k^mFx~It(1l{f35V_u4VZ=5!m#$an3msfK4ftR(sw6uF!A4d=g!Py zZ>IV{%{w~wsXs~MVAh(pjG6F;6K-%7emOv+=aS%X*dlWEr~R^g@n5yJv7`A9$*6~DJZHz6qF%~ zsy7uCG%hP^D5=OQsA(uDJbZoo{QsNa9|-rp6ZY>X>>P~cf)gy6zYvV_)cDIS*aH%R z@CNR9`*~={%gcKO`g_Q`!Tr4h?d2D&jPy`a emj~Ae_YUxs1HbEcML%;bfQf;He);v=vHt^dm8`Y^ literal 0 HcmV?d00001 diff --git a/examples/uniapp-one/store/index.js b/examples/uniapp-one/store/index.js new file mode 100644 index 00000000..7062399d --- /dev/null +++ b/examples/uniapp-one/store/index.js @@ -0,0 +1,33 @@ +import Vue from 'vue' +import Vuex from 'vuex' + +import home from './modules/home' +import movie from './modules/movie' +import read from './modules/read' +import weather from './modules/weather' +// import music from './modules/music' + +Vue.use(Vuex) + +const store = new Vuex.Store({ + modules: { + home: { + namespaced: true, + ...home + }, + movie: { + namespaced: true, + ...movie + }, + read: { + namespaced: true, + ...read + }, + weather: { + namespaced: true, + ...weather + } + } +}) + +export default store diff --git a/examples/uniapp-one/store/modules/home.js b/examples/uniapp-one/store/modules/home.js new file mode 100644 index 00000000..64c9dae3 --- /dev/null +++ b/examples/uniapp-one/store/modules/home.js @@ -0,0 +1,38 @@ +import { CHANGE_HOME_DATA, STORE_ID_LIST } from './../mutations_type' +import API from '@/utils/api' + +const state = { + ids: [], + data: { + hp_content: '', + hp_img_url: '', + hp_author: '', + text_authors: '' + } +} + +const mutations = { + [CHANGE_HOME_DATA](state, payload) { + state.data = payload.data + }, + [STORE_ID_LIST](state, payload) { + state.ids = payload.ids + } +} + +const actions = { + async getNewIds({ commit }) { + const { data } = await API.getNewIds() + commit(STORE_ID_LIST, { ids: data }) + }, + async getHomeData({ commit, state }) { + const { data } = await API.getHomeData(state.ids[0]) + commit(CHANGE_HOME_DATA, { data }) + } +} + +export default { + state, + mutations, + actions +} diff --git a/examples/uniapp-one/store/modules/movie.js b/examples/uniapp-one/store/modules/movie.js new file mode 100644 index 00000000..841a920a --- /dev/null +++ b/examples/uniapp-one/store/modules/movie.js @@ -0,0 +1,40 @@ +import { CHANGE_MOVIE_LIST, CHANGE_CURRENT_MOVIE } from './../mutations_type' +import API from '@/utils/api' + +const state = { + movies: [], + currentMovie: {} +} + +const mutations = { + [CHANGE_MOVIE_LIST](state, payload) { + state.movies = payload.movies + }, + [CHANGE_CURRENT_MOVIE](state, payload) { + state.currentMovie = payload.data + } +} + +const actions = { + async getMovieList({ commit }) { + const { data } = await API.getMovieList() + commit(CHANGE_MOVIE_LIST, { movies: data }) + }, + async getMovieDetail({ commit, state }, id) { + const { data: { data } } = await API.getMovieDetail(id) + commit(CHANGE_CURRENT_MOVIE, { data: data[0] }) + }, + async getMovieArticleDetail({ commit, state }, id) { + const { data: { data } } = await API.getMovieArticleDetail(id) + commit(CHANGE_CURRENT_MOVIE, { data: data[0] }) + }, + clearMovieDetail({ commit }) { + commit(CHANGE_CURRENT_MOVIE, { data: {} }) + } +} + +export default { + state, + mutations, + actions +} diff --git a/examples/uniapp-one/store/modules/read.js b/examples/uniapp-one/store/modules/read.js new file mode 100644 index 00000000..543af5e9 --- /dev/null +++ b/examples/uniapp-one/store/modules/read.js @@ -0,0 +1,47 @@ +import API from '@/utils/api' +import { CHANGE_CURRENT_READ, CHANGE_READ_LIST } from './../mutations_type' + +const state = { + readList: { + essay: [], + question: [], + serial: [] + }, + readContent: { + essay: {}, + question: {} + } +} + +const mutations = { + [CHANGE_READ_LIST] (state, payload) { + state.readList = payload.data + }, + [CHANGE_CURRENT_READ] (state, payload) { + state.readContent[payload.type] = payload.data + } +} + +const actions = { + async getReadList({ commit, state }) { + const { data } = await API.getReadList() + commit(CHANGE_READ_LIST, { data }) + }, + async getReadContent({ commit, state }, { type, id }) { + const { data } = await API.getReadDetail(type, id) + commit(CHANGE_CURRENT_READ, { type, data }) + }, + async clearReadContent({ commit, state }, { type }) { + commit(CHANGE_CURRENT_READ, { type, data: {} }) + } + // async getReadComment({ commit, state }, id) { + // // const { data } = await API.getReadComment(id) + // // commit(CHANGE_CURRENT_READ, { data }) + // } +} + +export default { + state, + mutations, + actions +} diff --git a/examples/uniapp-one/store/modules/weather.js b/examples/uniapp-one/store/modules/weather.js new file mode 100644 index 00000000..e706a308 --- /dev/null +++ b/examples/uniapp-one/store/modules/weather.js @@ -0,0 +1,38 @@ +import API from '@/utils/api' +import { SET_LOCATION, SET_WEATHER } from '../mutations_type' +const state = { + location: { + latitude: '', + longitude: '' + }, + weather: { + basic: {}, + now: {}, + update: {}, + status: '' + } +} + +const mutations = { + [SET_LOCATION] (state, payload) { + state.location = payload.location + }, + [SET_WEATHER] (state, payload) { + state.weather = payload.weather + } +} + +const actions = { + async getWeather({ state, commit }) { + console.log('getWeather') + const location = state.location + const data = await API.getWeather(`${location.latitude},${location.longitude}`) + commit(SET_WEATHER, { weather: data.result }) + } +} + +export default { + state, + mutations, + actions +} diff --git a/examples/uniapp-one/store/mutations_type.js b/examples/uniapp-one/store/mutations_type.js new file mode 100644 index 00000000..05364659 --- /dev/null +++ b/examples/uniapp-one/store/mutations_type.js @@ -0,0 +1,14 @@ +export const CHANGE_HOME_DATA = 'CHANGE_HOME_DATA' +export const STORE_ID_LIST = 'STORE_ID_LIST' + +export const CHANGE_MOVIE_LIST = 'CHANGE_MOVIE_LIST' +export const CHANGE_CURRENT_MOVIE = 'CHANGE_CURRENT_MOVIE' + +export const CHANGE_READ_LIST = 'CHANGE_READ_LIST' +export const CHANGE_CURRENT_READ = 'CHANGE_CURRENT_READ' + +export const CHANGE_MUSIC_LIST = 'CHANGE_MUSIC_LIST' +export const CHANGE_CURRENT_MUSIC = 'CHANGE_CURRENT_MUSIC' + +export const SET_LOCATION = 'SET_LOCATION' +export const SET_WEATHER = 'SET_WEATHER' diff --git a/examples/uniapp-one/utils/api.js b/examples/uniapp-one/utils/api.js new file mode 100644 index 00000000..d469e703 --- /dev/null +++ b/examples/uniapp-one/utils/api.js @@ -0,0 +1,29 @@ +import request from './request' + +const baseURL = `https://petrify.cc` +// const baseURL = 'http://192.168.29.238:7001' +request.config.baseURL = baseURL + +const dailyRequest = (id) => request.post('/v1/daily', { + url: `/api/4/news/${id}` +}) + +const api = { + // picture + getNewIds: () => request.get(`/v1/one?${encodeURI('url=/api/hp/idlist/0?version=3.5.0&platform=android')}`), + getHomeData: (id) => request.get(`/v1/one?${encodeURI('url=/api/hp/detail/' + id + '?version=3.5.0&platform=android')}`), + // read + getReadList: () => request.get(`/v1/one?${encodeURI('url=/api/reading/index/?version=3.5.0&platform=android')}`), + getReadDetail: (type, id) => request.get(`/v1/one?${encodeURI('url=/api/' + type + '/' + id + '?version=3.5.0&platform=android')}`), + getReadComment: (id) => request.get(`/v1/one?${encodeURI('url=/api/comment/praiseandtime/essay/' + id + '/0?version=3.5.0&platform=android')}`), + getMovieList: () => request.post('/v1/two', { + url: '/api/channel/movie/more/0?channel=wdj&version=4.0.2&uuid=ffffffff-a90e-706a-63f7-ccf973aae5ee&platform=android' + }), + getMovieDetail: (id) => request.get(`/v1/one?${encodeURI('url=/api/movie/' + id + '/story/1/0?version=3.5.0&platform=android')}`), + getWeather: (location) => request.get(`/v1/weather?location=${location}`), + // 知乎日报 + getZhList: () => dailyRequest('latest'), + getZhDtl: (id) => dailyRequest(id) +} + +export default api diff --git a/examples/uniapp-one/utils/request.js b/examples/uniapp-one/utils/request.js new file mode 100644 index 00000000..51681363 --- /dev/null +++ b/examples/uniapp-one/utils/request.js @@ -0,0 +1,29 @@ +import Fly from 'flyio/dist/npm/wx' + +const request = new Fly() + +const errorPrompt = (err) => { + wx.showToast({ + title: err.message || 'fetch data error.', + icon: 'none' + }) +} + +request.interceptors.request.use((request) => { + wx.showNavigationBarLoading() + return request +}) + +request.interceptors.response.use((response, promise) => { + wx.hideNavigationBarLoading() + // if (!(response && response.data && response.data.res === 0)) { + // errorPrompt(response) + // } + return promise.resolve(response.data) +}, (err, promise) => { + wx.hideNavigationBarLoading() + errorPrompt(err) + return promise.reject(err) +}) + +export default request -- GitLab