├── miniprogram ├── components │ ├── buttons │ │ ├── buttons.wxss │ │ └── buttons.wxml │ └── container │ │ ├── container.wxss │ │ └── container.wxml ├── pages │ ├── video │ │ └── video │ │ │ ├── video.json │ │ │ ├── video.wxss │ │ │ ├── video.wxml │ │ │ └── video.js │ ├── index │ │ ├── search │ │ │ ├── search.json │ │ │ ├── search.wxss │ │ │ ├── search.wxml │ │ │ └── search.js │ │ ├── index │ │ │ ├── user-unlogin.png │ │ │ ├── index.json │ │ │ ├── index.wxss │ │ │ ├── index.wxml │ │ │ └── index.js │ │ └── detail │ │ │ ├── detail.json │ │ │ ├── detail.wxss │ │ │ ├── detail.wxml │ │ │ └── detail.js │ ├── release │ │ └── release │ │ │ ├── release.json │ │ │ ├── release.wxss │ │ │ ├── release.wxml │ │ │ └── release.js │ ├── smallvideo │ │ └── smallvideo │ │ │ ├── smallvideo.json │ │ │ ├── smallvideo.wxss │ │ │ ├── smallvideo.wxml │ │ │ └── smallvideo.js │ └── my │ │ └── my │ │ ├── my.json │ │ ├── my.js │ │ ├── my.wxss │ │ └── my.wxml ├── image │ ├── @.png │ ├── GIF.png │ ├── T.png │ ├── dd.png │ ├── tt.png │ ├── 加载.png │ ├── 发布.png │ ├── 小视频.png │ ├── 我的.png │ ├── 我的1.png │ ├── 视屏.png │ ├── 视屏1.png │ ├── 首页.png │ ├── 首页1.png │ ├── chat.png │ ├── emoji.png │ ├── image.png │ ├── like.png │ ├── more.png │ ├── right.png │ ├── share.png │ ├── trash.png │ ├── write.png │ ├── 小视频1.png │ ├── cancle.png │ ├── collect.png │ ├── collect1.png │ ├── comment.png │ ├── emoji1.png │ ├── friend.png │ ├── history.png │ ├── myLike.png │ ├── repeat.png │ ├── return.png │ ├── selected.png │ ├── wechat.png │ └── selectedLike.png ├── wxParse │ ├── emojis │ │ ├── 00.gif │ │ ├── 01.gif │ │ ├── 02.gif │ │ ├── 03.gif │ │ ├── 04.gif │ │ ├── 05.gif │ │ ├── 06.gif │ │ ├── 07.gif │ │ ├── 08.gif │ │ ├── 09.gif │ │ ├── 10.gif │ │ ├── 100.gif │ │ ├── 101.gif │ │ ├── 102.gif │ │ ├── 103.gif │ │ ├── 104.gif │ │ ├── 105.gif │ │ ├── 106.gif │ │ ├── 107.gif │ │ ├── 108.gif │ │ ├── 109.gif │ │ ├── 11.gif │ │ ├── 110.gif │ │ ├── 111.gif │ │ ├── 112.gif │ │ ├── 113.gif │ │ ├── 114.gif │ │ ├── 115.gif │ │ ├── 116.gif │ │ ├── 117.gif │ │ ├── 118.gif │ │ ├── 119.gif │ │ ├── 12.gif │ │ ├── 120.gif │ │ ├── 121.gif │ │ ├── 122.gif │ │ ├── 123.gif │ │ ├── 124.gif │ │ ├── 125.gif │ │ ├── 126.gif │ │ ├── 127.gif │ │ ├── 128.gif │ │ ├── 129.gif │ │ ├── 13.gif │ │ ├── 130.gif │ │ ├── 131.gif │ │ ├── 132.gif │ │ ├── 133.gif │ │ ├── 134.gif │ │ ├── 14.gif │ │ ├── 15.gif │ │ ├── 16.gif │ │ ├── 17.gif │ │ ├── 18.gif │ │ ├── 19.gif │ │ ├── 20.gif │ │ ├── 21.gif │ │ ├── 22.gif │ │ ├── 23.gif │ │ ├── 24.gif │ │ ├── 25.gif │ │ ├── 26.gif │ │ ├── 27.gif │ │ ├── 28.gif │ │ ├── 29.gif │ │ ├── 30.gif │ │ ├── 31.gif │ │ ├── 32.gif │ │ ├── 33.gif │ │ ├── 34.gif │ │ ├── 35.gif │ │ ├── 36.gif │ │ ├── 37.gif │ │ ├── 38.gif │ │ ├── 39.gif │ │ ├── 40.gif │ │ ├── 41.gif │ │ ├── 42.gif │ │ ├── 43.gif │ │ ├── 44.gif │ │ ├── 45.gif │ │ ├── 46.gif │ │ ├── 47.gif │ │ ├── 48.gif │ │ ├── 49.gif │ │ ├── 50.gif │ │ ├── 51.gif │ │ ├── 52.gif │ │ ├── 53.gif │ │ ├── 54.gif │ │ ├── 55.gif │ │ ├── 56.gif │ │ ├── 57.gif │ │ ├── 58.gif │ │ ├── 59.gif │ │ ├── 60.gif │ │ ├── 61.gif │ │ ├── 62.gif │ │ ├── 63.gif │ │ ├── 64.gif │ │ ├── 65.gif │ │ ├── 66.gif │ │ ├── 67.gif │ │ ├── 68.gif │ │ ├── 69.gif │ │ ├── 70.gif │ │ ├── 71.gif │ │ ├── 72.gif │ │ ├── 73.gif │ │ ├── 74.gif │ │ ├── 75.gif │ │ ├── 76.gif │ │ ├── 77.gif │ │ ├── 78.gif │ │ ├── 79.gif │ │ ├── 80.gif │ │ ├── 81.gif │ │ ├── 82.gif │ │ ├── 83.gif │ │ ├── 84.gif │ │ ├── 85.gif │ │ ├── 86.gif │ │ ├── 87.gif │ │ ├── 88.gif │ │ ├── 89.gif │ │ ├── 90.gif │ │ ├── 91.gif │ │ ├── 92.gif │ │ ├── 93.gif │ │ ├── 94.gif │ │ ├── 95.gif │ │ ├── 96.gif │ │ ├── 97.gif │ │ ├── 98.gif │ │ └── 99.gif │ ├── wxParse.wxss │ ├── wxParse.js │ ├── htmlparser.js │ ├── wxDiscode.js │ └── html2json.js ├── app.js ├── app.wxss ├── app.json └── style │ └── guide.wxss ├── cloudfunctions ├── getTopping │ ├── index.js │ └── package.json ├── getData │ ├── index.js │ ├── package.json │ └── yarn.lock ├── module │ ├── index.js │ └── package.json ├── getDetail │ ├── index.js │ └── package.json ├── updateImg │ ├── package.json │ └── index.js ├── updateComments │ ├── package.json │ └── index.js └── imgCheck │ ├── package.json │ ├── index.js │ └── package-lock.json ├── .gitignore ├── project.config.json └── README.md /miniprogram/components/buttons/buttons.wxss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /miniprogram/pages/video/video/video.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /miniprogram/components/container/container.wxss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /miniprogram/pages/index/search/search.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /miniprogram/pages/release/release/release.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /miniprogram/pages/smallvideo/smallvideo/smallvideo.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /miniprogram/pages/video/video/video.wxss: -------------------------------------------------------------------------------- 1 | /* miniprogram/pages/video/video.wxss */ -------------------------------------------------------------------------------- /miniprogram/pages/index/search/search.wxss: -------------------------------------------------------------------------------- 1 | /* miniprogram/pages/index/search/search.wxss */ -------------------------------------------------------------------------------- /miniprogram/pages/release/release/release.wxss: -------------------------------------------------------------------------------- 1 | /* miniprogram/pages/release/release.wxss */ -------------------------------------------------------------------------------- /miniprogram/image/@.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/image/@.png -------------------------------------------------------------------------------- /miniprogram/image/GIF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/image/GIF.png -------------------------------------------------------------------------------- /miniprogram/image/T.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/image/T.png -------------------------------------------------------------------------------- /miniprogram/image/dd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/image/dd.png -------------------------------------------------------------------------------- /miniprogram/image/tt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/image/tt.png -------------------------------------------------------------------------------- /miniprogram/image/加载.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/image/加载.png -------------------------------------------------------------------------------- /miniprogram/image/发布.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/image/发布.png -------------------------------------------------------------------------------- /miniprogram/image/小视频.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/image/小视频.png -------------------------------------------------------------------------------- /miniprogram/image/我的.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/image/我的.png -------------------------------------------------------------------------------- /miniprogram/image/我的1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/image/我的1.png -------------------------------------------------------------------------------- /miniprogram/image/视屏.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/image/视屏.png -------------------------------------------------------------------------------- /miniprogram/image/视屏1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/image/视屏1.png -------------------------------------------------------------------------------- /miniprogram/image/首页.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/image/首页.png -------------------------------------------------------------------------------- /miniprogram/image/首页1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/image/首页1.png -------------------------------------------------------------------------------- /miniprogram/image/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/image/chat.png -------------------------------------------------------------------------------- /miniprogram/image/emoji.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/image/emoji.png -------------------------------------------------------------------------------- /miniprogram/image/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/image/image.png -------------------------------------------------------------------------------- /miniprogram/image/like.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/image/like.png -------------------------------------------------------------------------------- /miniprogram/image/more.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/image/more.png -------------------------------------------------------------------------------- /miniprogram/image/right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/image/right.png -------------------------------------------------------------------------------- /miniprogram/image/share.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/image/share.png -------------------------------------------------------------------------------- /miniprogram/image/trash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/image/trash.png -------------------------------------------------------------------------------- /miniprogram/image/write.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/image/write.png -------------------------------------------------------------------------------- /miniprogram/image/小视频1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/image/小视频1.png -------------------------------------------------------------------------------- /miniprogram/pages/smallvideo/smallvideo/smallvideo.wxss: -------------------------------------------------------------------------------- 1 | /* miniprogram/pages/smallvideo/smallvideo.wxss */ -------------------------------------------------------------------------------- /miniprogram/image/cancle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/image/cancle.png -------------------------------------------------------------------------------- /miniprogram/image/collect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/image/collect.png -------------------------------------------------------------------------------- /miniprogram/image/collect1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/image/collect1.png -------------------------------------------------------------------------------- /miniprogram/image/comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/image/comment.png -------------------------------------------------------------------------------- /miniprogram/image/emoji1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/image/emoji1.png -------------------------------------------------------------------------------- /miniprogram/image/friend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/image/friend.png -------------------------------------------------------------------------------- /miniprogram/image/history.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/image/history.png -------------------------------------------------------------------------------- /miniprogram/image/myLike.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/image/myLike.png -------------------------------------------------------------------------------- /miniprogram/image/repeat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/image/repeat.png -------------------------------------------------------------------------------- /miniprogram/image/return.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/image/return.png -------------------------------------------------------------------------------- /miniprogram/image/selected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/image/selected.png -------------------------------------------------------------------------------- /miniprogram/image/wechat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/image/wechat.png -------------------------------------------------------------------------------- /miniprogram/image/selectedLike.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/image/selectedLike.png -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/00.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/00.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/01.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/01.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/02.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/02.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/03.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/03.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/04.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/04.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/05.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/05.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/06.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/06.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/07.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/07.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/08.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/08.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/09.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/09.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/10.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/10.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/100.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/100.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/101.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/101.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/102.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/102.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/103.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/103.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/104.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/104.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/105.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/105.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/106.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/106.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/107.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/107.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/108.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/108.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/109.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/109.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/11.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/11.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/110.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/110.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/111.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/111.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/112.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/112.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/113.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/113.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/114.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/114.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/115.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/115.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/116.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/116.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/117.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/117.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/118.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/118.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/119.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/119.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/12.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/12.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/120.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/120.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/121.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/121.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/122.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/122.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/123.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/123.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/124.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/124.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/125.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/125.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/126.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/126.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/127.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/127.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/128.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/128.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/129.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/129.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/13.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/13.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/130.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/130.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/131.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/131.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/132.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/132.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/133.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/133.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/134.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/134.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/14.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/14.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/15.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/15.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/16.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/16.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/17.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/17.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/18.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/18.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/19.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/19.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/20.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/20.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/21.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/21.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/22.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/22.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/23.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/23.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/24.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/24.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/25.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/25.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/26.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/26.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/27.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/27.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/28.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/28.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/29.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/29.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/30.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/30.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/31.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/31.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/32.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/32.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/33.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/33.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/34.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/34.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/35.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/35.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/36.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/36.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/37.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/37.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/38.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/38.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/39.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/39.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/40.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/40.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/41.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/41.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/42.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/42.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/43.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/43.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/44.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/44.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/45.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/45.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/46.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/46.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/47.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/47.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/48.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/48.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/49.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/49.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/50.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/50.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/51.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/51.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/52.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/52.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/53.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/53.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/54.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/54.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/55.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/55.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/56.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/56.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/57.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/57.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/58.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/58.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/59.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/59.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/60.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/60.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/61.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/61.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/62.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/62.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/63.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/63.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/64.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/64.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/65.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/65.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/66.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/66.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/67.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/67.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/68.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/68.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/69.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/69.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/70.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/70.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/71.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/71.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/72.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/72.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/73.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/73.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/74.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/74.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/75.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/75.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/76.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/76.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/77.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/77.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/78.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/78.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/79.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/79.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/80.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/80.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/81.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/81.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/82.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/82.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/83.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/83.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/84.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/84.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/85.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/85.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/86.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/86.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/87.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/87.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/88.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/88.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/89.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/89.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/90.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/90.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/91.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/91.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/92.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/92.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/93.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/93.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/94.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/94.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/95.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/95.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/96.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/96.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/97.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/97.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/98.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/98.gif -------------------------------------------------------------------------------- /miniprogram/wxParse/emojis/99.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/wxParse/emojis/99.gif -------------------------------------------------------------------------------- /miniprogram/pages/video/video/video.wxml: -------------------------------------------------------------------------------- 1 | 2 | miniprogram/pages/video/video.wxml 3 | -------------------------------------------------------------------------------- /miniprogram/pages/index/index/user-unlogin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldrainc/toutiao/HEAD/miniprogram/pages/index/index/user-unlogin.png -------------------------------------------------------------------------------- /miniprogram/pages/my/my/my.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": { 3 | "van-transition": "../../../vant-weapp/transition/index" 4 | } 5 | } -------------------------------------------------------------------------------- /miniprogram/pages/release/release/release.wxml: -------------------------------------------------------------------------------- 1 | 2 | miniprogram/pages/release/release.wxml 3 | -------------------------------------------------------------------------------- /miniprogram/pages/index/search/search.wxml: -------------------------------------------------------------------------------- 1 | 2 | miniprogram/pages/index/search/search.wxml 3 | -------------------------------------------------------------------------------- /miniprogram/pages/smallvideo/smallvideo/smallvideo.wxml: -------------------------------------------------------------------------------- 1 | 2 | miniprogram/pages/smallvideo/smallvideo.wxml 3 | -------------------------------------------------------------------------------- /cloudfunctions/getTopping/index.js: -------------------------------------------------------------------------------- 1 | const cloud = require('wx-server-sdk') 2 | 3 | cloud.init() 4 | const db = cloud.database() 5 | 6 | // 云函数入口函数 7 | exports.main = async (event, context) => { 8 | return await db.collection('topping').get() 9 | } -------------------------------------------------------------------------------- /cloudfunctions/getData/index.js: -------------------------------------------------------------------------------- 1 | // 云函数入口文件 2 | const cloud = require('wx-server-sdk') 3 | 4 | cloud.init() 5 | const db = cloud.database() 6 | 7 | // 云函数入口函数 8 | exports.main = async (event, context) => { 9 | return await db.collection('news').skip((event.count-1)*5).limit(5).get() 10 | } -------------------------------------------------------------------------------- /cloudfunctions/module/index.js: -------------------------------------------------------------------------------- 1 | // 云函数入口文件 2 | const cloud = require('wx-server-sdk') 3 | 4 | cloud.init() 5 | const db = cloud.database() 6 | 7 | // 云函数入口函数 8 | exports.main = async (event, context) => { 9 | return await db.collection(event.title).skip((event.counter-1)*5).limit(5).get() 10 | } -------------------------------------------------------------------------------- /miniprogram/app.js: -------------------------------------------------------------------------------- 1 | //app.js 2 | App({ 3 | onLaunch: function () { 4 | 5 | if (!wx.cloud) { 6 | console.error('请使用 2.2.3 或以上的基础库以使用云能力') 7 | } else { 8 | wx.cloud.init({ 9 | traceUser: true, 10 | }) 11 | } 12 | 13 | this.globalData = {} 14 | } 15 | }) 16 | -------------------------------------------------------------------------------- /miniprogram/components/buttons/buttons.wxml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cloudfunctions/getDetail/index.js: -------------------------------------------------------------------------------- 1 | // 云函数入口文件 2 | const cloud = require('wx-server-sdk') 3 | 4 | cloud.init() 5 | var db = cloud.database(); 6 | 7 | // 云函数入口函数 8 | exports.main = async (event, context) => { 9 | return await db.collection(event.title) 10 | .where({ 11 | new_id: event.new_id 12 | }).get(); 13 | } -------------------------------------------------------------------------------- /cloudfunctions/module/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "module", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "wx-server-sdk": "latest" 13 | } 14 | } -------------------------------------------------------------------------------- /cloudfunctions/getDetail/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "getDetail", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "wx-server-sdk": "latest" 13 | } 14 | } -------------------------------------------------------------------------------- /cloudfunctions/updateImg/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "updateImg", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "wx-server-sdk": "latest" 13 | } 14 | } -------------------------------------------------------------------------------- /cloudfunctions/getData/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "getData", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "wx-server-sdk": "^0.0.22" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /cloudfunctions/getTopping/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "getTopping", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "wx-server-sdk": "latest" 13 | } 14 | } -------------------------------------------------------------------------------- /cloudfunctions/updateComments/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "updateComments", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "wx-server-sdk": "latest" 13 | } 14 | } -------------------------------------------------------------------------------- /cloudfunctions/imgCheck/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "imgCheck", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "image-node-sdk": "^1.0.4", 13 | "wx-server-sdk": "latest" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /cloudfunctions/updateImg/index.js: -------------------------------------------------------------------------------- 1 | // 云函数入口文件 2 | const cloud = require('wx-server-sdk') 3 | 4 | cloud.init() 5 | let db = cloud.database(); 6 | let comments = db.collection('comments'); 7 | // 云函数入口函数 8 | exports.main = async (event, context) => { 9 | let img = comments[0]; 10 | return await comments.where({ 11 | new_id: event.new_id 12 | }).update({ 13 | data: { 14 | image: event.fileID 15 | } 16 | }) 17 | } -------------------------------------------------------------------------------- /miniprogram/pages/index/detail/detail.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": { 3 | "van-col": "../../../vant-weapp/col/index", 4 | "van-button": "../../../vant-weapp/button/index", 5 | "van-row": "../../../vant-weapp/row/index", 6 | "van-popup": "../../../vant-weapp/popup/index", 7 | "van-checkbox": "../../../vant-weapp/checkbox/index", 8 | "van-checkbox-group": "../../../vant-weapp/checkbox-group/index" 9 | } 10 | } -------------------------------------------------------------------------------- /cloudfunctions/updateComments/index.js: -------------------------------------------------------------------------------- 1 | // 云函数入口文件 2 | const cloud = require('wx-server-sdk') 3 | 4 | cloud.init() 5 | var db = cloud.database(); 6 | 7 | // 云函数入口函数 8 | exports.main = async (event, context) => {// 使用没有更新,使用where更新成功 9 | return await db.collection('comments') 10 | .where({ 11 | new_id: event.new_id 12 | }) 13 | .update({ 14 | data: { 15 | comments: event.comms 16 | } 17 | }); 18 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Numerous always-ignore extensions 2 | *.bak 3 | *.patch 4 | *.diff 5 | *.err 6 | 7 | # temp file for git conflict merging 8 | *.orig 9 | *.log 10 | *.rej 11 | *.swo 12 | *.swp 13 | *.zip 14 | *.vi 15 | *~ 16 | *.sass-cache 17 | *.tmp.html 18 | *.dump 19 | 20 | # OS or Editor folders 21 | .DS_Store 22 | ._* 23 | .cache 24 | .project 25 | .settings 26 | .tmproj 27 | *.esproj 28 | *.sublime-project 29 | *.sublime-workspace 30 | nbproject 31 | thumbs.db 32 | *.iml 33 | 34 | # Folders to ignore 35 | .hg 36 | .svn 37 | .CVS 38 | .idea 39 | node_modules/ 40 | jscoverage_lib/ 41 | bower_components/ 42 | dist/ 43 | vant-weapp/ 44 | 45 | -------------------------------------------------------------------------------- /miniprogram/pages/index/index/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": { 3 | "van-tabs": "../../../vant-weapp/tabs/index", 4 | "van-tab": "../../../vant-weapp/tab/index", 5 | "van-search": "../../../vant-weapp/search/index", 6 | "van-panel": "../../../vant-weapp/panel/index", 7 | "van-popup": "../../../vant-weapp/popup/index", 8 | "van-row": "../../../vant-weapp/row/index", 9 | "van-col": "../../../vant-weapp/col/index", 10 | "van-button": "../../../vant-weapp/button/index", 11 | "van-cell": "../../../vant-weapp/cell/index", 12 | "van-cell-group": "../../../vant-weapp/cell-group/index" 13 | } 14 | } -------------------------------------------------------------------------------- /cloudfunctions/imgCheck/index.js: -------------------------------------------------------------------------------- 1 | // 云函数入口文件 2 | const AppId = '1257716524'; 3 | const SecretId = 'AKIDWzIUWQBj8OVjeT9wTq24v6DFGFB2wU6c'; 4 | const SecretKey = 'cAe3ISQErJagbWJvNfomc7sUwDPRIzb5'; 5 | const cloud = require('wx-server-sdk') 6 | // const fs = require('fs') // module.exports 7 | // const path = require('path') 8 | const { 9 | ImageClient 10 | } = require('image-node-sdk'); 11 | 12 | cloud.init() 13 | 14 | let ImgClient = new ImageClient({AppId, SecretId, SecretKey}); 15 | // 云函数入口函数 16 | exports.main = async (event, context) => { 17 | let ImagesUrl = event.images; 18 | 19 | return await ImgClient.imgPornDetect({ 20 | data: { 21 | url_list: ImagesUrl 22 | } 23 | }) 24 | } -------------------------------------------------------------------------------- /miniprogram/app.wxss: -------------------------------------------------------------------------------- 1 | /**app.wxss**/ 2 | @import "/wxParse/wxParse.wxss"; 3 | .container { 4 | display: flex; 5 | flex-direction: column; 6 | align-items: center; 7 | box-sizing: border-box; 8 | } 9 | 10 | ::-webkit-scrollbar 11 | { 12 | width: 1px; 13 | height: 1px; 14 | background-color: #F5F5F5; 15 | } 16 | 17 | /*定义滚动条轨道 内阴影+圆角*/ 18 | ::-webkit-scrollbar-track 19 | { 20 | -webkit-box-shadow: inset 0 0 1px rgba(0,0,0,0.3); 21 | border-radius: 10px; 22 | background-color: #FFF; 23 | } 24 | 25 | /*定义滑块 内阴影+圆角*/ 26 | ::-webkit-scrollbar-thumb 27 | { 28 | border-radius: 10px; 29 | -webkit-box-shadow: inset 0 0 1px rgba(0,0,0,.3); 30 | background-color: #AAA; 31 | } 32 | -------------------------------------------------------------------------------- /project.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "miniprogramRoot": "miniprogram/", 3 | "cloudfunctionRoot": "cloudfunctions/", 4 | "setting": { 5 | "urlCheck": false, 6 | "es6": true, 7 | "postcss": true, 8 | "minified": true, 9 | "newFeature": true 10 | }, 11 | "appid": "wx67f286e9a19c3b0e", 12 | "projectname": "toutiao1", 13 | "libVersion": "2.4.0", 14 | "condition": { 15 | "search": { 16 | "current": -1, 17 | "list": [] 18 | }, 19 | "conversation": { 20 | "current": -1, 21 | "list": [] 22 | }, 23 | "plugin": { 24 | "current": -1, 25 | "list": [] 26 | }, 27 | "game": { 28 | "list": [] 29 | }, 30 | "miniprogram": { 31 | "current": 0, 32 | "list": [ 33 | { 34 | "id": -1, 35 | "name": "db guide", 36 | "pathName": "pages/databaseGuide/databaseGuide" 37 | } 38 | ] 39 | } 40 | } 41 | } -------------------------------------------------------------------------------- /miniprogram/pages/video/video/video.js: -------------------------------------------------------------------------------- 1 | // miniprogram/pages/video/video.js 2 | Page({ 3 | 4 | /** 5 | * 页面的初始数据 6 | */ 7 | data: { 8 | 9 | }, 10 | 11 | /** 12 | * 生命周期函数--监听页面加载 13 | */ 14 | onLoad: function (options) { 15 | 16 | }, 17 | 18 | /** 19 | * 生命周期函数--监听页面初次渲染完成 20 | */ 21 | onReady: function () { 22 | 23 | }, 24 | 25 | /** 26 | * 生命周期函数--监听页面显示 27 | */ 28 | onShow: function () { 29 | 30 | }, 31 | 32 | /** 33 | * 生命周期函数--监听页面隐藏 34 | */ 35 | onHide: function () { 36 | 37 | }, 38 | 39 | /** 40 | * 生命周期函数--监听页面卸载 41 | */ 42 | onUnload: function () { 43 | 44 | }, 45 | 46 | /** 47 | * 页面相关事件处理函数--监听用户下拉动作 48 | */ 49 | onPullDownRefresh: function () { 50 | 51 | }, 52 | 53 | /** 54 | * 页面上拉触底事件的处理函数 55 | */ 56 | onReachBottom: function () { 57 | 58 | }, 59 | 60 | /** 61 | * 用户点击右上角分享 62 | */ 63 | onShareAppMessage: function () { 64 | 65 | } 66 | }) -------------------------------------------------------------------------------- /miniprogram/pages/index/search/search.js: -------------------------------------------------------------------------------- 1 | // miniprogram/pages/index/search/search.js 2 | Page({ 3 | 4 | /** 5 | * 页面的初始数据 6 | */ 7 | data: { 8 | 9 | }, 10 | 11 | /** 12 | * 生命周期函数--监听页面加载 13 | */ 14 | onLoad: function (options) { 15 | 16 | }, 17 | 18 | /** 19 | * 生命周期函数--监听页面初次渲染完成 20 | */ 21 | onReady: function () { 22 | 23 | }, 24 | 25 | /** 26 | * 生命周期函数--监听页面显示 27 | */ 28 | onShow: function () { 29 | 30 | }, 31 | 32 | /** 33 | * 生命周期函数--监听页面隐藏 34 | */ 35 | onHide: function () { 36 | 37 | }, 38 | 39 | /** 40 | * 生命周期函数--监听页面卸载 41 | */ 42 | onUnload: function () { 43 | 44 | }, 45 | 46 | /** 47 | * 页面相关事件处理函数--监听用户下拉动作 48 | */ 49 | onPullDownRefresh: function () { 50 | 51 | }, 52 | 53 | /** 54 | * 页面上拉触底事件的处理函数 55 | */ 56 | onReachBottom: function () { 57 | 58 | }, 59 | 60 | /** 61 | * 用户点击右上角分享 62 | */ 63 | onShareAppMessage: function () { 64 | 65 | } 66 | }) -------------------------------------------------------------------------------- /miniprogram/pages/release/release/release.js: -------------------------------------------------------------------------------- 1 | // miniprogram/pages/release/release.js 2 | Page({ 3 | 4 | /** 5 | * 页面的初始数据 6 | */ 7 | data: { 8 | 9 | }, 10 | 11 | /** 12 | * 生命周期函数--监听页面加载 13 | */ 14 | onLoad: function (options) { 15 | 16 | }, 17 | 18 | /** 19 | * 生命周期函数--监听页面初次渲染完成 20 | */ 21 | onReady: function () { 22 | 23 | }, 24 | 25 | /** 26 | * 生命周期函数--监听页面显示 27 | */ 28 | onShow: function () { 29 | 30 | }, 31 | 32 | /** 33 | * 生命周期函数--监听页面隐藏 34 | */ 35 | onHide: function () { 36 | 37 | }, 38 | 39 | /** 40 | * 生命周期函数--监听页面卸载 41 | */ 42 | onUnload: function () { 43 | 44 | }, 45 | 46 | /** 47 | * 页面相关事件处理函数--监听用户下拉动作 48 | */ 49 | onPullDownRefresh: function () { 50 | 51 | }, 52 | 53 | /** 54 | * 页面上拉触底事件的处理函数 55 | */ 56 | onReachBottom: function () { 57 | 58 | }, 59 | 60 | /** 61 | * 用户点击右上角分享 62 | */ 63 | onShareAppMessage: function () { 64 | 65 | } 66 | }) -------------------------------------------------------------------------------- /miniprogram/pages/smallvideo/smallvideo/smallvideo.js: -------------------------------------------------------------------------------- 1 | // miniprogram/pages/smallvideo/smallvideo.js 2 | Page({ 3 | 4 | /** 5 | * 页面的初始数据 6 | */ 7 | data: { 8 | 9 | }, 10 | 11 | /** 12 | * 生命周期函数--监听页面加载 13 | */ 14 | onLoad: function (options) { 15 | 16 | }, 17 | 18 | /** 19 | * 生命周期函数--监听页面初次渲染完成 20 | */ 21 | onReady: function () { 22 | 23 | }, 24 | 25 | /** 26 | * 生命周期函数--监听页面显示 27 | */ 28 | onShow: function () { 29 | 30 | }, 31 | 32 | /** 33 | * 生命周期函数--监听页面隐藏 34 | */ 35 | onHide: function () { 36 | 37 | }, 38 | 39 | /** 40 | * 生命周期函数--监听页面卸载 41 | */ 42 | onUnload: function () { 43 | 44 | }, 45 | 46 | /** 47 | * 页面相关事件处理函数--监听用户下拉动作 48 | */ 49 | onPullDownRefresh: function () { 50 | 51 | }, 52 | 53 | /** 54 | * 页面上拉触底事件的处理函数 55 | */ 56 | onReachBottom: function () { 57 | 58 | }, 59 | 60 | /** 61 | * 用户点击右上角分享 62 | */ 63 | onShareAppMessage: function () { 64 | 65 | } 66 | }) -------------------------------------------------------------------------------- /miniprogram/components/container/container.wxml: -------------------------------------------------------------------------------- 1 | 20 | -------------------------------------------------------------------------------- /miniprogram/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "pages": [ 3 | "pages/index/index/index", 4 | "pages/index/detail/detail", 5 | "pages/my/my/my", 6 | "pages/video/video/video", 7 | "pages/release/release/release", 8 | "pages/smallvideo/smallvideo/smallvideo", 9 | "pages/index/search/search" 10 | ], 11 | "window": { 12 | "backgroundColor": "#F6F6F6", 13 | "backgroundTextStyle": "light", 14 | "navigationBarBackgroundColor": "#F6F6F6", 15 | "navigationBarTitleText": "头条", 16 | "navigationBarTextStyle": "black", 17 | "enablePullDownRefresh": true 18 | }, 19 | "tabBar": { 20 | "color": "#333333", 21 | "selectedColor": "#d81e06", 22 | "list": [ 23 | { 24 | "pagePath": "pages/index/index/index", 25 | "text": "首页", 26 | "iconPath": "image/首页.png", 27 | "selectedIconPath": "image/首页1.png" 28 | }, 29 | { 30 | "pagePath": "pages/video/video/video", 31 | "iconPath": "image/视屏.png", 32 | "selectedIconPath": "image/视屏1.png", 33 | "text": "西瓜视屏" 34 | }, 35 | { 36 | "pagePath": "pages/release/release/release", 37 | "iconPath": "image/发布.png", 38 | "selectedIconPath": "image/发布.png", 39 | "text": "发布" 40 | }, 41 | { 42 | "pagePath": "pages/smallvideo/smallvideo/smallvideo", 43 | "iconPath": "image/小视频.png", 44 | "selectedIconPath": "image/小视频1.png", 45 | "text": "小视频" 46 | }, 47 | { 48 | "pagePath": "pages/my/my/my", 49 | "iconPath": "image/我的.png", 50 | "selectedIconPath": "image/我的1.png", 51 | "text": "我的" 52 | } 53 | ] 54 | } 55 | } -------------------------------------------------------------------------------- /miniprogram/pages/index/index/index.wxss: -------------------------------------------------------------------------------- 1 | .new{ 2 | margin: 0 0 50rpx 0; 3 | } 4 | /* van-panel{ 5 | font-size: 100rpx; 6 | color: black; 7 | } */ 8 | .hot{ 9 | color: red; 10 | font-size: 40rpx; 11 | font-weight: bold; 12 | } 13 | .images{ 14 | display: flex; 15 | justify-content: center; 16 | } 17 | .images image{ 18 | width: 235rpx; 19 | height: 180rpx; 20 | margin-left: 10rpx; 21 | } 22 | .footer{ 23 | width: 100%; 24 | display: flex; 25 | justify-content: space-around; 26 | align-items: center; 27 | font-size: 35rpx; 28 | color: dimgrey; 29 | } 30 | /* .footer .new{ 31 | width: 100%; 32 | } */ 33 | .tabs{ 34 | position: relative; 35 | } 36 | .right{ 37 | position: absolute; 38 | right: 0; 39 | top: 20rpx; 40 | width: 100rpx; 41 | height: 57rpx; 42 | background: white; 43 | z-index: 10; 44 | display: flex; 45 | align-items: center; 46 | justify-content: center; 47 | /* margin-right: 20rpx; */ 48 | /* box-shadow: -20rpx 0 gray; */ 49 | /* background: white; */ 50 | } 51 | .right image{ 52 | width: 60rpx; 53 | height: 100%; 54 | /* vertical-align: middle; */ 55 | } 56 | .buttons{ 57 | display: flex; 58 | justify-content: space-around; 59 | margin: 20rpx 0; 60 | } 61 | .top{ 62 | width: 95%; 63 | height: 80rpx; 64 | display: flex; 65 | justify-content: space-between; 66 | align-items: center; 67 | margin: 0 20rpx; 68 | 69 | } 70 | .top .top_my{ 71 | font-size: 42rpx; 72 | } 73 | .cancle image{ 74 | width: 55rpx; 75 | height: 55rpx; 76 | margin-left: 20rpx; 77 | } -------------------------------------------------------------------------------- /miniprogram/pages/my/my/my.js: -------------------------------------------------------------------------------- 1 | // miniprogram/pages/my/my.js 2 | //获取应用实例 3 | const app = getApp() 4 | 5 | 6 | Page({ 7 | 8 | /** 9 | * 页面的初始数据 10 | */ 11 | data: { 12 | userInfo: {}, 13 | hasUserInfo: false, 14 | status: 1, 15 | canIUse: wx.canIUse('button.open-type.getUserInfo') 16 | }, 17 | 18 | /** 19 | * 生命周期函数--监听页面加载 20 | */ 21 | onLoad: function () { 22 | if (app.globalData.userInfo) { 23 | this.setData({ 24 | userInfo: app.globalData.userInfo, 25 | hasUserInfo: true 26 | }) 27 | } else if (this.data.canIUse){ 28 | // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回 29 | // 所以此处加入 callback 以防止这种情况 30 | app.userInfoReadyCallback = res => { 31 | this.setData({ 32 | userInfo: res.userInfo, 33 | hasUserInfo: true 34 | }) 35 | } 36 | } else { 37 | // 在没有 open-type=getUserInfo 版本的兼容处理 38 | wx.getUserInfo({ 39 | success: res => { 40 | app.globalData.userInfo = res.userInfo 41 | this.setData({ 42 | userInfo: res.userInfo, 43 | hasUserInfo: true 44 | }) 45 | } 46 | }) 47 | } 48 | }, 49 | getUserInfo: function(e) { 50 | console.log(e) 51 | app.globalData.userInfo = e.detail.userInfo 52 | // this.data.userInfo = e.detail.userInfo; 53 | this.setData({ 54 | userInfo: e.detail.userInfo, 55 | hasUserInfo: true 56 | }) 57 | }, 58 | 59 | /** 60 | * 生命周期函数--监听页面初次渲染完成 61 | */ 62 | onReady: function () { 63 | 64 | }, 65 | 66 | /** 67 | * 生命周期函数--监听页面显示 68 | */ 69 | onShow: function () { 70 | 71 | }, 72 | 73 | /** 74 | * 生命周期函数--监听页面隐藏 75 | */ 76 | onHide: function () { 77 | 78 | }, 79 | 80 | /** 81 | * 生命周期函数--监听页面卸载 82 | */ 83 | onUnload: function () { 84 | 85 | }, 86 | 87 | /** 88 | * 页面相关事件处理函数--监听用户下拉动作 89 | */ 90 | onPullDownRefresh: function () { 91 | 92 | }, 93 | 94 | /** 95 | * 页面上拉触底事件的处理函数 96 | */ 97 | onReachBottom: function () { 98 | 99 | }, 100 | 101 | /** 102 | * 用户点击右上角分享 103 | */ 104 | onShareAppMessage: function () { 105 | 106 | } 107 | }) -------------------------------------------------------------------------------- /miniprogram/style/guide.wxss: -------------------------------------------------------------------------------- 1 | page { 2 | background: #f6f6f6; 3 | display: flex; 4 | flex-direction: column; 5 | justify-content: flex-start; 6 | } 7 | 8 | .list { 9 | margin-top: 40rpx; 10 | height: auto; 11 | width: 100%; 12 | background: #fff; 13 | padding: 0 40rpx; 14 | border: 1px solid rgba(0, 0, 0, 0.1); 15 | border-left: none; 16 | border-right: none; 17 | transition: all 300ms ease; 18 | display: flex; 19 | flex-direction: column; 20 | align-items: flex-start; 21 | box-sizing: border-box; 22 | } 23 | 24 | .list-item { 25 | width: 100%; 26 | padding: 0; 27 | line-height: 104rpx; 28 | font-size: 34rpx; 29 | color: #007aff; 30 | border-top: 1px solid rgba(0, 0, 0, 0.1); 31 | display: flex; 32 | flex-direction: row; 33 | align-content: center; 34 | justify-content: space-between; 35 | box-sizing: border-box; 36 | } 37 | 38 | .list-item:first-child { 39 | border-top: none; 40 | } 41 | 42 | .list-item image { 43 | max-width: 100%; 44 | max-height: 20vh; 45 | margin: 20rpx 0; 46 | } 47 | 48 | .request-text { 49 | color: #222; 50 | padding: 20rpx 0; 51 | font-size: 24rpx; 52 | line-height: 36rpx; 53 | word-break: break-all; 54 | } 55 | 56 | .guide { 57 | width: 100%; 58 | padding: 40rpx; 59 | box-sizing: border-box; 60 | display: flex; 61 | flex-direction: column; 62 | } 63 | 64 | .guide .headline { 65 | font-size: 34rpx; 66 | font-weight: bold; 67 | color: #555; 68 | line-height: 40rpx; 69 | } 70 | 71 | .guide .p { 72 | margin-top: 20rpx; 73 | font-size: 28rpx; 74 | line-height: 36rpx; 75 | color: #666; 76 | } 77 | 78 | .guide .code { 79 | margin-top: 20rpx; 80 | font-size: 28rpx; 81 | line-height: 36rpx; 82 | color: #666; 83 | background: white; 84 | white-space: pre; 85 | } 86 | 87 | .guide .code-dark { 88 | margin-top: 20rpx; 89 | background: rgba(0, 0, 0, 0.8); 90 | padding: 20rpx; 91 | font-size: 28rpx; 92 | line-height: 36rpx; 93 | border-radius: 6rpx; 94 | color: #fff; 95 | white-space: pre 96 | } 97 | 98 | .guide image { 99 | max-width: 100%; 100 | } 101 | 102 | .guide .image1 { 103 | margin-top: 20rpx; 104 | max-width: 100%; 105 | width: 356px; 106 | height: 47px; 107 | } 108 | 109 | .guide .image2 { 110 | margin-top: 20rpx; 111 | width: 264px; 112 | height: 100px; 113 | } 114 | 115 | .guide .flat-image { 116 | height: 100px; 117 | } 118 | 119 | .guide .code-image { 120 | max-width: 100%; 121 | } 122 | 123 | .guide .copyBtn { 124 | width: 180rpx; 125 | font-size: 20rpx; 126 | margin-top: 16rpx; 127 | margin-left: 0; 128 | } 129 | 130 | .guide .nav { 131 | margin-top: 50rpx; 132 | display: flex; 133 | flex-direction: row; 134 | align-content: space-between; 135 | } 136 | 137 | .guide .nav .prev { 138 | margin-left: unset; 139 | } 140 | 141 | .guide .nav .next { 142 | margin-right: unset; 143 | } 144 | 145 | -------------------------------------------------------------------------------- /miniprogram/pages/my/my/my.wxss: -------------------------------------------------------------------------------- 1 | /* miniprogram/pages/my/my.wxss */ 2 | .container{ 3 | width: 100%; 4 | } 5 | .header { 6 | height: 300rpx; 7 | } 8 | .login>button{ 9 | background: red; 10 | color: white; 11 | font-weight: bold; 12 | height: 180rpx; 13 | width: 180rpx; 14 | text-align: center; 15 | line-height: 180rpx; 16 | padding: 0; 17 | border-radius: 50%; 18 | margin-top: 60rpx; 19 | } 20 | .top { 21 | width: 96%; 22 | margin: 25rpx auto; 23 | display: flex; 24 | justify-content: space-between; 25 | align-items: center; 26 | } 27 | .top .avatar { 28 | width: 120rpx; 29 | height: 120rpx; 30 | border-radius: 50%; 31 | } 32 | .top .name{ 33 | flex: 1; 34 | margin-left: 10rpx; 35 | } 36 | .name .nickname { 37 | margin-bottom: 10rpx; 38 | } 39 | .name button { 40 | height: 45rpx; 41 | width: 130rpx; 42 | font-size: 22rpx; 43 | margin: 0; 44 | padding: 0; 45 | text-align: center; 46 | line-height: 45rpx; 47 | color: white; 48 | background-color: #EE2D1B; 49 | border-top-left-radius:80rpx; 50 | border-top-right-radius:80rpx; 51 | border-bottom-left-radius:80rpx; 52 | border-bottom-right-radius:80rpx; 53 | bottom: 0; 54 | } 55 | .top .icon{ 56 | width: 50rpx; 57 | height: 42rpx; 58 | } 59 | .bottom { 60 | display: flex; 61 | justify-content: space-around; 62 | align-items: center; 63 | } 64 | .bottom .num{ 65 | text-align: center; 66 | font-size: 40rpx; 67 | font-weight: bold; 68 | } 69 | .bottom .text{ 70 | font-size: 26rpx; 71 | text-align: center; 72 | } 73 | .footer, .box{ 74 | width: 100%; 75 | } 76 | .box { 77 | border-bottom: 10rpx solid rgb(219, 213, 213); 78 | } 79 | .items .item{ 80 | width: 96%; 81 | margin-left: 30rpx; 82 | height: 80rpx; 83 | line-height: 80rpx; 84 | display: flex; 85 | justify-content: space-between; 86 | align-items: center; 87 | } 88 | .items .border{ 89 | border-bottom: 1rpx solid rgb(219, 213, 213); 90 | } 91 | .items .text{ 92 | font-size: 40rxp 93 | } 94 | .right{ 95 | display: flex; 96 | justify-content: center; 97 | align-items: center; 98 | height: 100%; 99 | } 100 | .right .txt{ 101 | color: rgb(168, 161, 161); 102 | font-size: 32rpx; 103 | 104 | } 105 | .item image{ 106 | width: 50rpx; 107 | height: 42rpx; 108 | vertical-align: middle; 109 | } 110 | 111 | .tabbar { 112 | display: flex; 113 | justify-content: center; 114 | align-items: center; 115 | height: 160rpx; 116 | } 117 | .tabbar__item { 118 | position: relative; 119 | width: 25%; 120 | height: 70%; 121 | display: flex; 122 | flex-direction: column; 123 | justify-content: space-between; 124 | align-items: center; 125 | font-size: 30rpx; 126 | text-align: center; 127 | } 128 | .tabbar__item image { 129 | vertical-align: middle; 130 | } 131 | .tabbar__item-1 image{ 132 | width: 60rpx; 133 | height: 60rpx; 134 | } 135 | .tabbar__item-2 image { 136 | width: 55rpx; 137 | height: 55rpx; 138 | } 139 | .tabbar__item-3 image { 140 | position: absolute; 141 | width: 80rpx; 142 | height: 80rpx; 143 | top: -18rpx; 144 | } 145 | .tabbar__item-3 .text{ 146 | position: absolute; 147 | bottom: 0; 148 | } 149 | .tabbar__item-4 image { 150 | width: 55rpx; 151 | height: 55rpx; 152 | } -------------------------------------------------------------------------------- /miniprogram/pages/index/index/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 11 | 热搜 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | {{topAuthor}} 30 | 评论{{topComment}} 31 | {{topDate}} 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 我的频道 68 | 69 | 编辑 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | -------------------------------------------------------------------------------- /miniprogram/pages/my/my/my.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 41 | 42 | 43 | 44 | 45 | 46 | 我的收藏 47 | 48 | 49 | 50 | 我的评论 51 | 52 | 53 | 54 | 我的点赞 55 | 56 | 57 | 58 | 浏览历史 59 | 60 | 61 | 62 | 63 | 64 | 消息通知 65 | 66 | 67 | 68 | 私信 69 | 70 | 71 | 72 | 阅读公益 73 | 74 | 今日阅读80分钟 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 我的书架 83 | 84 | 85 | 86 | 我的钱包 87 | 88 | 手机设置 89 | 90 | 91 | 92 | 93 | 京东特供 94 | 95 | 年终购物狂欢节 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 用户反馈 104 | 105 | 106 | 107 | 系统设置 108 | 109 | 110 | 111 | -------------------------------------------------------------------------------- /miniprogram/wxParse/wxParse.wxss: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * author: Di (微信小程序开发工程师) 4 | * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com) 5 | * 垂直微信小程序开发交流社区 6 | * 7 | * github地址: https://github.com/icindy/wxParse 8 | * 9 | * for: 微信小程序富文本解析 10 | * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184 11 | */ 12 | 13 | .wxParse{ 14 | margin: 0 5px; 15 | font-family: Helvetica,sans-serif; 16 | font-size: 28rpx; 17 | color: #666; 18 | line-height: 1.8; 19 | } 20 | view{ 21 | word-break:break-all; overflow:auto; 22 | } 23 | .wxParse-inline{ 24 | display: inline; 25 | margin: 0; 26 | padding: 0; 27 | } 28 | /*//标题 */ 29 | .wxParse-div{margin: 0;padding: 0;} 30 | .wxParse-h1{ font-size:2em; margin: .67em 0 } 31 | .wxParse-h2{ font-size:1.5em; margin: .75em 0 } 32 | .wxParse-h3{ font-size:1.17em; margin: .83em 0 } 33 | .wxParse-h4{ margin: 1.12em 0} 34 | .wxParse-h5 { font-size:.83em; margin: 1.5em 0 } 35 | .wxParse-h6{ font-size:.75em; margin: 1.67em 0 } 36 | 37 | .wxParse-h1 { 38 | font-size: 18px; 39 | font-weight: 400; 40 | margin-bottom: .9em; 41 | } 42 | .wxParse-h2 { 43 | font-size: 16px; 44 | font-weight: 400; 45 | margin-bottom: .34em; 46 | } 47 | .wxParse-h3 { 48 | font-weight: 400; 49 | font-size: 15px; 50 | margin-bottom: .34em; 51 | } 52 | .wxParse-h4 { 53 | font-weight: 400; 54 | font-size: 14px; 55 | margin-bottom: .24em; 56 | } 57 | .wxParse-h5 { 58 | font-weight: 400; 59 | font-size: 13px; 60 | margin-bottom: .14em; 61 | } 62 | .wxParse-h6 { 63 | font-weight: 400; 64 | font-size: 12px; 65 | margin-bottom: .04em; 66 | } 67 | 68 | .wxParse-h1, .wxParse-h2, .wxParse-h3, .wxParse-h4, .wxParse-h5, .wxParse-h6, .wxParse-b, .wxParse-strong { font-weight: bolder } 69 | 70 | .wxParse-i,.wxParse-cite,.wxParse-em,.wxParse-var,.wxParse-address{font-style:italic} 71 | .wxParse-pre,.wxParse-tt,.wxParse-code,.wxParse-kbd,.wxParse-samp{font-family:monospace} 72 | .wxParse-pre{white-space:pre} 73 | .wxParse-big{font-size:1.17em} 74 | .wxParse-small,.wxParse-sub,.wxParse-sup{font-size:.83em} 75 | .wxParse-sub{vertical-align:sub} 76 | .wxParse-sup{vertical-align:super} 77 | .wxParse-s,.wxParse-strike,.wxParse-del{text-decoration:line-through} 78 | /*wxparse-自定义个性化的css样式*/ 79 | /*增加video的css样式*/ 80 | .wxParse-strong,.wxParse-s{display: inline} 81 | .wxParse-a{ 82 | color: deepskyblue; 83 | word-break:break-all; 84 | overflow:auto; 85 | } 86 | 87 | .wxParse-video{ 88 | text-align: center; 89 | margin: 10px 0; 90 | } 91 | 92 | .wxParse-video-video{ 93 | width:100%; 94 | } 95 | 96 | .wxParse-img{ 97 | /*background-color: #efefef;*/ 98 | overflow: hidden; 99 | } 100 | 101 | .wxParse-blockquote { 102 | margin: 0; 103 | padding:10px 0 10px 5px; 104 | font-family:Courier, Calibri,"宋体"; 105 | background:#f5f5f5; 106 | border-left: 3px solid #dbdbdb; 107 | } 108 | 109 | .wxParse-code,.wxParse-wxxxcode-style{ 110 | display: inline; 111 | background:#f5f5f5; 112 | } 113 | .wxParse-ul{ 114 | margin: 20rpx 10rpx; 115 | } 116 | 117 | .wxParse-li,.wxParse-li-inner{ 118 | display: flex; 119 | align-items: baseline; 120 | margin: 10rpx 0; 121 | } 122 | .wxParse-li-text{ 123 | 124 | align-items: center; 125 | line-height: 20px; 126 | } 127 | 128 | .wxParse-li-circle{ 129 | display: inline-flex; 130 | width: 5px; 131 | height: 5px; 132 | background-color: #333; 133 | margin-right: 5px; 134 | } 135 | 136 | .wxParse-li-square{ 137 | display: inline-flex; 138 | width: 10rpx; 139 | height: 10rpx; 140 | background-color: #333; 141 | margin-right: 5px; 142 | } 143 | .wxParse-li-ring{ 144 | display: inline-flex; 145 | width: 10rpx; 146 | height: 10rpx; 147 | border: 2rpx solid #333; 148 | border-radius: 50%; 149 | background-color: #fff; 150 | margin-right: 5px; 151 | } 152 | 153 | /*.wxParse-table{ 154 | width: 100%; 155 | height: 400px; 156 | } 157 | .wxParse-thead,.wxParse-tfoot,.wxParse-tr{ 158 | display: flex; 159 | flex-direction: row; 160 | } 161 | .wxParse-th,.wxParse-td{ 162 | display: flex; 163 | width: 580px; 164 | overflow: auto; 165 | }*/ 166 | 167 | .wxParse-u { 168 | text-decoration: underline; 169 | } 170 | .wxParse-hide{ 171 | display: none; 172 | } 173 | .WxEmojiView{ 174 | align-items: center; 175 | } 176 | .wxEmoji{ 177 | width: 16px; 178 | height:16px; 179 | } 180 | .wxParse-tr{ 181 | display: flex; 182 | border-right:1px solid #e0e0e0; 183 | border-bottom:1px solid #e0e0e0; 184 | border-top:1px solid #e0e0e0; 185 | } 186 | .wxParse-th, 187 | .wxParse-td{ 188 | flex:1; 189 | padding:5px; 190 | font-size:28rpx; 191 | border-left:1px solid #e0e0e0; 192 | word-break: break-all; 193 | } 194 | .wxParse-td:last{ 195 | border-top:1px solid #e0e0e0; 196 | } 197 | .wxParse-th{ 198 | background:#f0f0f0; 199 | border-top:1px solid #e0e0e0; 200 | } 201 | .wxParse-del{ 202 | display: inline; 203 | } 204 | .wxParse-figure { 205 | overflow: hidden; 206 | } 207 | -------------------------------------------------------------------------------- /miniprogram/wxParse/wxParse.js: -------------------------------------------------------------------------------- 1 | /** 2 | * author: Di (微信小程序开发工程师) 3 | * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com) 4 | * 垂直微信小程序开发交流社区 5 | * 6 | * github地址: https://github.com/icindy/wxParse 7 | * 8 | * for: 微信小程序富文本解析 9 | * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184 10 | */ 11 | 12 | /** 13 | * utils函数引入 14 | **/ 15 | import showdown from './showdown.js'; 16 | import HtmlToJson from './html2json.js'; 17 | /** 18 | * 配置及公有属性 19 | **/ 20 | var realWindowWidth = 0; 21 | var realWindowHeight = 0; 22 | wx.getSystemInfo({ 23 | success: function (res) { 24 | realWindowWidth = res.windowWidth 25 | realWindowHeight = res.windowHeight 26 | } 27 | }) 28 | /** 29 | * 主函数入口区 30 | **/ 31 | function wxParse(bindName = 'wxParseData', type='html', data='
数据不能为空
', target,imagePadding) { 32 | var that = target; 33 | var transData = {};//存放转化后的数据 34 | if (type == 'html') { 35 | transData = HtmlToJson.html2json(data, bindName); 36 | console.log(JSON.stringify(transData, ' ', ' ')); 37 | } else if (type == 'md' || type == 'markdown') { 38 | var converter = new showdown.Converter(); 39 | var html = converter.makeHtml(data); 40 | transData = HtmlToJson.html2json(html, bindName); 41 | console.log(JSON.stringify(transData, ' ', ' ')); 42 | } 43 | transData.view = {}; 44 | transData.view.imagePadding = 0; 45 | if(typeof(imagePadding) != 'undefined'){ 46 | transData.view.imagePadding = imagePadding 47 | } 48 | var bindData = {}; 49 | bindData[bindName] = transData; 50 | that.setData(bindData) 51 | that.wxParseImgLoad = wxParseImgLoad; 52 | that.wxParseImgTap = wxParseImgTap; 53 | } 54 | // 图片点击事件 55 | function wxParseImgTap(e) { 56 | var that = this; 57 | var nowImgUrl = e.target.dataset.src; 58 | var tagFrom = e.target.dataset.from; 59 | if (typeof (tagFrom) != 'undefined' && tagFrom.length > 0) { 60 | wx.previewImage({ 61 | current: nowImgUrl, // 当前显示图片的http链接 62 | urls: that.data[tagFrom].imageUrls // 需要预览的图片http链接列表 63 | }) 64 | } 65 | } 66 | 67 | /** 68 | * 图片视觉宽高计算函数区 69 | **/ 70 | function wxParseImgLoad(e) { 71 | var that = this; 72 | var tagFrom = e.target.dataset.from; 73 | var idx = e.target.dataset.idx; 74 | if (typeof (tagFrom) != 'undefined' && tagFrom.length > 0) { 75 | calMoreImageInfo(e, idx, that, tagFrom) 76 | } 77 | } 78 | // 假循环获取计算图片视觉最佳宽高 79 | function calMoreImageInfo(e, idx, that, bindName) { 80 | var temData = that.data[bindName]; 81 | if (!temData || temData.images.length == 0) { 82 | return; 83 | } 84 | var temImages = temData.images; 85 | //因为无法获取view宽度 需要自定义padding进行计算,稍后处理 86 | var recal = wxAutoImageCal(e.detail.width, e.detail.height,that,bindName); 87 | // temImages[idx].width = recal.imageWidth; 88 | // temImages[idx].height = recal.imageheight; 89 | // temData.images = temImages; 90 | // var bindData = {}; 91 | // bindData[bindName] = temData; 92 | // that.setData(bindData); 93 | var index = temImages[idx].index 94 | var key = `${bindName}` 95 | for (var i of index.split('.')) key+=`.nodes[${i}]` 96 | var keyW = key + '.width' 97 | var keyH = key + '.height' 98 | that.setData({ 99 | [keyW]: recal.imageWidth, 100 | [keyH]: recal.imageheight, 101 | }) 102 | } 103 | 104 | // 计算视觉优先的图片宽高 105 | function wxAutoImageCal(originalWidth, originalHeight,that,bindName) { 106 | //获取图片的原始长宽 107 | var windowWidth = 0, windowHeight = 0; 108 | var autoWidth = 0, autoHeight = 0; 109 | var results = {}; 110 | var padding = that.data[bindName].view.imagePadding; 111 | windowWidth = realWindowWidth-2*padding; 112 | windowHeight = realWindowHeight; 113 | //判断按照那种方式进行缩放 114 | // console.log("windowWidth" + windowWidth); 115 | if (originalWidth > windowWidth) {//在图片width大于手机屏幕width时候 116 | autoWidth = windowWidth; 117 | // console.log("autoWidth" + autoWidth); 118 | autoHeight = (autoWidth * originalHeight) / originalWidth; 119 | // console.log("autoHeight" + autoHeight); 120 | results.imageWidth = autoWidth; 121 | results.imageheight = autoHeight; 122 | } else {//否则展示原来的数据 123 | results.imageWidth = originalWidth; 124 | results.imageheight = originalHeight; 125 | } 126 | return results; 127 | } 128 | 129 | function wxParseTemArray(temArrayName,bindNameReg,total,that){ 130 | var array = []; 131 | var temData = that.data; 132 | var obj = null; 133 | for(var i = 0; i < total; i++){ 134 | var simArr = temData[bindNameReg+i].nodes; 135 | array.push(simArr); 136 | } 137 | 138 | temArrayName = temArrayName || 'wxParseTemArray'; 139 | obj = JSON.parse('{"'+ temArrayName +'":""}'); 140 | obj[temArrayName] = array; 141 | that.setData(obj); 142 | } 143 | 144 | /** 145 | * 配置emojis 146 | * 147 | */ 148 | 149 | function emojisInit(reg='',baseSrc="/wxParse/emojis/",emojis){ 150 | HtmlToJson.emojisInit(reg,baseSrc,emojis); 151 | } 152 | 153 | module.exports = { 154 | wxParse: wxParse, 155 | wxParseTemArray:wxParseTemArray, 156 | emojisInit:emojisInit 157 | } 158 | 159 | 160 | -------------------------------------------------------------------------------- /miniprogram/wxParse/htmlparser.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * htmlParser改造自: https://github.com/blowsie/Pure-JavaScript-HTML5-Parser 4 | * 5 | * author: Di (微信小程序开发工程师) 6 | * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com) 7 | * 垂直微信小程序开发交流社区 8 | * 9 | * github地址: https://github.com/icindy/wxParse 10 | * 11 | * for: 微信小程序富文本解析 12 | * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184 13 | */ 14 | // Regular Expressions for parsing tags and attributes 15 | var startTag = /^<([-A-Za-z0-9_]+)((?:\s+[a-zA-Z_:][-a-zA-Z0-9_:.]*(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/, 16 | endTag = /^<\/([-A-Za-z0-9_]+)[^>]*>/, 17 | attr = /([a-zA-Z_:][-a-zA-Z0-9_:.]*)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|([^>\s]+)))?/g; 18 | 19 | // Empty Elements - HTML 5 20 | var empty = makeMap("area,base,basefont,br,col,frame,hr,img,input,link,meta,param,embed,command,keygen,source,track,wbr"); 21 | 22 | // Block Elements - HTML 5 23 | var 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"); 24 | 25 | // Inline Elements - HTML 5 26 | var 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"); 27 | 28 | // Elements that you can, intentionally, leave open 29 | // (and which close themselves) 30 | var closeSelf = makeMap("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr"); 31 | 32 | // Attributes that have their values filled in disabled="disabled" 33 | var fillAttrs = makeMap("checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected"); 34 | 35 | // Special Elements (can contain anything) 36 | var special = makeMap("wxxxcode-style,script,style,view,scroll-view,block"); 37 | 38 | function HTMLParser(html, handler) { 39 | var index, chars, match, stack = [], last = html; 40 | stack.last = function () { 41 | return this[this.length - 1]; 42 | }; 43 | 44 | while (html) { 45 | chars = true; 46 | 47 | // Make sure we're not in a script or style element 48 | if (!stack.last() || !special[stack.last()]) { 49 | 50 | // Comment 51 | if (html.indexOf(""); 53 | 54 | if (index >= 0) { 55 | if (handler.comment) 56 | handler.comment(html.substring(4, index)); 57 | html = html.substring(index + 3); 58 | chars = false; 59 | } 60 | 61 | // end tag 62 | } else if (html.indexOf("]*>"), function (all, text) { 100 | text = text.replace(/|/g, "$1$2"); 101 | if (handler.chars) 102 | handler.chars(text); 103 | 104 | return ""; 105 | }); 106 | 107 | 108 | parseEndTag("", stack.last()); 109 | } 110 | 111 | if (html == last) 112 | throw "Parse Error: " + html; 113 | last = html; 114 | } 115 | 116 | // Clean up any remaining tags 117 | parseEndTag(); 118 | 119 | function parseStartTag(tag, tagName, rest, unary) { 120 | tagName = tagName.toLowerCase(); 121 | 122 | if (block[tagName]) { 123 | while (stack.last() && inline[stack.last()]) { 124 | parseEndTag("", stack.last()); 125 | } 126 | } 127 | 128 | if (closeSelf[tagName] && stack.last() == tagName) { 129 | parseEndTag("", tagName); 130 | } 131 | 132 | unary = empty[tagName] || !!unary; 133 | 134 | if (!unary) 135 | stack.push(tagName); 136 | 137 | if (handler.start) { 138 | var attrs = []; 139 | 140 | rest.replace(attr, function (match, name) { 141 | var value = arguments[2] ? arguments[2] : 142 | arguments[3] ? arguments[3] : 143 | arguments[4] ? arguments[4] : 144 | fillAttrs[name] ? name : ""; 145 | 146 | attrs.push({ 147 | name: name, 148 | value: value, 149 | escaped: value.replace(/(^|[^\\])"/g, '$1\\\"') //" 150 | }); 151 | }); 152 | 153 | if (handler.start) { 154 | handler.start(tagName, attrs, unary); 155 | } 156 | 157 | } 158 | } 159 | 160 | function parseEndTag(tag, tagName) { 161 | // If no tag name is provided, clean shop 162 | if (!tagName) 163 | var pos = 0; 164 | 165 | // Find the closest opened tag of the same type 166 | else { 167 | tagName = tagName.toLowerCase(); 168 | for (var pos = stack.length - 1; pos >= 0; pos--) 169 | if (stack[pos] == tagName) 170 | break; 171 | } 172 | if (pos >= 0) { 173 | // Close all the open elements, up the stack 174 | for (var i = stack.length - 1; i >= pos; i--) 175 | if (handler.end) 176 | handler.end(stack[i]); 177 | 178 | // Remove the open elements from the stack 179 | stack.length = pos; 180 | } 181 | } 182 | }; 183 | 184 | 185 | function makeMap(str) { 186 | var obj = {}, items = str.split(","); 187 | for (var i = 0; i < items.length; i++) 188 | obj[items[i]] = true; 189 | return obj; 190 | } 191 | 192 | module.exports = HTMLParser; 193 | -------------------------------------------------------------------------------- /miniprogram/pages/index/detail/detail.wxss: -------------------------------------------------------------------------------- 1 | /* miniprogram/pages/index/detail/detail.wxss */ 2 | .body{ 3 | margin: 0 20rpx; 4 | } 5 | .detail-scroll { 6 | height: 100%; 7 | } 8 | .title { 9 | font-size: 55rpx; 10 | } 11 | .header{ 12 | display: flex; 13 | height: 200rpx; 14 | /* justify-content: center; */ 15 | align-items: center; 16 | /* background: black; */ 17 | } 18 | .header image{ 19 | width: 80rpx; 20 | height: 80rpx; 21 | border-radius: 40rpx; 22 | /* background-color: red; */ 23 | } 24 | .header .nickname{ 25 | flex: 1; 26 | font-weight: bold; 27 | font-size: 36rpx; 28 | } 29 | .header .btn{ 30 | padding: 0; 31 | width: 110rpx; 32 | height: 67rpx; 33 | font-size: 28rpx; 34 | line-height: 67rpx; 35 | text-align: center; 36 | color: white; 37 | background: #fa2323; 38 | } 39 | .header .btn1{ 40 | padding: 0; 41 | width: 110rpx; 42 | height: 67rpx; 43 | font-size: 28rpx; 44 | line-height: 67rpx; 45 | text-align: center; 46 | color: rgb(179, 177, 177); 47 | border: 0.1rpx solid rgb(209, 206, 206); 48 | background: rgb(252, 252, 252); 49 | } 50 | 51 | /* .content{ 52 | margin-bottom: 20rpx; 53 | } */ 54 | .content image{ 55 | width: 100%; 56 | } 57 | .footer{ 58 | display: flex; 59 | justify-content: space-around; 60 | align-items: center; 61 | height: 180rpx; 62 | border-top: 1rpx solid rgb(199, 193, 193); 63 | margin-top: 40rpx; 64 | /* background: red; */ 65 | } 66 | .footer .button{ 67 | font-size: 25rpx; 68 | height: 70rpx; 69 | width: 160rpx; 70 | line-height: 70rpx; 71 | text-align: center; 72 | display: flex; 73 | justify-content: center; 74 | align-items: center; 75 | border: 1rpx solid gray; 76 | /* background: #fa2323; */ 77 | border-top-left-radius:80rpx; 78 | border-top-right-radius:80rpx; 79 | border-bottom-left-radius:80rpx; 80 | border-bottom-right-radius:80rpx; 81 | } 82 | .footer .icon{ 83 | width: 50rpx; 84 | height: 50rpx; 85 | } 86 | .like .icon1{ 87 | width: 70rpx; 88 | height: 70rpx; 89 | } 90 | .comment{ 91 | display: flex; 92 | margin-bottom: 40rpx; 93 | } 94 | .comment>image{ 95 | width: 80rpx; 96 | height: 80rpx; 97 | border-radius: 40rpx; 98 | /* background: red; */ 99 | } 100 | .comment .center{ 101 | margin: 0 10rpx; 102 | } 103 | .comment .center{ 104 | display: flex; 105 | flex-direction: column; 106 | justify-items: center; 107 | } 108 | .comment .like{ 109 | height: 100%; 110 | width: 150rpx; 111 | /* background: red; */ 112 | display: flex; 113 | justify-content: center; 114 | align-items: center; 115 | padding: 0; 116 | } 117 | .comment .cont{ 118 | text-align: center; 119 | } 120 | .comment .like .dz{ 121 | width: 50rpx; 122 | height: 50rpx; 123 | } 124 | .comment .center{ 125 | flex: 1; 126 | } 127 | .center image{ 128 | width: 100rpx; 129 | height: 100rpx; 130 | } 131 | .block{ 132 | width: 100%; 133 | height: 240rpx; 134 | } 135 | .bottom{ 136 | width: 100%; 137 | height: 100rpx; 138 | border-top: 1rpx solid rgb(189, 189, 189); 139 | position: fixed; 140 | bottom: 0; 141 | display: flex; 142 | justify-content: space-between; 143 | align-items: center; 144 | background: white; 145 | } 146 | 147 | .input{ 148 | width: 55%; 149 | height: 70%; 150 | /* flex: 1; */ 151 | margin-left: 20rpx; 152 | display: flex; 153 | /* justify-content: space-between; */ 154 | align-items: center; 155 | /* border-radius: 20%; */ 156 | background: rgb(236, 232, 232); 157 | border-top-left-radius:80rpx; 158 | border-top-right-radius:80rpx; 159 | border-bottom-left-radius:80rpx; 160 | border-bottom-right-radius:80rpx; 161 | } 162 | .input input{ 163 | width: 70%; 164 | } 165 | .icon { 166 | margin: 0 15rpx; 167 | } 168 | 169 | .write{ 170 | width: 55rpx; 171 | height: 55rpx; 172 | margin-left: 25rpx; 173 | left: 20rpx; 174 | } 175 | .emoji{ 176 | width: 56rpx; 177 | height: 56rpx; 178 | margin-right: 25rpx; 179 | } 180 | .chat{ 181 | width: 80rpx; 182 | height: 80rpx; 183 | } 184 | .collect{ 185 | width: 70rpx; 186 | height: 70rpx; 187 | } 188 | .share{ 189 | width: 50rpx; 190 | height: 50rpx; 191 | margin-right: 20rpx; 192 | } 193 | .forward, .cancle{ 194 | background: white; 195 | margin: 0 15rpx 15rpx 15rpx; 196 | border-radius: 20rpx; 197 | } 198 | .cancle{ 199 | background: white; 200 | } 201 | .forward{ 202 | display: flex; 203 | justify-content: center; 204 | align-items: center; 205 | height: 300rpx; 206 | width: 96.5%; 207 | font-size: 30rpx; 208 | } 209 | .forward .item{ 210 | height: 60%; 211 | width: 25%; 212 | display: flex; 213 | flex-direction: column; 214 | align-items: center; 215 | justify-content: center; 216 | } 217 | .forward .item image{ 218 | width: 80rpx; 219 | height: 80rpx; 220 | } 221 | .cancle{ 222 | height: 100rpx; 223 | text-align: center; 224 | line-height: 100rpx; 225 | font-size: 45rpx; 226 | } 227 | .forward button{ 228 | background-color: #fff; 229 | font-size: 30rpx; 230 | border: none; 231 | padding: 0; 232 | margin: 0; 233 | /* line-height: 30rpx; */ 234 | } 235 | .forward button::after{ 236 | border: none; 237 | } 238 | .pop__top { 239 | display: flex; 240 | justify-content: center; 241 | align-items: center; 242 | border-top: 1rpx solid rgb(219, 215, 215); 243 | height: 100rpx; 244 | margin: 10rpx 20rpx; 245 | } 246 | 247 | .pop__input{ 248 | flex: 1; 249 | font-size: 35rpx; 250 | height: 70%; 251 | background: rgb(245, 234, 234); 252 | padding-left: 30rpx; 253 | border-top-left-radius: 45rpx; 254 | border-top-right-radius:45rpx; 255 | border-bottom-left-radius: 45rpx; 256 | border-bottom-right-radius: 45rpx; 257 | } 258 | .phClass{ 259 | left: 20rpx; 260 | } 261 | .pop__submit{ 262 | width: 15%; 263 | text-align: center; 264 | font-weight: bold; 265 | color: rgb(187, 177, 177); 266 | } 267 | .pop__bottom{ 268 | display: flex; 269 | justify-content: space-between; 270 | align-items: center; 271 | } 272 | .pop__bottom van-checkbox image{ 273 | width: 50rpx; 274 | height: 50rpx; 275 | } 276 | .pop__bottom{ 277 | font-size: 30rpx; 278 | vertical-align: middle; 279 | } 280 | .pop__bottom van-checkbox{ 281 | vertical-align:middle; 282 | margin: 10rpx; 283 | } 284 | .pop_icon{ 285 | width: 70%; 286 | display: flex; 287 | justify-content: space-around; 288 | align-items: center; 289 | margin: 10rpx; 290 | } 291 | .pop_icon image{ 292 | width: 60rpx; 293 | height: 60rpx; 294 | } 295 | -------------------------------------------------------------------------------- /miniprogram/wxParse/wxDiscode.js: -------------------------------------------------------------------------------- 1 | // HTML 支持的数学符号 2 | function strNumDiscode(str){ 3 | str = str.replace(/∀/g, '∀'); 4 | str = str.replace(/∂/g, '∂'); 5 | str = str.replace(/&exists;/g, '∃'); 6 | str = str.replace(/∅/g, '∅'); 7 | str = str.replace(/∇/g, '∇'); 8 | str = str.replace(/∈/g, '∈'); 9 | str = str.replace(/∉/g, '∉'); 10 | str = str.replace(/∋/g, '∋'); 11 | str = str.replace(/∏/g, '∏'); 12 | str = str.replace(/∑/g, '∑'); 13 | str = str.replace(/−/g, '−'); 14 | str = str.replace(/∗/g, '∗'); 15 | str = str.replace(/√/g, '√'); 16 | str = str.replace(/∝/g, '∝'); 17 | str = str.replace(/∞/g, '∞'); 18 | str = str.replace(/∠/g, '∠'); 19 | str = str.replace(/∧/g, '∧'); 20 | str = str.replace(/∨/g, '∨'); 21 | str = str.replace(/∩/g, '∩'); 22 | str = str.replace(/∩/g, '∪'); 23 | str = str.replace(/∫/g, '∫'); 24 | str = str.replace(/∴/g, '∴'); 25 | str = str.replace(/∼/g, '∼'); 26 | str = str.replace(/≅/g, '≅'); 27 | str = str.replace(/≈/g, '≈'); 28 | str = str.replace(/≠/g, '≠'); 29 | str = str.replace(/≤/g, '≤'); 30 | str = str.replace(/≥/g, '≥'); 31 | str = str.replace(/⊂/g, '⊂'); 32 | str = str.replace(/⊃/g, '⊃'); 33 | str = str.replace(/⊄/g, '⊄'); 34 | str = str.replace(/⊆/g, '⊆'); 35 | str = str.replace(/⊇/g, '⊇'); 36 | str = str.replace(/⊕/g, '⊕'); 37 | str = str.replace(/⊗/g, '⊗'); 38 | str = str.replace(/⊥/g, '⊥'); 39 | str = str.replace(/⋅/g, '⋅'); 40 | return str; 41 | } 42 | 43 | //HTML 支持的希腊字母 44 | function strGreeceDiscode(str){ 45 | str = str.replace(/Α/g, 'Α'); 46 | str = str.replace(/Β/g, 'Β'); 47 | str = str.replace(/Γ/g, 'Γ'); 48 | str = str.replace(/Δ/g, 'Δ'); 49 | str = str.replace(/Ε/g, 'Ε'); 50 | str = str.replace(/Ζ/g, 'Ζ'); 51 | str = str.replace(/Η/g, 'Η'); 52 | str = str.replace(/Θ/g, 'Θ'); 53 | str = str.replace(/Ι/g, 'Ι'); 54 | str = str.replace(/Κ/g, 'Κ'); 55 | str = str.replace(/Λ/g, 'Λ'); 56 | str = str.replace(/Μ/g, 'Μ'); 57 | str = str.replace(/Ν/g, 'Ν'); 58 | str = str.replace(/Ξ/g, 'Ν'); 59 | str = str.replace(/Ο/g, 'Ο'); 60 | str = str.replace(/Π/g, 'Π'); 61 | str = str.replace(/Ρ/g, 'Ρ'); 62 | str = str.replace(/Σ/g, 'Σ'); 63 | str = str.replace(/Τ/g, 'Τ'); 64 | str = str.replace(/Υ/g, 'Υ'); 65 | str = str.replace(/Φ/g, 'Φ'); 66 | str = str.replace(/Χ/g, 'Χ'); 67 | str = str.replace(/Ψ/g, 'Ψ'); 68 | str = str.replace(/Ω/g, 'Ω'); 69 | 70 | str = str.replace(/α/g, 'α'); 71 | str = str.replace(/β/g, 'β'); 72 | str = str.replace(/γ/g, 'γ'); 73 | str = str.replace(/δ/g, 'δ'); 74 | str = str.replace(/ε/g, 'ε'); 75 | str = str.replace(/ζ/g, 'ζ'); 76 | str = str.replace(/η/g, 'η'); 77 | str = str.replace(/θ/g, 'θ'); 78 | str = str.replace(/ι/g, 'ι'); 79 | str = str.replace(/κ/g, 'κ'); 80 | str = str.replace(/λ/g, 'λ'); 81 | str = str.replace(/μ/g, 'μ'); 82 | str = str.replace(/ν/g, 'ν'); 83 | str = str.replace(/ξ/g, 'ξ'); 84 | str = str.replace(/ο/g, 'ο'); 85 | str = str.replace(/π/g, 'π'); 86 | str = str.replace(/ρ/g, 'ρ'); 87 | str = str.replace(/ς/g, 'ς'); 88 | str = str.replace(/σ/g, 'σ'); 89 | str = str.replace(/τ/g, 'τ'); 90 | str = str.replace(/υ/g, 'υ'); 91 | str = str.replace(/φ/g, 'φ'); 92 | str = str.replace(/χ/g, 'χ'); 93 | str = str.replace(/ψ/g, 'ψ'); 94 | str = str.replace(/ω/g, 'ω'); 95 | str = str.replace(/ϑ/g, 'ϑ'); 96 | str = str.replace(/ϒ/g, 'ϒ'); 97 | str = str.replace(/ϖ/g, 'ϖ'); 98 | str = str.replace(/·/g, '·'); 99 | return str; 100 | } 101 | 102 | // 103 | 104 | function strcharacterDiscode(str){ 105 | // 加入常用解析 106 | str = str.replace(/ /g, ' '); 107 | str = str.replace(/"/g, "'"); 108 | str = str.replace(/&/g, '&'); 109 | // str = str.replace(/</g, '‹'); 110 | // str = str.replace(/>/g, '›'); 111 | 112 | str = str.replace(/</g, '<'); 113 | str = str.replace(/>/g, '>'); 114 | str = str.replace(/•/g, '•'); 115 | 116 | return str; 117 | } 118 | 119 | // HTML 支持的其他实体 120 | function strOtherDiscode(str){ 121 | str = str.replace(/Œ/g, 'Œ'); 122 | str = str.replace(/œ/g, 'œ'); 123 | str = str.replace(/Š/g, 'Š'); 124 | str = str.replace(/š/g, 'š'); 125 | str = str.replace(/Ÿ/g, 'Ÿ'); 126 | str = str.replace(/ƒ/g, 'ƒ'); 127 | str = str.replace(/ˆ/g, 'ˆ'); 128 | str = str.replace(/˜/g, '˜'); 129 | str = str.replace(/ /g, ''); 130 | str = str.replace(/ /g, ''); 131 | str = str.replace(/ /g, ''); 132 | str = str.replace(/‌/g, ''); 133 | str = str.replace(/‍/g, ''); 134 | str = str.replace(/‎/g, ''); 135 | str = str.replace(/‏/g, ''); 136 | str = str.replace(/–/g, '–'); 137 | str = str.replace(/—/g, '—'); 138 | str = str.replace(/‘/g, '‘'); 139 | str = str.replace(/’/g, '’'); 140 | str = str.replace(/‚/g, '‚'); 141 | str = str.replace(/“/g, '“'); 142 | str = str.replace(/”/g, '”'); 143 | str = str.replace(/„/g, '„'); 144 | str = str.replace(/†/g, '†'); 145 | str = str.replace(/‡/g, '‡'); 146 | str = str.replace(/•/g, '•'); 147 | str = str.replace(/…/g, '…'); 148 | str = str.replace(/‰/g, '‰'); 149 | str = str.replace(/′/g, '′'); 150 | str = str.replace(/″/g, '″'); 151 | str = str.replace(/‹/g, '‹'); 152 | str = str.replace(/›/g, '›'); 153 | str = str.replace(/‾/g, '‾'); 154 | str = str.replace(/€/g, '€'); 155 | str = str.replace(/™/g, '™'); 156 | 157 | str = str.replace(/←/g, '←'); 158 | str = str.replace(/↑/g, '↑'); 159 | str = str.replace(/→/g, '→'); 160 | str = str.replace(/↓/g, '↓'); 161 | str = str.replace(/↔/g, '↔'); 162 | str = str.replace(/↵/g, '↵'); 163 | str = str.replace(/⌈/g, '⌈'); 164 | str = str.replace(/⌉/g, '⌉'); 165 | 166 | str = str.replace(/⌊/g, '⌊'); 167 | str = str.replace(/⌋/g, '⌋'); 168 | str = str.replace(/◊/g, '◊'); 169 | str = str.replace(/♠/g, '♠'); 170 | str = str.replace(/♣/g, '♣'); 171 | str = str.replace(/♥/g, '♥'); 172 | 173 | str = str.replace(/♦/g, '♦'); 174 | str = str.replace(/'/g, '\''); 175 | return str; 176 | } 177 | 178 | function strMoreDiscode(str){ 179 | str = str.replace(/\r\n/g,""); 180 | str = str.replace(/\n/g,""); 181 | 182 | str = str.replace(/code/g,"wxxxcode-style"); 183 | return str; 184 | } 185 | 186 | function strDiscode(str){ 187 | str = strNumDiscode(str); 188 | str = strGreeceDiscode(str); 189 | str = strcharacterDiscode(str); 190 | str = strOtherDiscode(str); 191 | str = strMoreDiscode(str); 192 | return str; 193 | } 194 | function urlToHttpUrl(url,rep){ 195 | 196 | var patt1 = new RegExp("^//"); 197 | var result = patt1.test(url); 198 | if(result){ 199 | url = rep+":"+url; 200 | } 201 | return url; 202 | } 203 | 204 | module.exports = { 205 | strDiscode:strDiscode, 206 | urlToHttpUrl:urlToHttpUrl 207 | } -------------------------------------------------------------------------------- /miniprogram/pages/index/detail/detail.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | 10 | 11 | 12 | {{detail.title}} 13 | 14 | 15 | 16 | 17 | {{detail.author}} 18 | 19 | 20 | 23 | 26 | 27 | 28 | 29 | {{detail.content}} 30 | 31 | 32 | 33 | 34 | 39 | 40 | 41 | 不喜欢 42 | 43 | 44 | 45 | 微信 46 | 47 | 48 | 49 | 朋友圈 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 72 | 73 | 74 | 75 | 76 | 77 | coding 78 | {{comm.content}} 79 | 80 | 1小时前 81 | 82 | 83 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 120 | 121 | 128 | 129 | 139 | 发布 140 | 141 | 142 | 146 | 同时转发 147 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 171 | 172 | 176 | 180 | 184 | 188 | 189 | 取消 190 | -------------------------------------------------------------------------------- /miniprogram/pages/index/index/index.js: -------------------------------------------------------------------------------- 1 | // miniprogram/pages/my/my.js 2 | wx.cloud.init(); 3 | const db = wx.cloud.database() 4 | Page({ 5 | 6 | /** 7 | * 页面的初始数据 8 | */ 9 | data: { 10 | hidden: false, 11 | hiddenLoading: false, 12 | hasMore: true, 13 | cnews: [], 14 | counter: 1, 15 | news: [], 16 | count: 1, 17 | news1: [], 18 | count1: 1, 19 | show: false, 20 | active1: '', 21 | active2: '', 22 | focus: false, 23 | placeholder: '请输入想要搜索的内容', 24 | num: 0, 25 | datas: {}, 26 | title: 'news', 27 | num: 1, 28 | }, 29 | /** 30 | * 从数据库获取每次要求获取的数据并保存到data.news中 31 | */ 32 | 33 | imgCheck: function(images, new_id, title) { // 检查图片是否和合法 34 | // console.log(images) 35 | wx.cloud.callFunction({ 36 | name: 'imgCheck', 37 | data: { 38 | images 39 | } 40 | }).then(res => { 41 | // console.log(res); 42 | // console.log(JSON.parse(res.result.body)) 43 | let result = JSON.parse(res.result.body); 44 | let results = result.result_list; 45 | // console.log(results.result_list) 46 | // console.log(results) 47 | if(results){ 48 | for(res of results) { 49 | if(res.data.result == 1){ 50 | // console('is porn image'); 51 | db.collection(title).doc({ 52 | new_id: new_id 53 | }).remove({ 54 | success: function(res) { 55 | wx.showToast({ 56 | title: '由于文章内含有非法信息已被删除!' 57 | }) 58 | } 59 | }) 60 | } 61 | } 62 | } 63 | }) 64 | }, 65 | module: function(title) { 66 | let counter = this.data.counter 67 | // console.log(title) 68 | wx.cloud.callFunction({ 69 | name: 'module', 70 | data: { 71 | counter: counter, 72 | title: title 73 | } 74 | }).then(res => { 75 | // console.log(res) 76 | let cnews = this.data.cnews 77 | let data = res.result.data 78 | // console.log(data) 79 | for(let i = 0; i < data.length; i++) { 80 | // console.log(data[i].date) 81 | data[i].date = data[i].date.slice(0, 10) 82 | cnews.push(data[i]) 83 | this.imgCheck(data[i].images, data.new_id, title) 84 | } 85 | // console.log(data) 86 | this.setData({ 87 | hiddenLoading: true, 88 | cnews: cnews, 89 | counter: counter+1 90 | }) 91 | }) 92 | }, 93 | onChange(event) { // 获取tab改变事件来使获取不同主题的新闻 94 | console.log(event) 95 | // console.log(this.data.active.one); 96 | 97 | let index = event.detail.index; 98 | let title = event.detail.title; 99 | // let active1 = this.data.active1; 100 | let cnews = this.data.cnews; 101 | let counter = this.data.counter; 102 | let active1 = this.data.active1; 103 | let active2 = this.data.active2; 104 | // console.log(active1 + "ac", active2) 105 | // console.log(title) 106 | this.setData({ 107 | cnews: [], 108 | counter: 1 109 | }) 110 | if(title == "财经"){ 111 | this.setData({ 112 | title: 'finance', 113 | active2: 'finance' 114 | }) 115 | if(active1 != 'finance'){ 116 | this.setData({ 117 | news: cnews, 118 | count: counter, 119 | hiddenLoading: false, 120 | }) 121 | this.module('finance') 122 | } 123 | }else if(title == "股票"){ 124 | this.setData({ 125 | title: 'stock', 126 | active2: 'stock', 127 | }) 128 | if(active1 != 'stock'){ 129 | this.setData({ 130 | news: cnews, 131 | count: counter, 132 | hiddenLoading: false, 133 | }) 134 | this.module('stock') 135 | } 136 | }else if(title == "军事"){ 137 | this.setData({ 138 | title: 'military', 139 | active2: 'military' 140 | }) 141 | if(active1 != 'military'){ 142 | this.setData({ 143 | news: cnews, 144 | count: counter, 145 | hiddenLoading: false, 146 | }) 147 | this.module('military') 148 | } 149 | }else if(title == "推荐"){ 150 | this.setData({ 151 | title: 'news', 152 | active2: 'news' 153 | }) 154 | if(active1 != 'news'){ 155 | this.setData({ 156 | news: cnews, 157 | count: counter, 158 | hiddenLoading: false, 159 | }) 160 | this.module('news') 161 | } 162 | } 163 | console.log(this.data.active1, this.data.active2); 164 | // console.log(active) 165 | // console.log(this.data.actives); 166 | // wx.showToast({ 167 | // title: `切换到标签 ${event.detail.index + 1}`, 168 | // icon: 'none' 169 | // }); 170 | }, 171 | getTopping: function() { // 获取置顶的新闻 172 | wx.cloud.callFunction({ 173 | name: 'getTopping' 174 | }).then(res => { 175 | let top = res.result.data[0] 176 | // console.log(top) 177 | this.setData({ 178 | topTitle: top.title, 179 | topContent: top.content, 180 | images: top.images, 181 | topComment: top.comments, 182 | topAuthor: top.author, 183 | topDate: top.date.slice(0,10) 184 | }) 185 | }) 186 | }, 187 | showDetail: function(e) { // 点文章显示文章详情 188 | let item = e.currentTarget.dataset.item; 189 | let title = this.data.title; 190 | // console.log(e) 191 | wx.navigateTo({ 192 | url:`../detail/detail?contentId=${item}&title=${title}` 193 | }) 194 | }, 195 | showMore: function(e){ 196 | let show = this.data.show 197 | this.setData({ 198 | show: !show 199 | }) 200 | }, 201 | navigateToSearch: function() { 202 | // wx.navigateTo({ 203 | // url: '../search/search' 204 | // }) 205 | let num = this.data.num; 206 | let datas = this.data.datas[0]; 207 | // console.log(datas[0]) 208 | if(num == 5) { 209 | this.setData({ 210 | num: 0 211 | }) 212 | num = 0 213 | } 214 | this.setData({ 215 | placeholder: datas[num], 216 | num: num + 1 217 | }) 218 | }, 219 | /** 220 | * 生命周期函数--监听页面加载 221 | */ 222 | onLoad: function (options) { 223 | this.getTopping() 224 | // this.getDatas("getData") 225 | this.module('news'); 226 | this.setData({ 227 | active1: 'news' 228 | }) 229 | db.collection('hots').get() 230 | .then(res => { 231 | this.setData({ 232 | datas: res.data 233 | }) 234 | // console.log(res.data[0]) 235 | }); 236 | }, 237 | 238 | /** 239 | * 生命周期函数--监听页面初次渲染完成 240 | */ 241 | onReady: function () { 242 | 243 | }, 244 | 245 | /** 246 | * 生命周期函数--监听页面显示 247 | */ 248 | onShow: function () { 249 | let active2 = this.data.active2; 250 | this.setData({ 251 | active1: active2, 252 | }) 253 | }, 254 | 255 | 256 | /** 257 | * 页面相关事件处理函数--监听用户下拉动作 258 | */ 259 | onPullDownRefresh: function () { // 监听下拉动作来获取最新新闻信息 260 | wx.showToast({ 261 | title: '推荐中', 262 | image: '../../../image/加载.png' 263 | }) 264 | let title = this.data.title; 265 | wx.cloud.callFunction({ 266 | name: 'module', 267 | data: { 268 | counter: 1, 269 | title: title 270 | } 271 | }).then(res => { 272 | // console.log(res) 273 | let cnews = this.data.cnews 274 | let datas = res.result.data 275 | let data = datas.concat(cnews) 276 | this.setData({ 277 | hiddenLoading: true, 278 | cnews: data, 279 | }) 280 | }) 281 | }, 282 | 283 | /** 284 | * 页面上拉触底事件的处理函数 285 | */ 286 | onReachBottom: function () { // 上拉显示更多新闻 287 | wx.showToast({ 288 | title: '加载更多', 289 | image: '../../../image/加载.png' 290 | }) 291 | // this.getDatas("getData") 292 | let title = this.data.title 293 | if(title){ 294 | this.module(title) 295 | } 296 | }, 297 | 298 | /** 299 | * 用户点击右上角分享 300 | */ 301 | onShareAppMessage: function () { 302 | 303 | } 304 | }) -------------------------------------------------------------------------------- /miniprogram/pages/index/detail/detail.js: -------------------------------------------------------------------------------- 1 | var WxParse = require('../../../wxParse/wxParse.js'); 2 | wx.cloud.init() 3 | const db = wx.cloud.database() 4 | const photos = db.collection('photos') 5 | const comments = db.collection('comments') 6 | const app = getApp() 7 | // wx.cloud.init(); 8 | // var db = wx.cloud.database() 9 | // var collection = db.collection('news') 10 | // 直接在page的js文件中获取的数据有权限问题 11 | // 需要将需要获取的集合的权限改为所有人才能获取, 或者用云函数获取需要带的集合 12 | Page({ 13 | 14 | /** 15 | * 页面的初始数据 16 | */ 17 | data: { 18 | article: '', 19 | new_id: '', 20 | detail: '', 21 | like: 0, 22 | collect: false, 23 | show_popup: false, 24 | input_show: false, 25 | input_popup: false, 26 | checked: false, 27 | focus: false, 28 | icon: { 29 | normal: '../../../image/repeat.png', 30 | active: '../../../image/selected.png' 31 | }, 32 | selected: false, 33 | color: '', 34 | submit: false, 35 | islike: false, 36 | likeItem: [], 37 | num: 1, 38 | }, 39 | getDetail: function() { // 获取详情需要展示的信息 40 | let new_id = this.data.new_id; 41 | let title = this.data.title; 42 | let like = 100; 43 | // console.log(new_id) 44 | wx.cloud.callFunction({ 45 | name: 'getDetail', 46 | data: { 47 | title: title, 48 | new_id: new_id 49 | } 50 | }).then(res => { 51 | // console.log(res); 52 | let data = res.result.data[0]; 53 | // console.log(data) 54 | this.setData({ 55 | detail: data, 56 | like: like 57 | }) 58 | }) 59 | comments.where({ 60 | new_id: new_id 61 | }).get({ 62 | success: (res) => { 63 | let comm = res.data[0].comments; 64 | // console.log(comm) 65 | this.setData({ 66 | comms: comm 67 | }) 68 | } 69 | }) 70 | // console.log(this.data.detail) 71 | }, 72 | like: function() { 73 | let like = this.data.like; 74 | let islike = this.data.islike; 75 | let num = this.data.num; 76 | if(num%2 == 1){ 77 | like++ 78 | }else{ 79 | like-- 80 | } 81 | num = num + 1; 82 | this.setData({ 83 | like: like, 84 | islike: !islike, 85 | num: num 86 | }) 87 | }, 88 | selected: function() { 89 | let selected = this.data.selected; 90 | this.setData({ 91 | selected: !selected 92 | }) 93 | }, 94 | inputContent: function() { // 点击输入框和图标控制是否弹出 95 | this.setData({ 96 | input_popup: !this.data.input_popup, 97 | input_show: !this.data.input_show, 98 | focus: true 99 | }) 100 | }, 101 | bindKeyInput: function(e) { // 获取输入框的值,有值的话将改变按钮的颜色 102 | // console.log(e) 103 | if(e.detail.value){ 104 | this.setData({ 105 | inputValue: e.detail.value, 106 | color: '#1080C4', 107 | submit: true 108 | }) 109 | }else{ 110 | this.setData({ 111 | color: 'color: rgb(187, 177, 177);', 112 | submit: false 113 | }) 114 | } 115 | }, 116 | 117 | submit: function() { // 实现评论功能,将发布的评论同步点到数据 118 | let value = this.data.inputValue; 119 | let new_id = this.data.new_id; 120 | let userInfo = this.data.userInfo 121 | // let new_id = '6594157273642172936' 122 | if(userInfo){ 123 | comments.where({ 124 | new_id: new_id 125 | }).get({ 126 | success: (res) => { 127 | // console.log(res) 128 | let comms= res.data[0].comments; 129 | let people = { 130 | content: value, 131 | like: 0, 132 | avatar: userInfo.avatarUrl, 133 | nickname: userInfo.nickname 134 | } 135 | comms.unshift(people); 136 | // console.log(comm) 137 | this.setData({ 138 | comms: comms, 139 | input: '', 140 | }) 141 | wx.cloud.callFunction({ 142 | name: 'updateComments', 143 | data: { 144 | new_id: new_id, 145 | comms: comms 146 | } 147 | }).then(res =>{ 148 | console.log(res) 149 | }) 150 | 151 | } 152 | }) 153 | } 154 | }, 155 | addLike: function(e) { // 点击点赞图标增加点赞数同时保存到数据库 156 | let item = e.currentTarget.dataset.item; 157 | let new_id = this.data.new_id; 158 | let comms = this.data.comms; 159 | let likeItem = this.data.likeItem; 160 | let likebool = 'likeItem['+item+'].bool' 161 | let liken = 'likeItem['+item+'].n' 162 | if(typeof(likeItem[item]) == "undefined"){ 163 | this.setData({ 164 | [likebool]: false, 165 | [liken]: 0, 166 | }) 167 | } 168 | 169 | if(likeItem[item]){ 170 | likeItem[item].n += 1; 171 | if(likeItem[item].n%2){ 172 | comms[item].like += 1; 173 | }else{ 174 | comms[item].like -= 1; 175 | } 176 | likeItem[item].bool = !(likeItem[item].bool); 177 | }else{ 178 | likeItem[item].bool = true; 179 | likeItem[item].n = 0; 180 | comms[item].like += 1; 181 | } 182 | 183 | this.setData({ 184 | comms: comms, 185 | likeItem: likeItem 186 | }) 187 | // console.log(comms) 188 | wx.cloud.callFunction({ 189 | name: 'updateComments', 190 | data: { 191 | new_id: new_id, 192 | comms: comms 193 | } 194 | }).then(res =>{ 195 | // console.log(res) 196 | }) 197 | }, 198 | selectEmoji: function() { // 点击emoji图标显示选择emoji框 199 | 200 | }, 201 | clickComment: function() { // 跳到当前页面的评论区 202 | this.setData({ 203 | toView: 'test' 204 | }) 205 | console.log(this.data.toView) 206 | }, 207 | clickCollect: function() {// 是否收藏文章 208 | let collect = this.data.collect; 209 | this.setData({ 210 | collect: !collect 211 | }) 212 | }, 213 | clickShare: function() { // 分享弹出框 214 | let show_popup = this.data.show_popup; 215 | this.setData({ 216 | show_popup: !show_popup 217 | }) 218 | }, 219 | onChange(event) { // 发布评论时复选框 220 | this.setData({ 221 | checked: event.detail 222 | }); 223 | }, 224 | upload: function() { 225 | // 手机 摄像头 相册 226 | // IOS Android, 小程序, 227 | let new_id = this.data.new_id; 228 | let comms = this.data.comms; 229 | wx.chooseImage({ 230 | count: 4, // 最多可以选择的图片张数,默认9 231 | sizeType: ['original', 'compressed'], // original 原图,compressed 压缩图,默认二者都有 232 | sourceType: ['album', 'camera'], // album 从相册选图,camera 使用相机,默认二者都有 233 | success: function(res){ 234 | // success 235 | // console.log(res); 236 | const tempFilePaths = res.tempFilePaths; 237 | // 文件上传的流程 238 | for(let i = 0; i < tempFilePaths.length; i++){ 239 | // 1. 取一个不会重复的文件名 一般使用时间戳 240 | let randString = Math.floor(Math.random() * 1000000) + '.png'; 241 | // console.log("tempFile " + tempFilePaths) 242 | wx.cloud.uploadFile({ 243 | cloudPath: randString, 244 | filePath: tempFilePaths[i], 245 | success: res => { 246 | comms[0].image = res.fileID 247 | this.setData({ 248 | comms: comms 249 | }) 250 | console.log(comms) 251 | wx.cloud.callFunction({ 252 | name: 'updateComments', 253 | data: { 254 | new_id: new_id, 255 | comms: comms 256 | } 257 | }).then(res => { 258 | console.log(res) 259 | wx.showToast({ 260 | title: '上传成功', 261 | icon: 'success' 262 | }) 263 | }) 264 | }, 265 | fail: console.err 266 | }) 267 | } 268 | }, 269 | fail: function() { 270 | // fail 271 | }, 272 | complete: function() { 273 | // complete 274 | } 275 | }) 276 | }, 277 | getValue: function(e) { 278 | console.log(e); 279 | }, 280 | setpop: function() { 281 | this.setData({ 282 | input_popup: false 283 | }) 284 | }, 285 | /** 286 | * 生命周期函数--监听页面加载 287 | */ 288 | 289 | onLoad: function (options) { 290 | console.log(options) 291 | this.setData({ 292 | new_id: options.contentId, 293 | title: options.title 294 | }); 295 | // console.log(this.data.new_id) 296 | this.getDetail(); 297 | if (app.globalData.userInfo) { 298 | this.setData({ 299 | userInfo: app.globalData.userInfo, 300 | hasUserInfo: true 301 | }) 302 | } 303 | // } else if (this.data.canIUse){ 304 | // // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回 305 | // // 所以此处加入 callback 以防止这种情况 306 | // app.userInfoReadyCallback = res => { 307 | // this.setData({ 308 | // userInfo: res.userInfo, 309 | // hasUserInfo: true 310 | // }) 311 | // } 312 | // } else { 313 | // // 在没有 open-type=getUserInfo 版本的兼容处理 314 | // wx.getUserInfo({ 315 | // success: res => { 316 | // app.globalData.userInfo = res.userInfo 317 | // this.setData({ 318 | // userInfo: res.userInfo, 319 | // hasUserInfo: true 320 | // }) 321 | // } 322 | // }) 323 | // } 324 | }, 325 | 326 | /** 327 | * 页面上拉触底事件的处理函数 328 | */ 329 | onReachBottom: function () { 330 | console.log('获取更多评论'); 331 | }, 332 | 333 | /** 334 | * 用户点击右上角分享 335 | */ 336 | onShareAppMessage: function () { 337 | 338 | }, 339 | test: function() { 340 | 341 | } 342 | }) -------------------------------------------------------------------------------- /miniprogram/wxParse/html2json.js: -------------------------------------------------------------------------------- 1 | /** 2 | * html2Json 改造来自: https://github.com/Jxck/html2json 3 | * 4 | * 5 | * author: Di (微信小程序开发工程师) 6 | * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com) 7 | * 垂直微信小程序开发交流社区 8 | * 9 | * github地址: https://github.com/icindy/wxParse 10 | * 11 | * for: 微信小程序富文本解析 12 | * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184 13 | */ 14 | 15 | var __placeImgeUrlHttps = "https"; 16 | var __emojisReg = ''; 17 | var __emojisBaseSrc = ''; 18 | var __emojis = {}; 19 | var wxDiscode = require('./wxDiscode.js'); 20 | var HTMLParser = require('./htmlparser.js'); 21 | // Empty Elements - HTML 5 22 | var empty = makeMap("area,base,basefont,br,col,frame,hr,img,input,link,meta,param,embed,command,keygen,source,track,wbr"); 23 | // Block Elements - HTML 5 24 | var 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"); 25 | 26 | // Inline Elements - HTML 5 27 | var 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"); 28 | 29 | // Elements that you can, intentionally, leave open 30 | // (and which close themselves) 31 | var closeSelf = makeMap("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr"); 32 | 33 | // Attributes that have their values filled in disabled="disabled" 34 | var fillAttrs = makeMap("checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected"); 35 | 36 | // Special Elements (can contain anything) 37 | var special = makeMap("wxxxcode-style,script,style,view,scroll-view,block"); 38 | function makeMap(str) { 39 | var obj = {}, items = str.split(","); 40 | for (var i = 0; i < items.length; i++) 41 | obj[items[i]] = true; 42 | return obj; 43 | } 44 | 45 | function q(v) { 46 | return '"' + v + '"'; 47 | } 48 | 49 | function removeDOCTYPE(html) { 50 | return html 51 | .replace(/<\?xml.*\?>\n/, '') 52 | .replace(/<.*!doctype.*\>\n/, '') 53 | .replace(/<.*!DOCTYPE.*\>\n/, ''); 54 | } 55 | 56 | function trimHtml(html) { 57 | return html 58 | .replace(/\r?\n+/g, '') 59 | .replace(//ig, '') 60 | .replace(/\/\*.*?\*\//ig, '') 61 | .replace(/[ ]+ 189 | // add to parents 190 | var parent = bufArray[0] || results; 191 | if (parent.nodes === undefined) { 192 | parent.nodes = []; 193 | } 194 | parent.nodes.push(node); 195 | } else { 196 | bufArray.unshift(node); 197 | } 198 | }, 199 | end: function (tag) { 200 | //debug(tag); 201 | // merge into parent tag 202 | var node = bufArray.shift(); 203 | if (node.tag !== tag) console.error('invalid state: mismatch end tag'); 204 | 205 | //当有缓存source资源时于于video补上src资源 206 | if(node.tag === 'video' && results.source){ 207 | node.attr.src = results.source; 208 | delete results.source; 209 | } 210 | 211 | if (bufArray.length === 0) { 212 | results.nodes.push(node); 213 | } else { 214 | var parent = bufArray[0]; 215 | if (parent.nodes === undefined) { 216 | parent.nodes = []; 217 | } 218 | parent.nodes.push(node); 219 | } 220 | }, 221 | chars: function (text) { 222 | //debug(text); 223 | var node = { 224 | node: 'text', 225 | text: text, 226 | textArray:transEmojiStr(text) 227 | }; 228 | 229 | if (bufArray.length === 0) { 230 | node.index = index.toString() 231 | index += 1 232 | results.nodes.push(node); 233 | } else { 234 | var parent = bufArray[0]; 235 | if (parent.nodes === undefined) { 236 | parent.nodes = []; 237 | } 238 | node.index = parent.index + '.' + parent.nodes.length 239 | parent.nodes.push(node); 240 | } 241 | }, 242 | comment: function (text) { 243 | //debug(text); 244 | // var node = { 245 | // node: 'comment', 246 | // text: text, 247 | // }; 248 | // var parent = bufArray[0]; 249 | // if (parent.nodes === undefined) { 250 | // parent.nodes = []; 251 | // } 252 | // parent.nodes.push(node); 253 | }, 254 | }); 255 | return results; 256 | }; 257 | 258 | function transEmojiStr(str){ 259 | // var eReg = new RegExp("["+__reg+' '+"]"); 260 | // str = str.replace(/\[([^\[\]]+)\]/g,':$1:') 261 | 262 | var emojiObjs = []; 263 | //如果正则表达式为空 264 | if(__emojisReg.length == 0 || !__emojis){ 265 | var emojiObj = {} 266 | emojiObj.node = "text"; 267 | emojiObj.text = str; 268 | array = [emojiObj]; 269 | return array; 270 | } 271 | //这个地方需要调整 272 | str = str.replace(/\[([^\[\]]+)\]/g,':$1:') 273 | var eReg = new RegExp("[:]"); 274 | var array = str.split(eReg); 275 | for(var i = 0; i < array.length; i++){ 276 | var ele = array[i]; 277 | var emojiObj = {}; 278 | if(__emojis[ele]){ 279 | emojiObj.node = "element"; 280 | emojiObj.tag = "emoji"; 281 | emojiObj.text = __emojis[ele]; 282 | emojiObj.baseSrc= __emojisBaseSrc; 283 | }else{ 284 | emojiObj.node = "text"; 285 | emojiObj.text = ele; 286 | } 287 | emojiObjs.push(emojiObj); 288 | } 289 | 290 | return emojiObjs; 291 | } 292 | 293 | function emojisInit(reg='',baseSrc="/wxParse/emojis/",emojis){ 294 | __emojisReg = reg; 295 | __emojisBaseSrc=baseSrc; 296 | __emojis=emojis; 297 | } 298 | 299 | module.exports = { 300 | html2json: html2json, 301 | emojisInit:emojisInit 302 | }; 303 | 304 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 微信下程序云开发 2 | 3 | 头条案例 4 | ![小程序](https://user-gold-cdn.xitu.io/2018/11/18/16724889e9ac15e2?w=546&h=287&f=jpeg&s=26044) 5 |     最近自己正做一个小程序,是基于小程序云开发的,在做小程序项目的时候使用云开发确实方便是很多。有关于云开发后面我也会讲到,毕竟这个项目就是使用的云开发,更多的有关云开发内容有需要的小伙伴可以去看官方文档, 6 | 云开发文档。 7 |
8 |     项目的开发也有一段时间了虽然只是实现了部分功能,但是我还是忍不住来写篇文章来分享一下这段时间的成果和项目中遇到的问题,后面我也会逐步的完善项目。项目源码在github上,如果小伙伴们觉得不错可以给个star,仿头条项目地址
9 | ### 项目详解 10 |     下面将详细的介绍项目,虽然使用的云开发节省了很多时间但是前后端的东西都需要做工作量有点大,在这短时间内我没有完成整个项目,只是实现了首页,详情页,和登录页等主要功能
11 |     我首先将界面需要获取数据的地方设计好数据库为后面数据的获取做准备,数据库使用的是小程序云开发的MongoDB数据库,将数据存储在云数据库上,并且使用云函数来操作数据库 12 | #### 新闻首页 13 |     首页相对于详情页要简单一些,在头部使用了一个搜索框和搜索按钮,然后下面是一个tab标签栏含有多个标签页,每一个标签页显示标签对应有关的新闻信。在标签页的右边有一个按钮,点击按钮会出现一个弹出框。这里有个特别的地方,就是在推荐页的顶部设置了一个置顶的新闻
14 | 15 | ![](https://user-gold-cdn.xitu.io/2018/11/12/1670608302241c64?w=321&h=550&f=png&s=103573) 16 |     输入框绑定了一个tap事件,使得在点击输入框但不输入值的时候改变placeholder的值。
17 |     在tab栏的右边有一个按钮点击按钮将会出现一个弹出层,前面的gif中有演示,是新闻种类的选择框,点击关闭按钮可以关闭弹出层
18 |     最后就是首页最重要的新闻显示页面了,为了节省项目的时间,这里使用了有赞的框架vant-weapp有兴趣的小伙伴可以去了解下。在tab标签栏设置了6个标签页,但是只会显示4个标签页想要显示其他的可以左右拖动标签栏,这里将推荐页设置为了默认激活的。由于每个每个标签页代码基本都相同的,只是在推荐页是的第一栏是置顶信息,还有就是获取的数据不同,有关数据获取在下面介绍代码将会细讲,为了提高代码的复用,这里使用了模板,将复用的代码写在写在另外的文件下,使用时直接调用就可以了。
19 |     每个标签对应都创建了一个集合,这里我为置顶新闻也另外创建了一个集合,并且给每条信息设计好需要用的字段方便自己获取数据和使用数据,由于云数据库是可以导入json文件或者csv文件,并且每个新闻也都需要上拉加载数据需要更多的数据,自己造数据费时间又麻烦,所以我这里自己写了爬虫爬取自己需要的数据并保存到json文件中,直接将数据导入到数据库中。
20 |     这样设计数据库也是使得从数据库获取数据方便了一些。写一个module函数就可以获取每个标签的数据。
21 | 每条数据的字段如下,其中news_id起到很重要的作用,将首页的每条新闻和对应的详情页面联系起来。 22 | ![](https://user-gold-cdn.xitu.io/2018/11/13/1670d9c7b2210250?w=915&h=387&f=png&s=45250) 23 |     在每一个标签页使用模板,并且设置了一个data(给不同页面传入需要显示的对应新闻信息,用于在页面显示),由于默认激活页面是推荐页所以在onload事件触发时将默认加载推荐页的数据,同时将推荐页设置为已被激活页面,数据加载这里写了一个加载函数 24 | ``` 25 | module: function(title) { 26 | let counter = this.data.counter 27 | // console.log(title) 28 | wx.cloud.callFunction({ 29 | name: 'module', 30 | data: { 31 | counter: counter, 32 | title: title 33 | } 34 | }).then(res => { 35 | // console.log(res) 36 | let cnews = this.data.cnews 37 | let data = res.result.data 38 | // console.log(data) 39 | for(let i = 0; i < data.length; i++) { 40 | // console.log(data[i].date) 41 | data[i].date = data[i].date.slice(0, 10) 42 | cnews.push(data[i]) 43 | this.imgCheck(data[i].images, data.new_id, title) 44 | } 45 | // console.log(data) 46 | this.setData({ 47 | hiddenLoading: true, 48 | cnews: cnews, 49 | counter: counter+1 50 | }) 51 | }) 52 | } 53 | ``` 54 | 传入一个title就是当前显示的标签的标题,默认的是推荐,使用一个counter计数,每次只会加载5条新闻条数据,从数据库获取新闻的信息是由一个云函数来解决的 55 | ``` 56 | // 云函数入口文件 57 | const cloud = require('wx-server-sdk') 58 | 59 | cloud.init() 60 | const db = cloud.database() 61 | 62 | // 云函数入口函数 63 | exports.main = async (event, context) => { 64 | return await db.collection(event.title).skip((event.counter-1)*5).limit(5).get() 65 | } 66 | ``` 67 | 给云函数传入两个数据,一个是title就是从对应集合获取信息,还有一个就是counter用来计算获取信息的位置,因为,在向上拉取加载更多新闻的时候需要加载数据,我这里设置每次加载5条数据,所以传递给云函数一个counter,每次调用了云函数从与数据库获取一次数据counter就会+1,从而使得每次上拉加载数据时忽略已经加载的数据从后面加载数据。每次加载数据都会更新一次保存数据的数组,在主页的index.wxml页面将会判断并获取数据使用一个for循环将数据显示到对应的标签页
68 | 在置顶新闻那部分在数据获取的数据其实也没很特别,我只是将置顶新闻集合中最新的新闻从云数据库拿下来,然后展示页面中
69 | 这里也实现了下拉刷新,使用了小程序的onPullDownRefresh函数下拉刷新将会获取最新的数据,并且将最新的数据插显示在最上部分,由于每次下拉需要插入数据到集合的前面,所以我这里显示不明显
70 | ``` 71 | onPullDownRefresh: function () { // 监听下拉动作来获取最新新闻信息 72 | wx.showToast({ 73 | title: '推荐中', 74 | image: '../../../image/加载.png' 75 | }) 76 | let title = this.data.title; 77 | wx.cloud.callFunction({ 78 | name: 'module', 79 | data: { 80 | counter: 1, 81 | title: title 82 | } 83 | }).then(res => { 84 | // console.log(res) 85 | let cnews = this.data.cnews 86 | let datas = res.result.data 87 | let data = datas.concat(cnews) 88 | this.setData({ 89 | hiddenLoading: true, 90 | cnews: data, 91 | }) 92 | }) 93 | } 94 | ``` 95 | 在module函数有使用了一个图片鉴黄功能,使用了腾讯的一个图片识别接口,毕竟不是什么图片都能显示出来,所以写了一个imgCheck函数来检测每一条新闻的所有图片,当图片不合格的时候则将这条新闻删除。我没有使用图片去测试,更不可能展示出来是吧,相信大家都懂(猥琐笑)。
96 |
97 | 当不同标签页进行切换的时候会有一个onchange事件,onchange事件会获得title和index。并且将onchange之后的数据保存到一个数组中,在onchange事件里面使用module函数来获取对应的title的数据并且判断这条数据是否是最近加载过的,如果是上次onchange事件加载过的函数将会显示上次事件保存的数据,在wxml中也会判断是否是上次激活的页面来显示对应的数据。
98 |     前面一直再讲后端的东西,我也这篇文章也是为了讲云开,说实话有了云开发真的方便了很多,一个人就可以搞定前后端的东西。不过为了方便大家的理解,我还是讲一下界面的内容。
99 |     既然前都已经将数据拿过来了,最后要做的就是将数据展示出来了,每条数据 100 | ``` 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | {{topAuthor}} 111 | 评论{{topComment}} 112 | {{topDate}} 113 | 114 | 115 | 116 | 117 | 118 | ``` 119 | 120 | ``` 121 | 140 | ``` 141 | 这里用的就是MVVM思想,将数据绑定到UI界面,在js文件中获取到数据后,这里将数据拿过来使用。
142 | 这里由于每条新闻的图片数量是不确定的,并且最多只显示三张图片。所以直接固定了3个image标签并且固定了image的大小,当图片没有的时候就不会显示图片。 143 | #### 详情页 144 | 很多在首页讲过的东西我在详情页也就不再多说了,大家有不懂可以去看源码,毕竟讲那么多废话就是浪费时间,我尽量挑出最精彩的部分来写。 145 | ![](https://user-gold-cdn.xitu.io/2018/11/14/167105ac17197a8b?w=347&h=621&f=gif&s=3874261) 146 | 在首页的每一条新闻都绑定了一个跳转tap事件,当点击新闻后将会跳转到详情页,并且将新闻的id和title作为参数传给详情页。
147 | ``` 148 | showDetail: function(e) { // 点文章显示文章详情 149 | let item = e.currentTarget.dataset.item; 150 | let title = this.data.title; 151 | // console.log(e) 152 | wx.navigateTo({ 153 | url:`../detail/detail?contentId=${item}&title=${title}` 154 | }) 155 | } 156 | ``` 157 | 在点击跳转到详情页后,将会在onload的事件中获取到对应的新闻id,并将id存到data里面。由于在爬取详情页的时候没有爬下来,所以我随便将一些简单的内容放在content里面。 158 | 159 | 详情页这部分我将页面分为了内容部分和评论。然后还有就是使用了一个fixed将输入框等按钮固定在屏幕底部
160 |     内容部分又分为了四部分,分别是标题部分,作者头像和昵称,内容部分,点赞转发部分。 161 | 162 | 第二部分为显示像和昵称我使用了一个flex的浮动布局将并且将昵称部分的flex设置为1使得头像和关注按钮分别在两边。头像使用了一个image标签并且将image标签的大小固定,毕竟用户上传的图片肯定大小不一样。第四部分只要使用4个view在把图片和内容放进去再使用一个flex布局就可以搞定。
163 | 既然界面布局已经搞定现在就是要拿数据了,在点击新闻进入来详情页的时候会的到新闻的id和title,这样可以通过唯一id(每条doc的id)的和title(集合的名字)从云数据库拿出对应新闻数据。这里代码就不贴出来了,跟前面首页的差不多,有需要的可以去github看源码。
164 | 165 | 接下来就是评论部分的内容了,个人认为这个地方还是挺有趣而且在更新数据库的时候还有权限问题,前面没有讲这个问题就是打算放到评论部分一起来讲。 166 | 在页面的底部固定了一个评论框,包含输入框,跳转到评论的按钮,收藏按钮,转发按钮。 167 | 168 | ![](https://user-gold-cdn.xitu.io/2018/11/15/16715786c73acd9f?w=323&h=544&f=png&s=131156) 169 | 点击转发按钮会出现一个弹窗,可以选择需要转发到的渠道,并且给弹出层背景添加了蒙层效果,只有在点击蒙层或者取消按钮弹出框才会消失。
170 | 这里只实现了转发到微信的功能,只需要调用一下微信小程序的onShareAppMessage接口就可以搞定,当点击微信的图标后可以转发给朋友或者微信群。 171 | 172 | ![](https://user-gold-cdn.xitu.io/2018/11/15/167157cf434b04ed?w=320&h=518&f=png&s=128384) 173 |     收藏按钮我就是用了一个wx:if来判断显示的是那个image点击一个队bool值取反。 174 | 点击评论按钮可以从直接跳转到评论的顶部,使用一个scrollview将整个详情包裹住然后 175 | 使用它的一个属性scroll-into-view当点击底部的评论按钮时将评论部分的id赋值给scroll-into-view就可以实现锚点跳转了。在这个地方我踩了一个坑,没有给scroll-into-view设置一个高度导致效果一直出不来,由于详情页需要评论页面高度是改变的,所以直接给它设置一个100vh就可以完美搞定这个地方的锚点跳转了。
176 |     最后就是输入框了点击输入框或者左边的输入按钮就可以弹出评论输入框了,当输入框内有值的时候发布按钮会改变颜色。当未授权登录将无法发布评论 177 | ![](https://user-gold-cdn.xitu.io/2018/11/15/167171dfb36cab57?w=349&h=600&f=gif&s=5067778) 178 | 这里就需要在我的页面点击登录进行授权,获取获取用户信息。
179 | 登录功能的实现在页面登录按钮设置属性为open-type=getUserInfo,bindgetuserinfo=getUserInfo 180 | 点击登录按钮授权登录将会获取用户信息,并将用户信息保存到全局上,这样在详情页面便可以判断或者使用用户信息。 181 | ![](https://user-gold-cdn.xitu.io/2018/11/15/16717eba50b4ee1b?w=348&h=607&f=gif&s=5238575) 182 | 授权就可以发布新闻评论了,由于在登录的时候获取到了用户使用,所以在评论的是就有用户avatar和nickname。当在评论输入框中输入了值并且用户授权了登录的时候点击发布,同时将数据保存到数据库中。下面就是评论功能函数
183 | ``` 184 | submit: function() { // 实现评论功能,将发布的评论同步到云数据库 185 | let value = this.data.inputValue; 186 | let new_id = this.data.new_id; 187 | let userInfo = this.data.userInfo 188 | // let new_id = '6594157273642172936' 189 | if(userInfo){ 190 | comments.where({ 191 | new_id: new_id 192 | }).get({ 193 | success: (res) => { 194 | // console.log(res) 195 | let comms= res.data[0].comments; 196 | let people = { 197 | content: value, 198 | like: 0, 199 | avatar: userInfo.avatarUrl, 200 | nickname: userInfo.nickname 201 | } 202 | comms.unshift(people); 203 | // console.log(comm) 204 | this.setData({ 205 | comms: comms, 206 | input: '', 207 | }) 208 | wx.cloud.callFunction({ 209 | name: 'updateComments', 210 | data: { 211 | new_id: new_id, 212 | comms: comms 213 | } 214 | }).then(res =>{ 215 | console.log(res) 216 | }) 217 | 218 | } 219 | }) 220 | } 221 | } 222 | ``` 223 | 评论部分的数据库我只创建了一个comments集合,开始的新闻new_id就起到作用了,每一comment都有一个new_id,新闻的每一条评论就是设置为一个对象,毕竟评论还包括头像昵称,点赞数,评论内容等。这样设置评论数据库好处就是,只要获取新闻id在一个集合中就可以获取到新闻对应的评论。 224 | 225 | ![](https://user-gold-cdn.xitu.io/2018/11/15/16718102db2b4777?w=909&h=173&f=png&s=17792) 226 | #### 开始在更新数据库的时候我没有使用云函数,而是在js中直接更新数据,获得返回信息显示是请求成功但是update数为0,但是当我到数据库中查看是发现数据并没有更新成功,查了一下文档发现是权限的问题,因为数据的修改只能是管理者或者数据的创建者,而数据又是我自己手动输入到云数据库的,在js中直接更新的数据库的时候不是创建者而在小程序端又没有管理者权限,所以没有权限修改数据。既然无法是创建者想要修改数据只能是管理员了,所以这里我使用了云函数来修改数据。说到这里大家应该意识到了云函数的权限是什么级别了吧,这里给大家看下官方文档的说明。 227 | ![](https://user-gold-cdn.xitu.io/2018/11/16/16718234911f8b48?w=916&h=60&f=png&s=18155) 228 | 从官方文档能看出云函数是有多强大了,还就是云函数也不能乱用,毕竟权限是最高的。
229 |    230 |   231 |   232 | #### 既然可以评论那就少不了点赞功能吧,虽然点赞是很普通的功能但是这里涉及到了云数据而且具体实现还是很有趣的。
233 | 每条评论都可以点赞一次再次点击时将会取消点赞。评论部分的点赞我这里写的addLike函数绑定到点赞按钮,由于每条评论都绑定了相同的点赞函数,所以需要区分是那条评论被点赞所以给每条评论设置了data-item="{{index}}"i(index是在使用for循环展示评论使所产生的)同时对应了评论在数据库保存的位置,这样一来就方便来区分被点赞的那一条评论了。
234 | 当被点赞后点赞按钮将换为红色的按钮,同时数据库中like也要加一。再次点赞按钮则还原,like也将还原。其实点赞功能还是很有趣的,这完全是我个人的想法,可能还有不好的地方,但是我还是推荐大家看一下。下面就是具体实现的代码 235 | ``` 236 | addLike: function(e) { // 点击点赞图标增加点赞数同时保存到数据库 237 | let item = e.currentTarget.dataset.item; 238 | let new_id = this.data.new_id; 239 | let comms = this.data.comms; 240 | let likeItem = this.data.likeItem; 241 | let likebool = 'likeItem['+item+'].bool' 242 | let liken = 'likeItem['+item+'].n' 243 | if(typeof(likeItem[item]) == "undefined"){ 244 | this.setData({ 245 | [likebool]: false, 246 | [liken]: 0, 247 | }) 248 | } 249 | 250 | if(likeItem[item]){ 251 | likeItem[item].n += 1; 252 | if(likeItem[item].n%2){ 253 | comms[item].like += 1; 254 | }else{ 255 | comms[item].like -= 1; 256 | } 257 | likeItem[item].bool = !(likeItem[item].bool); 258 | }else{ 259 | likeItem[item].bool = true; 260 | likeItem[item].n = 0; 261 | comms[item].like += 1; 262 | } 263 | 264 | this.setData({ 265 | comms: comms, 266 | likeItem: likeItem 267 | }) 268 | // console.log(comms) 269 | wx.cloud.callFunction({ 270 | name: 'updateComments', 271 | data: { 272 | new_id: new_id, 273 | comms: comms 274 | } 275 | }).then(res =>{ 276 | // console.log(res) 277 | }) 278 | }, 279 | ``` 280 | 在评论输入框的下边栏有一个复选框按钮,图片按钮等这里我使用了了flex布局轻松搞定,这是我实现了下评论插入图片功能,同时将图片保存到云端。其实评论插入图片还需要优化,我在写完文章后也还会继续优化。 281 | 我这是使用了小程序云开发的一个文件上传接口wx.cloud.uploadFile,将图片上传后会生成一个fileID,我将fileID(也就是图片地址)保存到当前评论对象的image下,同时更新本地的数据,再通过一个if来判断当前的评论是否含有图片,有的话就将图片显示在评论中。这里代码我就不贴出来,有需要的可以看源码。
282 | 283 | #### 由于项目有点大所以我在短时间内只实现了部分功能,在后续的时间我会实现其他功能。其实写这个项目也是为了实战云开发,同时我也体验到了云开发的好处。项目中有些不足的地方欢迎大家指出,有什么好的建议也可以联系我。大家相互学习 284 | -------------------------------------------------------------------------------- /cloudfunctions/imgCheck/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "imgCheck", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "ajv": { 8 | "version": "5.5.2", 9 | "resolved": "http://registry.npm.taobao.org/ajv/download/ajv-5.5.2.tgz", 10 | "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", 11 | "requires": { 12 | "co": "^4.6.0", 13 | "fast-deep-equal": "^1.0.0", 14 | "fast-json-stable-stringify": "^2.0.0", 15 | "json-schema-traverse": "^0.3.0" 16 | } 17 | }, 18 | "asn1": { 19 | "version": "0.2.4", 20 | "resolved": "http://registry.npm.taobao.org/asn1/download/asn1-0.2.4.tgz", 21 | "integrity": "sha1-jSR136tVO7M+d7VOWeiAu4ziMTY=", 22 | "requires": { 23 | "safer-buffer": "~2.1.0" 24 | } 25 | }, 26 | "assert-plus": { 27 | "version": "1.0.0", 28 | "resolved": "http://registry.npm.taobao.org/assert-plus/download/assert-plus-1.0.0.tgz", 29 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" 30 | }, 31 | "asynckit": { 32 | "version": "0.4.0", 33 | "resolved": "http://registry.npm.taobao.org/asynckit/download/asynckit-0.4.0.tgz", 34 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" 35 | }, 36 | "aws-sign2": { 37 | "version": "0.7.0", 38 | "resolved": "http://registry.npm.taobao.org/aws-sign2/download/aws-sign2-0.7.0.tgz", 39 | "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" 40 | }, 41 | "aws4": { 42 | "version": "1.8.0", 43 | "resolved": "http://registry.npm.taobao.org/aws4/download/aws4-1.8.0.tgz", 44 | "integrity": "sha1-8OAD2cqef1nHpQiUXXsu+aBKVC8=" 45 | }, 46 | "bcrypt-pbkdf": { 47 | "version": "1.0.2", 48 | "resolved": "http://registry.npm.taobao.org/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.2.tgz", 49 | "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", 50 | "requires": { 51 | "tweetnacl": "^0.14.3" 52 | } 53 | }, 54 | "caseless": { 55 | "version": "0.12.0", 56 | "resolved": "http://registry.npm.taobao.org/caseless/download/caseless-0.12.0.tgz", 57 | "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" 58 | }, 59 | "co": { 60 | "version": "4.6.0", 61 | "resolved": "http://registry.npm.taobao.org/co/download/co-4.6.0.tgz", 62 | "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" 63 | }, 64 | "combined-stream": { 65 | "version": "1.0.7", 66 | "resolved": "http://registry.npm.taobao.org/combined-stream/download/combined-stream-1.0.7.tgz", 67 | "integrity": "sha1-LR0kMXr7ir6V1tLAsHtXgTU52Cg=", 68 | "requires": { 69 | "delayed-stream": "~1.0.0" 70 | } 71 | }, 72 | "core-util-is": { 73 | "version": "1.0.2", 74 | "resolved": "http://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz", 75 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 76 | }, 77 | "dashdash": { 78 | "version": "1.14.1", 79 | "resolved": "http://registry.npm.taobao.org/dashdash/download/dashdash-1.14.1.tgz", 80 | "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", 81 | "requires": { 82 | "assert-plus": "^1.0.0" 83 | } 84 | }, 85 | "delayed-stream": { 86 | "version": "1.0.0", 87 | "resolved": "http://registry.npm.taobao.org/delayed-stream/download/delayed-stream-1.0.0.tgz", 88 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" 89 | }, 90 | "ecc-jsbn": { 91 | "version": "0.1.2", 92 | "resolved": "http://registry.npm.taobao.org/ecc-jsbn/download/ecc-jsbn-0.1.2.tgz", 93 | "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", 94 | "requires": { 95 | "jsbn": "~0.1.0", 96 | "safer-buffer": "^2.1.0" 97 | } 98 | }, 99 | "extend": { 100 | "version": "3.0.2", 101 | "resolved": "http://registry.npm.taobao.org/extend/download/extend-3.0.2.tgz", 102 | "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=" 103 | }, 104 | "extsprintf": { 105 | "version": "1.3.0", 106 | "resolved": "http://registry.npm.taobao.org/extsprintf/download/extsprintf-1.3.0.tgz", 107 | "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" 108 | }, 109 | "fast-deep-equal": { 110 | "version": "1.1.0", 111 | "resolved": "http://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-1.1.0.tgz", 112 | "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" 113 | }, 114 | "fast-json-stable-stringify": { 115 | "version": "2.0.0", 116 | "resolved": "http://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.0.0.tgz", 117 | "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" 118 | }, 119 | "forever-agent": { 120 | "version": "0.6.1", 121 | "resolved": "http://registry.npm.taobao.org/forever-agent/download/forever-agent-0.6.1.tgz", 122 | "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" 123 | }, 124 | "form-data": { 125 | "version": "2.3.3", 126 | "resolved": "http://registry.npm.taobao.org/form-data/download/form-data-2.3.3.tgz", 127 | "integrity": "sha1-3M5SwF9kTymManq5Nr1yTO/786Y=", 128 | "requires": { 129 | "asynckit": "^0.4.0", 130 | "combined-stream": "^1.0.6", 131 | "mime-types": "^2.1.12" 132 | } 133 | }, 134 | "getpass": { 135 | "version": "0.1.7", 136 | "resolved": "http://registry.npm.taobao.org/getpass/download/getpass-0.1.7.tgz", 137 | "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", 138 | "requires": { 139 | "assert-plus": "^1.0.0" 140 | } 141 | }, 142 | "har-schema": { 143 | "version": "2.0.0", 144 | "resolved": "http://registry.npm.taobao.org/har-schema/download/har-schema-2.0.0.tgz", 145 | "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" 146 | }, 147 | "har-validator": { 148 | "version": "5.1.0", 149 | "resolved": "http://registry.npm.taobao.org/har-validator/download/har-validator-5.1.0.tgz", 150 | "integrity": "sha1-RGV/VoiiLP1LckhugbOj+xF0LCk=", 151 | "requires": { 152 | "ajv": "^5.3.0", 153 | "har-schema": "^2.0.0" 154 | } 155 | }, 156 | "http-signature": { 157 | "version": "1.2.0", 158 | "resolved": "http://registry.npm.taobao.org/http-signature/download/http-signature-1.2.0.tgz", 159 | "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", 160 | "requires": { 161 | "assert-plus": "^1.0.0", 162 | "jsprim": "^1.2.2", 163 | "sshpk": "^1.7.0" 164 | } 165 | }, 166 | "image-node-sdk": { 167 | "version": "1.0.4", 168 | "resolved": "http://registry.npm.taobao.org/image-node-sdk/download/image-node-sdk-1.0.4.tgz", 169 | "integrity": "sha1-2MhJky/Fe3G/bc6tKh5KiPu9ihg=", 170 | "requires": { 171 | "random-int": "^1.0.0", 172 | "request": "^2.87.0" 173 | } 174 | }, 175 | "is-typedarray": { 176 | "version": "1.0.0", 177 | "resolved": "http://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz", 178 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" 179 | }, 180 | "isstream": { 181 | "version": "0.1.2", 182 | "resolved": "http://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz", 183 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" 184 | }, 185 | "jsbn": { 186 | "version": "0.1.1", 187 | "resolved": "http://registry.npm.taobao.org/jsbn/download/jsbn-0.1.1.tgz", 188 | "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" 189 | }, 190 | "json-schema": { 191 | "version": "0.2.3", 192 | "resolved": "http://registry.npm.taobao.org/json-schema/download/json-schema-0.2.3.tgz", 193 | "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" 194 | }, 195 | "json-schema-traverse": { 196 | "version": "0.3.1", 197 | "resolved": "http://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.3.1.tgz", 198 | "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" 199 | }, 200 | "json-stringify-safe": { 201 | "version": "5.0.1", 202 | "resolved": "http://registry.npm.taobao.org/json-stringify-safe/download/json-stringify-safe-5.0.1.tgz", 203 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" 204 | }, 205 | "jsprim": { 206 | "version": "1.4.1", 207 | "resolved": "http://registry.npm.taobao.org/jsprim/download/jsprim-1.4.1.tgz", 208 | "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", 209 | "requires": { 210 | "assert-plus": "1.0.0", 211 | "extsprintf": "1.3.0", 212 | "json-schema": "0.2.3", 213 | "verror": "1.10.0" 214 | } 215 | }, 216 | "mime-db": { 217 | "version": "1.37.0", 218 | "resolved": "http://registry.npm.taobao.org/mime-db/download/mime-db-1.37.0.tgz", 219 | "integrity": "sha1-C2oM5v2+lXbiXx8tL96IMNwK0Ng=" 220 | }, 221 | "mime-types": { 222 | "version": "2.1.21", 223 | "resolved": "http://registry.npm.taobao.org/mime-types/download/mime-types-2.1.21.tgz", 224 | "integrity": "sha1-KJlaoey3cHQv5q5+WPkYHHRLP5Y=", 225 | "requires": { 226 | "mime-db": "~1.37.0" 227 | } 228 | }, 229 | "oauth-sign": { 230 | "version": "0.9.0", 231 | "resolved": "http://registry.npm.taobao.org/oauth-sign/download/oauth-sign-0.9.0.tgz", 232 | "integrity": "sha1-R6ewFrqmi1+g7PPe4IqFxnmsZFU=" 233 | }, 234 | "performance-now": { 235 | "version": "2.1.0", 236 | "resolved": "http://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz", 237 | "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" 238 | }, 239 | "psl": { 240 | "version": "1.1.29", 241 | "resolved": "http://registry.npm.taobao.org/psl/download/psl-1.1.29.tgz", 242 | "integrity": "sha1-YPWA02AXC7cip5fMcEQR5tqFDGc=" 243 | }, 244 | "punycode": { 245 | "version": "1.4.1", 246 | "resolved": "http://registry.npm.taobao.org/punycode/download/punycode-1.4.1.tgz", 247 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" 248 | }, 249 | "qs": { 250 | "version": "6.5.2", 251 | "resolved": "http://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz", 252 | "integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY=" 253 | }, 254 | "random-int": { 255 | "version": "1.0.0", 256 | "resolved": "http://registry.npm.taobao.org/random-int/download/random-int-1.0.0.tgz", 257 | "integrity": "sha1-5qLtNEisnGZGoGV0Q7HBUhWS7Qg=" 258 | }, 259 | "request": { 260 | "version": "2.88.0", 261 | "resolved": "http://registry.npm.taobao.org/request/download/request-2.88.0.tgz", 262 | "integrity": "sha1-nC/KT301tZLv5Xx/ClXoEFIST+8=", 263 | "requires": { 264 | "aws-sign2": "~0.7.0", 265 | "aws4": "^1.8.0", 266 | "caseless": "~0.12.0", 267 | "combined-stream": "~1.0.6", 268 | "extend": "~3.0.2", 269 | "forever-agent": "~0.6.1", 270 | "form-data": "~2.3.2", 271 | "har-validator": "~5.1.0", 272 | "http-signature": "~1.2.0", 273 | "is-typedarray": "~1.0.0", 274 | "isstream": "~0.1.2", 275 | "json-stringify-safe": "~5.0.1", 276 | "mime-types": "~2.1.19", 277 | "oauth-sign": "~0.9.0", 278 | "performance-now": "^2.1.0", 279 | "qs": "~6.5.2", 280 | "safe-buffer": "^5.1.2", 281 | "tough-cookie": "~2.4.3", 282 | "tunnel-agent": "^0.6.0", 283 | "uuid": "^3.3.2" 284 | } 285 | }, 286 | "safe-buffer": { 287 | "version": "5.1.2", 288 | "resolved": "http://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz", 289 | "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=" 290 | }, 291 | "safer-buffer": { 292 | "version": "2.1.2", 293 | "resolved": "http://registry.npm.taobao.org/safer-buffer/download/safer-buffer-2.1.2.tgz", 294 | "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=" 295 | }, 296 | "sshpk": { 297 | "version": "1.15.2", 298 | "resolved": "http://registry.npm.taobao.org/sshpk/download/sshpk-1.15.2.tgz", 299 | "integrity": "sha1-yUbWvZsaOdDoY1dj9SQtbtbctik=", 300 | "requires": { 301 | "asn1": "~0.2.3", 302 | "assert-plus": "^1.0.0", 303 | "bcrypt-pbkdf": "^1.0.0", 304 | "dashdash": "^1.12.0", 305 | "ecc-jsbn": "~0.1.1", 306 | "getpass": "^0.1.1", 307 | "jsbn": "~0.1.0", 308 | "safer-buffer": "^2.0.2", 309 | "tweetnacl": "~0.14.0" 310 | } 311 | }, 312 | "tough-cookie": { 313 | "version": "2.4.3", 314 | "resolved": "http://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.4.3.tgz", 315 | "integrity": "sha1-U/Nto/R3g7CSWvoG/587FlKA94E=", 316 | "requires": { 317 | "psl": "^1.1.24", 318 | "punycode": "^1.4.1" 319 | } 320 | }, 321 | "tunnel-agent": { 322 | "version": "0.6.0", 323 | "resolved": "http://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.6.0.tgz", 324 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", 325 | "requires": { 326 | "safe-buffer": "^5.0.1" 327 | } 328 | }, 329 | "tweetnacl": { 330 | "version": "0.14.5", 331 | "resolved": "http://registry.npm.taobao.org/tweetnacl/download/tweetnacl-0.14.5.tgz", 332 | "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" 333 | }, 334 | "uuid": { 335 | "version": "3.3.2", 336 | "resolved": "http://registry.npm.taobao.org/uuid/download/uuid-3.3.2.tgz", 337 | "integrity": "sha1-G0r0lV6zB3xQHCOHL8ZROBFYcTE=" 338 | }, 339 | "verror": { 340 | "version": "1.10.0", 341 | "resolved": "http://registry.npm.taobao.org/verror/download/verror-1.10.0.tgz", 342 | "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", 343 | "requires": { 344 | "assert-plus": "^1.0.0", 345 | "core-util-is": "1.0.2", 346 | "extsprintf": "^1.2.0" 347 | } 348 | } 349 | } 350 | } 351 | -------------------------------------------------------------------------------- /cloudfunctions/getData/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | ajv@^5.3.0: 6 | version "5.5.2" 7 | resolved "http://registry.npm.taobao.org/ajv/download/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" 8 | integrity sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU= 9 | dependencies: 10 | co "^4.6.0" 11 | fast-deep-equal "^1.0.0" 12 | fast-json-stable-stringify "^2.0.0" 13 | json-schema-traverse "^0.3.0" 14 | 15 | asn1@~0.2.3: 16 | version "0.2.4" 17 | resolved "http://registry.npm.taobao.org/asn1/download/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" 18 | integrity sha1-jSR136tVO7M+d7VOWeiAu4ziMTY= 19 | dependencies: 20 | safer-buffer "~2.1.0" 21 | 22 | assert-plus@1.0.0, assert-plus@^1.0.0: 23 | version "1.0.0" 24 | resolved "http://registry.npm.taobao.org/assert-plus/download/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 25 | integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= 26 | 27 | asynckit@^0.4.0: 28 | version "0.4.0" 29 | resolved "http://registry.npm.taobao.org/asynckit/download/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 30 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= 31 | 32 | aws-sign2@~0.7.0: 33 | version "0.7.0" 34 | resolved "http://registry.npm.taobao.org/aws-sign2/download/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" 35 | integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= 36 | 37 | aws4@^1.8.0: 38 | version "1.8.0" 39 | resolved "http://registry.npm.taobao.org/aws4/download/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" 40 | integrity sha1-8OAD2cqef1nHpQiUXXsu+aBKVC8= 41 | 42 | bcrypt-pbkdf@^1.0.0: 43 | version "1.0.2" 44 | resolved "http://registry.npm.taobao.org/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" 45 | integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= 46 | dependencies: 47 | tweetnacl "^0.14.3" 48 | 49 | caseless@~0.12.0: 50 | version "0.12.0" 51 | resolved "http://registry.npm.taobao.org/caseless/download/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" 52 | integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= 53 | 54 | co@^4.6.0: 55 | version "4.6.0" 56 | resolved "http://registry.npm.taobao.org/co/download/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" 57 | integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= 58 | 59 | combined-stream@^1.0.6, combined-stream@~1.0.6: 60 | version "1.0.7" 61 | resolved "http://registry.npm.taobao.org/combined-stream/download/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" 62 | integrity sha1-LR0kMXr7ir6V1tLAsHtXgTU52Cg= 63 | dependencies: 64 | delayed-stream "~1.0.0" 65 | 66 | core-util-is@1.0.2: 67 | version "1.0.2" 68 | resolved "http://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 69 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 70 | 71 | dashdash@^1.12.0: 72 | version "1.14.1" 73 | resolved "http://registry.npm.taobao.org/dashdash/download/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 74 | integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= 75 | dependencies: 76 | assert-plus "^1.0.0" 77 | 78 | deep-assign@^2.0.0: 79 | version "2.0.0" 80 | resolved "http://registry.npm.taobao.org/deep-assign/download/deep-assign-2.0.0.tgz#ebe06b1f07f08dae597620e3dd1622f371a1c572" 81 | integrity sha1-6+BrHwfwja5ZdiDj3RYi83GhxXI= 82 | dependencies: 83 | is-obj "^1.0.0" 84 | 85 | delayed-stream@~1.0.0: 86 | version "1.0.0" 87 | resolved "http://registry.npm.taobao.org/delayed-stream/download/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 88 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= 89 | 90 | ecc-jsbn@~0.1.1: 91 | version "0.1.2" 92 | resolved "http://registry.npm.taobao.org/ecc-jsbn/download/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" 93 | integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= 94 | dependencies: 95 | jsbn "~0.1.0" 96 | safer-buffer "^2.1.0" 97 | 98 | extend@~3.0.2: 99 | version "3.0.2" 100 | resolved "http://registry.npm.taobao.org/extend/download/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" 101 | integrity sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo= 102 | 103 | extsprintf@1.3.0: 104 | version "1.3.0" 105 | resolved "http://registry.npm.taobao.org/extsprintf/download/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" 106 | integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= 107 | 108 | extsprintf@^1.2.0: 109 | version "1.4.0" 110 | resolved "http://registry.npm.taobao.org/extsprintf/download/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" 111 | integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= 112 | 113 | fast-deep-equal@^1.0.0: 114 | version "1.1.0" 115 | resolved "http://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" 116 | integrity sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ= 117 | 118 | fast-json-stable-stringify@^2.0.0: 119 | version "2.0.0" 120 | resolved "http://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" 121 | integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= 122 | 123 | forever-agent@~0.6.1: 124 | version "0.6.1" 125 | resolved "http://registry.npm.taobao.org/forever-agent/download/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 126 | integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= 127 | 128 | form-data@~2.3.2: 129 | version "2.3.3" 130 | resolved "http://registry.npm.taobao.org/form-data/download/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" 131 | integrity sha1-3M5SwF9kTymManq5Nr1yTO/786Y= 132 | dependencies: 133 | asynckit "^0.4.0" 134 | combined-stream "^1.0.6" 135 | mime-types "^2.1.12" 136 | 137 | function-bind@^1.1.1: 138 | version "1.1.1" 139 | resolved "http://registry.npm.taobao.org/function-bind/download/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 140 | integrity sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0= 141 | 142 | getpass@^0.1.1: 143 | version "0.1.7" 144 | resolved "http://registry.npm.taobao.org/getpass/download/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" 145 | integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= 146 | dependencies: 147 | assert-plus "^1.0.0" 148 | 149 | har-schema@^2.0.0: 150 | version "2.0.0" 151 | resolved "http://registry.npm.taobao.org/har-schema/download/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" 152 | integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= 153 | 154 | har-validator@~5.1.0: 155 | version "5.1.0" 156 | resolved "http://registry.npm.taobao.org/har-validator/download/har-validator-5.1.0.tgz#44657f5688a22cfd4b72486e81b3a3fb11742c29" 157 | integrity sha1-RGV/VoiiLP1LckhugbOj+xF0LCk= 158 | dependencies: 159 | ajv "^5.3.0" 160 | har-schema "^2.0.0" 161 | 162 | has@^1.0.1: 163 | version "1.0.3" 164 | resolved "http://registry.npm.taobao.org/has/download/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 165 | integrity sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y= 166 | dependencies: 167 | function-bind "^1.1.1" 168 | 169 | http-signature@~1.2.0: 170 | version "1.2.0" 171 | resolved "http://registry.npm.taobao.org/http-signature/download/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" 172 | integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= 173 | dependencies: 174 | assert-plus "^1.0.0" 175 | jsprim "^1.2.2" 176 | sshpk "^1.7.0" 177 | 178 | is-obj@^1.0.0: 179 | version "1.0.1" 180 | resolved "http://registry.npm.taobao.org/is-obj/download/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" 181 | integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= 182 | 183 | is-regex@^1.0.4: 184 | version "1.0.4" 185 | resolved "http://registry.npm.taobao.org/is-regex/download/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" 186 | integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= 187 | dependencies: 188 | has "^1.0.1" 189 | 190 | is-typedarray@~1.0.0: 191 | version "1.0.0" 192 | resolved "http://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 193 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= 194 | 195 | isstream@~0.1.2: 196 | version "0.1.2" 197 | resolved "http://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 198 | integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= 199 | 200 | jsbn@~0.1.0: 201 | version "0.1.1" 202 | resolved "http://registry.npm.taobao.org/jsbn/download/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 203 | integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= 204 | 205 | json-schema-traverse@^0.3.0: 206 | version "0.3.1" 207 | resolved "http://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" 208 | integrity sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A= 209 | 210 | json-schema@0.2.3: 211 | version "0.2.3" 212 | resolved "http://registry.npm.taobao.org/json-schema/download/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 213 | integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= 214 | 215 | json-stringify-safe@~5.0.1: 216 | version "5.0.1" 217 | resolved "http://registry.npm.taobao.org/json-stringify-safe/download/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 218 | integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= 219 | 220 | jsprim@^1.2.2: 221 | version "1.4.1" 222 | resolved "http://registry.npm.taobao.org/jsprim/download/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" 223 | integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= 224 | dependencies: 225 | assert-plus "1.0.0" 226 | extsprintf "1.3.0" 227 | json-schema "0.2.3" 228 | verror "1.10.0" 229 | 230 | mime-db@~1.37.0: 231 | version "1.37.0" 232 | resolved "http://registry.npm.taobao.org/mime-db/download/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8" 233 | integrity sha1-C2oM5v2+lXbiXx8tL96IMNwK0Ng= 234 | 235 | mime-types@^2.1.12, mime-types@~2.1.19: 236 | version "2.1.21" 237 | resolved "http://registry.npm.taobao.org/mime-types/download/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96" 238 | integrity sha1-KJlaoey3cHQv5q5+WPkYHHRLP5Y= 239 | dependencies: 240 | mime-db "~1.37.0" 241 | 242 | oauth-sign@~0.9.0: 243 | version "0.9.0" 244 | resolved "http://registry.npm.taobao.org/oauth-sign/download/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" 245 | integrity sha1-R6ewFrqmi1+g7PPe4IqFxnmsZFU= 246 | 247 | performance-now@^2.1.0: 248 | version "2.1.0" 249 | resolved "http://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" 250 | integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= 251 | 252 | psl@^1.1.24: 253 | version "1.1.29" 254 | resolved "http://registry.npm.taobao.org/psl/download/psl-1.1.29.tgz#60f580d360170bb722a797cc704411e6da850c67" 255 | integrity sha1-YPWA02AXC7cip5fMcEQR5tqFDGc= 256 | 257 | punycode@^1.4.1: 258 | version "1.4.1" 259 | resolved "http://registry.npm.taobao.org/punycode/download/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" 260 | integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= 261 | 262 | qs@~6.5.2: 263 | version "6.5.2" 264 | resolved "http://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" 265 | integrity sha1-yzroBuh0BERYTvFUzo7pjUA/PjY= 266 | 267 | request@^2.87.0: 268 | version "2.88.0" 269 | resolved "http://registry.npm.taobao.org/request/download/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" 270 | integrity sha1-nC/KT301tZLv5Xx/ClXoEFIST+8= 271 | dependencies: 272 | aws-sign2 "~0.7.0" 273 | aws4 "^1.8.0" 274 | caseless "~0.12.0" 275 | combined-stream "~1.0.6" 276 | extend "~3.0.2" 277 | forever-agent "~0.6.1" 278 | form-data "~2.3.2" 279 | har-validator "~5.1.0" 280 | http-signature "~1.2.0" 281 | is-typedarray "~1.0.0" 282 | isstream "~0.1.2" 283 | json-stringify-safe "~5.0.1" 284 | mime-types "~2.1.19" 285 | oauth-sign "~0.9.0" 286 | performance-now "^2.1.0" 287 | qs "~6.5.2" 288 | safe-buffer "^5.1.2" 289 | tough-cookie "~2.4.3" 290 | tunnel-agent "^0.6.0" 291 | uuid "^3.3.2" 292 | 293 | safe-buffer@^5.0.1, safe-buffer@^5.1.2: 294 | version "5.1.2" 295 | resolved "http://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 296 | integrity sha1-mR7GnSluAxN0fVm9/St0XDX4go0= 297 | 298 | safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: 299 | version "2.1.2" 300 | resolved "http://registry.npm.taobao.org/safer-buffer/download/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 301 | integrity sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo= 302 | 303 | sshpk@^1.7.0: 304 | version "1.15.1" 305 | resolved "http://registry.npm.taobao.org/sshpk/download/sshpk-1.15.1.tgz#b79a089a732e346c6e0714830f36285cd38191a2" 306 | integrity sha1-t5oImnMuNGxuBxSDDzYoXNOBkaI= 307 | dependencies: 308 | asn1 "~0.2.3" 309 | assert-plus "^1.0.0" 310 | bcrypt-pbkdf "^1.0.0" 311 | dashdash "^1.12.0" 312 | ecc-jsbn "~0.1.1" 313 | getpass "^0.1.1" 314 | jsbn "~0.1.0" 315 | safer-buffer "^2.0.2" 316 | tweetnacl "~0.14.0" 317 | 318 | tcb-admin-node@1.1.9: 319 | version "1.1.9" 320 | resolved "http://registry.npm.taobao.org/tcb-admin-node/download/tcb-admin-node-1.1.9.tgz#4dcc7472bc0b19de9c2e460a020f18e22936465a" 321 | integrity sha1-Tcx0crwLGd6cLkYKAg8Y4ik2Rlo= 322 | dependencies: 323 | deep-assign "^2.0.0" 324 | is-regex "^1.0.4" 325 | request "^2.87.0" 326 | 327 | tough-cookie@~2.4.3: 328 | version "2.4.3" 329 | resolved "http://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" 330 | integrity sha1-U/Nto/R3g7CSWvoG/587FlKA94E= 331 | dependencies: 332 | psl "^1.1.24" 333 | punycode "^1.4.1" 334 | 335 | tslib@^1.9.3: 336 | version "1.9.3" 337 | resolved "http://registry.npm.taobao.org/tslib/download/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" 338 | integrity sha1-1+TdeSRdhUKMTX5IIqeZF5VMooY= 339 | 340 | tunnel-agent@^0.6.0: 341 | version "0.6.0" 342 | resolved "http://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 343 | integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= 344 | dependencies: 345 | safe-buffer "^5.0.1" 346 | 347 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 348 | version "0.14.5" 349 | resolved "http://registry.npm.taobao.org/tweetnacl/download/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 350 | integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= 351 | 352 | uuid@^3.3.2: 353 | version "3.3.2" 354 | resolved "http://registry.npm.taobao.org/uuid/download/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" 355 | integrity sha1-G0r0lV6zB3xQHCOHL8ZROBFYcTE= 356 | 357 | verror@1.10.0: 358 | version "1.10.0" 359 | resolved "http://registry.npm.taobao.org/verror/download/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" 360 | integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= 361 | dependencies: 362 | assert-plus "^1.0.0" 363 | core-util-is "1.0.2" 364 | extsprintf "^1.2.0" 365 | 366 | wx-server-sdk@^0.0.22: 367 | version "0.0.22" 368 | resolved "http://registry.npm.taobao.org/wx-server-sdk/download/wx-server-sdk-0.0.22.tgz#029ac863c64be05044c674d9d2465eddf0b1f8dc" 369 | integrity sha1-AprIY8ZL4FBExnTZ0kZe3fCx+Nw= 370 | dependencies: 371 | tcb-admin-node "1.1.9" 372 | tslib "^1.9.3" 373 | --------------------------------------------------------------------------------