├── 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 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/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 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
16 |
17 |
18 |
19 |
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 |
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 |
86 |
--------------------------------------------------------------------------------
/miniprogram/pages/my/my/my.wxml:
--------------------------------------------------------------------------------
1 |
2 |
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 |
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("") == 0) {
63 | match = html.match(endTag);
64 |
65 | if (match) {
66 | html = html.substring(match[0].length);
67 | match[0].replace(endTag, parseEndTag);
68 | chars = false;
69 | }
70 |
71 | // start tag
72 | } else if (html.indexOf("<") == 0) {
73 | match = html.match(startTag);
74 |
75 | if (match) {
76 | html = html.substring(match[0].length);
77 | match[0].replace(startTag, parseStartTag);
78 | chars = false;
79 | }
80 | }
81 |
82 | if (chars) {
83 | index = html.indexOf("<");
84 | var text = ''
85 | while (index === 0) {
86 | text += "<";
87 | html = html.substring(1);
88 | index = html.indexOf("<");
89 | }
90 | text += index < 0 ? html : html.substring(0, index);
91 | html = index < 0 ? "" : html.substring(index);
92 |
93 | if (handler.chars)
94 | handler.chars(text);
95 | }
96 |
97 | } else {
98 |
99 | html = html.replace(new RegExp("([\\s\\S]*?)<\/" + stack.last() + "[^>]*>"), 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 |
27 |
28 |
29 | {{detail.content}}
30 |
31 |
32 |
33 |
52 |
53 |
54 |
55 |
56 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
119 |
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 | 
5 | 最近自己正做一个小程序,是基于小程序云开发的,在做小程序项目的时候使用云开发确实方便是很多。有关于云开发后面我也会讲到,毕竟这个项目就是使用的云开发,更多的有关云开发内容有需要的小伙伴可以去看官方文档,
6 | 云开发文档。
7 |
8 | 项目的开发也有一段时间了虽然只是实现了部分功能,但是我还是忍不住来写篇文章来分享一下这段时间的成果和项目中遇到的问题,后面我也会逐步的完善项目。项目源码在github上,如果小伙伴们觉得不错可以给个star,仿头条项目地址。
9 | ### 项目详解
10 | 下面将详细的介绍项目,虽然使用的云开发节省了很多时间但是前后端的东西都需要做工作量有点大,在这短时间内我没有完成整个项目,只是实现了首页,详情页,和登录页等主要功能
11 | 我首先将界面需要获取数据的地方设计好数据库为后面数据的获取做准备,数据库使用的是小程序云开发的MongoDB数据库,将数据存储在云数据库上,并且使用云函数来操作数据库
12 | #### 新闻首页
13 | 首页相对于详情页要简单一些,在头部使用了一个搜索框和搜索按钮,然后下面是一个tab标签栏含有多个标签页,每一个标签页显示标签对应有关的新闻信。在标签页的右边有一个按钮,点击按钮会出现一个弹出框。这里有个特别的地方,就是在推荐页的顶部设置了一个置顶的新闻
14 |
15 | 
16 | 输入框绑定了一个tap事件,使得在点击输入框但不输入值的时候改变placeholder的值。
17 | 在tab栏的右边有一个按钮点击按钮将会出现一个弹出层,前面的gif中有演示,是新闻种类的选择框,点击关闭按钮可以关闭弹出层
18 | 最后就是首页最重要的新闻显示页面了,为了节省项目的时间,这里使用了有赞的框架vant-weapp有兴趣的小伙伴可以去了解下。在tab标签栏设置了6个标签页,但是只会显示4个标签页想要显示其他的可以左右拖动标签栏,这里将推荐页设置为了默认激活的。由于每个每个标签页代码基本都相同的,只是在推荐页是的第一栏是置顶信息,还有就是获取的数据不同,有关数据获取在下面介绍代码将会细讲,为了提高代码的复用,这里使用了模板,将复用的代码写在写在另外的文件下,使用时直接调用就可以了。
19 | 每个标签对应都创建了一个集合,这里我为置顶新闻也另外创建了一个集合,并且给每条信息设计好需要用的字段方便自己获取数据和使用数据,由于云数据库是可以导入json文件或者csv文件,并且每个新闻也都需要上拉加载数据需要更多的数据,自己造数据费时间又麻烦,所以我这里自己写了爬虫爬取自己需要的数据并保存到json文件中,直接将数据导入到数据库中。
20 | 这样设计数据库也是使得从数据库获取数据方便了一些。写一个module函数就可以获取每个标签的数据。
21 | 每条数据的字段如下,其中news_id起到很重要的作用,将首页的每条新闻和对应的详情页面联系起来。
22 | 
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 |
114 |
115 |
116 |
117 |
118 | ```
119 |
120 | ```
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
136 |
137 |
138 |
139 |
140 | ```
141 | 这里用的就是MVVM思想,将数据绑定到UI界面,在js文件中获取到数据后,这里将数据拿过来使用。
142 | 这里由于每条新闻的图片数量是不确定的,并且最多只显示三张图片。所以直接固定了3个image标签并且固定了image的大小,当图片没有的时候就不会显示图片。
143 | #### 详情页
144 | 很多在首页讲过的东西我在详情页也就不再多说了,大家有不懂可以去看源码,毕竟讲那么多废话就是浪费时间,我尽量挑出最精彩的部分来写。
145 | 
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 | 
169 | 点击转发按钮会出现一个弹窗,可以选择需要转发到的渠道,并且给弹出层背景添加了蒙层效果,只有在点击蒙层或者取消按钮弹出框才会消失。
170 | 这里只实现了转发到微信的功能,只需要调用一下微信小程序的onShareAppMessage接口就可以搞定,当点击微信的图标后可以转发给朋友或者微信群。
171 |
172 | 
173 | 收藏按钮我就是用了一个wx:if来判断显示的是那个image点击一个队bool值取反。
174 | 点击评论按钮可以从直接跳转到评论的顶部,使用一个scrollview将整个详情包裹住然后
175 | 使用它的一个属性scroll-into-view当点击底部的评论按钮时将评论部分的id赋值给scroll-into-view就可以实现锚点跳转了。在这个地方我踩了一个坑,没有给scroll-into-view设置一个高度导致效果一直出不来,由于详情页需要评论页面高度是改变的,所以直接给它设置一个100vh就可以完美搞定这个地方的锚点跳转了。
176 | 最后就是输入框了点击输入框或者左边的输入按钮就可以弹出评论输入框了,当输入框内有值的时候发布按钮会改变颜色。当未授权登录将无法发布评论
177 | 
178 | 这里就需要在我的页面点击登录进行授权,获取获取用户信息。
179 | 登录功能的实现在页面登录按钮设置属性为open-type=getUserInfo,bindgetuserinfo=getUserInfo
180 | 点击登录按钮授权登录将会获取用户信息,并将用户信息保存到全局上,这样在详情页面便可以判断或者使用用户信息。
181 | 
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 | 
226 | #### 开始在更新数据库的时候我没有使用云函数,而是在js中直接更新数据,获得返回信息显示是请求成功但是update数为0,但是当我到数据库中查看是发现数据并没有更新成功,查了一下文档发现是权限的问题,因为数据的修改只能是管理者或者数据的创建者,而数据又是我自己手动输入到云数据库的,在js中直接更新的数据库的时候不是创建者而在小程序端又没有管理者权限,所以没有权限修改数据。既然无法是创建者想要修改数据只能是管理员了,所以这里我使用了云函数来修改数据。说到这里大家应该意识到了云函数的权限是什么级别了吧,这里给大家看下官方文档的说明。
227 | 
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 |
--------------------------------------------------------------------------------