Giter Site home page Giter Site logo

mpvue-netbar's Introduction

mpvue-netbar

mpvue 组件化开发 地图组件系列

设计初衷

  本人喜欢上网,穿梭各大城市之间时 眼光不光停留在山水高楼之间 也会驻扎于网咖,因为没钱住旅馆 那仿佛就像我的家,我的港湾,正好基于mpvue就想开发一套找网咖的小程序 1.0版本:在借鉴了大神小明找厕所小程序版后开发的,具体功能如下:
1.定位附近网咖
2.展示网咖信息
3.点击绘制步行路线
4.手机定位导航
emmmm, 我知道这段开门见山的话很拙 没事 感兴趣你继续往下瞅瞅~

项目入口

初始化

# 全局安装 vue-cli
$ npm install --global vue-cli

# 创建一个基于 mpvue-quickstart 模板的新项目
$ vue init mpvue/mpvue-quickstart mpvue-network

# 安装依赖
$ cd mpvue-network
$ npm install  或者 cnpm install (淘宝镜像)
# 启动构建
$ npm run dev

项目主结构

vue 组件化

│  
├─api                         //接口 js 支持wx promise写法
│      requestIntercept.js    
│      wxp.js
│      
├─components                  //组件
│      address.vue            //展示bar地址信息组件
│      net-fixed.vue          //定位按钮组件 用于跳转
│      net-map.vue            //地图组件基于wx map
│      permis.vue             //权限组件基于 wx 权限
│      
├─pages                       //小程序页面
│  ├─goBar                    //Route 步行规划页面
│  │      index.vue
│  │      main.js             
│  │      
│  └─index                    //项目主页面 数据的分配
│          index.vue
│          main.js
│          
├─store                       // vuex
│      action.js
│      getters.js
│      index.js
│      mutation-types.js
│      mutations.js
│      state.js
├─utils                       // 工具类
│
│  App.vue                    // 不解释
│  bus.js                     // Vue Bus
│  global.js                  // Vue.prototype 拓展 wx api 
│  main.js                    // mpvue 入口

设计流程图

js部分

  这是 pages下index的主页面 组件**编写, 数据采用vuex存储 && 组件通信

<div class="container">
    <div v-if="permit">
      <net-map
        :longitude="longitude"
        :latitude="latitude"
        :search="search">
      </net-map>
      <net-address></net-address>
      <net-fixed :cname="fxClass"
                 typeInfo="info"
                 :fxShow="fxShow"
                 @click="goDetail">

      </net-fixed>
    </div>
    <permission
      @changePermit="changePermit"
      @setLocation="setLocation"
      @getUserInfo="getUserInfo"
      @openSetting="openSetting">
    </permission>
  </div>

总结

  相对于mpvue 就是算踩坑了 里面有很多意想不到的问题的,对于该项目还是总结以下几点:
1.在mpvue里尽量不要用小程序生命周期。
2.在mpvue里没有router每个页面需要配置main.js以及接口交互最好用flyio,如果对这几点深感洁癖的追求完美的可以用大神的插件:

  • mpvue-entry - 集中式页面配置,不再需要重复编辑各页面的 main.js 文件
  • mpvue-router-patch - 在 mpvue 中使用 vue-router 兼容的路由写法
  • fly - 支持所有JavaScript运行时请求转发和基于Promise的HTTP客户端

3.模块化**很重要 写之前整理好
4.webpack 解析wx 需要配置,mpvue框架 组件化css 需要配置 等等都需要注意 有问题请看mpvue的Issues
5.mpvue 数据data方面不能放过多数据 要把业务和组件抽离分开
6.真的意识到写好项目不难,但是写出一个可维护且高质量的代码真的很难。 7.该项目目前是1.0版本, 默认只是查询附近网吧功能,实际上组件已经抽离出来 可通过父组件传值改变搜索的内容,后期还会逐步升级,希望通过爬虫获取详情数据,敬请期待。

mpvue-netbar's People

Contributors

dave-wind avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

mpvue-netbar's Issues

大神,您是怎么把腾讯地图整合到mpvue里面的?能指点下么

问题复现步骤:

1.通过vue指令安装mpvue
2.在src目录下的utils文件夹中新建map目录并存放好用于微信小程序的qqmap-wx-jssdk.min.js
3.回到pages目录在index页面引入腾讯地图组件qqmap-wx-jssdk.min.js,代码如下
var QQMapWX = require('../../utils/map/qqmap-wx-jssdk.js');
var qqmapsdk;
4.在页面生命周期created或者mounted里面添加实例化
// 实例化API核心类 qqmapsdk = new QQMapWX({ key: 'DZBBZ-2XSCW-U6IRS-OINHG-32MZZ-6EFF5' });

5.使用qqmapsdk调用组件各种功能
期望的表现:

[能够使用实例化的腾讯地图组件,进行城市,地址,周边信息查询]

观察到的表现:

出现两个报错
1.thirdScriptError
sdk uncaught third Error
Cannot assign to read only property 'exports' of object '#'
TypeError: Cannot assign to read only property 'exports' of object '#'
at Object. (http://127.0.0.1:36311/appservice/static/js/pages/map/main.js:671:28)
at Object._ (http://127.0.0.1:36311/appservice/static/js/pages/map/main.js:673:12)
at webpack_require (http://127.0.0.1:36311/appservice/static/js/manifest.js:71:31)
at Object._ (http://127.0.0.1:36311/appservice/static/js/pages/map/main.js:117:23)
at webpack_require (http://127.0.0.1:36311/appservice/static/js/manifest.js:71:31)
at Object._ (http://127.0.0.1:36311/appservice/static/js/pages/map/main.js:26:128)
at webpack_require (http://127.0.0.1:36311/appservice/static/js/manifest.js:71:31)
at Object._ (http://127.0.0.1:36311/appservice/static/js/pages/map/main.js:13:72)
at webpack_require (http://127.0.0.1:36311/appservice/static/js/manifest.js:71:31)
at Object.webpackJsonpCallback [as webpackJsonp] (http://127.0.0.1:36311/appservice/static/js/manifest.js:38:26)
2. pages/map/main.js 出现脚本错误或者未正确调用 Page()

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.