一文带你使用Vue完成移动端(apk)项目

11 篇文章 3 订阅
订阅专栏

我们项目使用的是Vue和Vant组件,详情都可以看官网哦

Vant

Vue

完整项目视频链接

目录结构:
在这里插入图片描述

基本配置

入口文件main.js

首先做一个引入
在这里插入图片描述
我们的Vant UI组件是按需引入,而Element UI是全部引入
所以引用方式也不同
在这里插入图片描述
在这里插入图片描述
main.js完整代码

// 引入Vue
import Vue from 'vue'
// 引入根组件App.vue
import App from './App.vue'
// 引入router路由
import router from './router'
import store from './store'
// 引入axios
import axios from 'axios'
// 引入ElementUI
import ElementUI from 'element-ui'
// 引入ElementUI css
import 'element-ui/lib/theme-chalk/index.css'
// 引入Vant配置js
import 'amfe-flexible/index.js'
// 这里引入需要的Vant组件
import {
  Rate, Popup, Form, Field, GoodsActionButton, GoodsActionIcon, GoodsAction, Sidebar,
  SidebarItem, Image as VanImage, Skeleton, SwipeCell, Col, Row,
  CountDown, Lazyload, SwipeItem, Swipe, Sku, AddressList, Area,
  AddressEdit, NavBar, SubmitBar, CheckboxGroup, Checkbox, Card,
  Image, GridItem, Grid, Cell, Switch, Button, Search, Tab, Tabs,
  Tabbar, TabbarItem, Icon, DropdownMenu, DropdownItem, Toast, CellGroup,
  Overlay, PasswordInput, NumberKeyboard, Loading, ShareSheet, Dialog, ImagePreview, Uploader
} from 'vant'
// 引入vuex
Vue.config.productionTip = false
// 这里引用Vant组件
Vue.use(Search)
  .use(Rate)
  .use(Popup)
  .use(ImagePreview)
  .use(Uploader)
  .use(Dialog)
  .use(ShareSheet)
  .use(Loading)
  .use(Overlay)
  .use(PasswordInput)
  .use(NumberKeyboard)
  .use(Form)
  .use(CellGroup)
  .use(Toast)
  .use(Field)
  .use(GoodsActionButton)
  .use(GoodsActionIcon)
  .use(GoodsAction)
  .use(Sidebar)
  .use(SidebarItem)
  .use(VanImage)
  .use(Skeleton)
  .use(SwipeCell)
  .use(Col)
  .use(Row)
  .use(CountDown)
  .use(Lazyload)
  .use(SwipeItem)
  .use(Swipe)
  .use(Sku)
  .use(AddressList)
  .use(Area)
  .use(AddressEdit)
  .use(NavBar)
  .use(SubmitBar)
  .use(CheckboxGroup)
  .use(Checkbox)
  .use(Card)
  .use(Image)
  .use(GridItem)
  .use(Cell)
  .use(Grid)
  .use(Switch)
  .use(Button)
  .use(DropdownItem)
  .use(DropdownMenu)
  .use(Icon)
  .use(Tab)
  .use(Tabs)
  .use(Tabbar)
  .use(TabbarItem)
// 全局引用ElementUI组件
Vue.use(ElementUI)
// 设置axios挂载点
Vue.prototype.$http = axios
// 配置axios的基准地址
axios.defaults.baseURL = 'http://127.0.0.1:3000/api'
// 设置开发模式和非开发模式引用后台地址
axios.defaults.baseURL = process.env.NODE_ENV === 'development' ? 'http://127.0.0.1:3000/api' : '/api'

new Vue({
  store,
  router,
  render: h => h(App)
}).$mount('#app')

App.vue

在这里插入图片描述
tabbar设置,我们引用的Vant组件中tabbar组件
van-tabbar官网属性介绍看这即可
在这里插入图片描述
我们定义了一个数组Showlist,这是我们设置是否现在tabbar,如果name名和数组的内容可以匹配到就显示,否则不显示,watch就是来监听的
在这里插入图片描述

完整代码

<template>
  <div id="app">
    <router-view />
    <div class="after"></div>
    <van-tabbar
      v-model="active"
      fixed
      border
      active-color="#bb54f6"
      route
      v-show="isShowNav"
    >
      <van-tabbar-item class="iconfont icon-rhome-fill" to="/home">
        首页
      </van-tabbar-item>
      <van-tabbar-item
        class="iconfont icon-leimupinleifenleileibie2"
        to="/category"
      >
        分类
      </van-tabbar-item>
      <van-tabbar-item class="iconfont icon-u138" to="/find">
        发现
      </van-tabbar-item>
      <van-tabbar-item class="iconfont icon-qicheqianlian-" to="/shopping">
        购物车
      </van-tabbar-item>
      <van-tabbar-item class="iconfont icon-wodedangxuan" to="/myuser">
        我的
      </van-tabbar-item>
    </van-tabbar>
  </div>
</template>
<script>
export default {
  data () {
    return {
      active: 0,
      isShowNav: true,
      Showlist: ['Home', 'Shoping', 'Find', 'Category', 'MyUser']
    }
  },
  watch: {
    $route (to, from) {
      if (this.Showlist.includes(to.name)) {
        this.isShowNav = true
      } else if (to.name === '') {
        this.isShowNav = false
      } else {
        this.isShowNav = false
      }
    }
  }
}
</script>
<style>
#app {
  width: 100%;
  height: 100%;
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
}
html,
body {
  width: 100%;
  height: 100%;
}
</style>

首页

首页
在这里插入图片描述

头部搜索栏

在这里插入图片描述
在这里插入图片描述

主体

使用的是Vant组件的search组件
官网介绍
在这里插入图片描述
这一块都是对应的下面每个模块内容都是嵌套在里面的
tab

优选模块

轮播图

在这里插入图片描述
我们在data中定义了轮播图所需要的图片变量images 我们在这循环输出即可
在这里插入图片描述
轮播图的图片我是写死的,有需要可以自己去获取一下哦

十宫格

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

秒杀

在这里插入图片描述
在这里插入图片描述

获取一天的倒计时
在这里插入图片描述
然后在created函数中调用

商品

在这里插入图片描述
在这里插入图片描述

请求接口获取所以商品信息(也需要在created函数中调用哦)
在这里插入图片描述
其他模块都是类似的

完整代码:

<template>
  <div class="home">
    <div class="header">
      <van-search
        v-model="value"
        show-action
        shape="round"
        background="#890bf2"
        placeholder="请输入搜索关键词"
        @search="search"
      >
        <template #action>
          <i
            class="iconfont icon-xiaoxi"
            style="font-size: 30px; color: white"
          ></i>
        </template>
      </van-search>
      <van-tabs
        v-model="actives"
        background="#890bf2"
        title-inactive-color="white"
        title-active-color="white"
        color="#fff"
      >
        <van-tab title="优选" :width="500">
          <!-- 轮播图 -->
          <van-swipe :autoplay="3000" class="my-swipe1">
            <van-swipe-item v-for="(image, index) in images" :key="index">
              <img v-lazy="image" />
            </van-swipe-item>
          </van-swipe>
          <!-- 十宫格部分 -->
          <van-grid :column-num="5">
            <van-grid-item v-for="value in gird" :key="value.id">
              <div @click="xxx(value.name)">
                <i :class="value.icon" style="font-size: 35px; color: red"> </i>
              </div>
              <b style="font-size: 16px">{{ value.name }}</b>
            </van-grid-item>
          </van-grid>
          <!-- 秒杀部分 -->
          <div class="supply">
            <div class="seckill">
              <van-count-down :time="time" style="font-size: 14px; color: red">
                <template #default="timeData">
                  <span>距离秒杀结束时间:</span>
                  <span class="block">{{ timeData.hours }}</span>
                  <span class="colon">:</span>
                  <span class="block">{{ timeData.minutes }}</span>
                  <span class="colon">:</span>
                  <span class="block">{{ timeData.seconds }}</span>
                </template>
              </van-count-down>
            </div>
            <div class="shop">
              <ul>
                <li
                  v-for="item in supplyShop"
                  :key="item.id"
                  @click="detailshop(item.id)"
                >
                  <img :src="item.shop_img" alt="" />
                </li>
              </ul>
            </div>
          </div>
          <!-- 商品 -->
          <div class="otherShop">
            <ul>
              <li
                v-for="item in otherShop"
                :key="item.id"
                @click="detailshop(item.id)"
              >
                <a href="JavaScript:;"><img :src="item.shop_img" alt="" /></a>
                <a href="JavaScript:;" style="color: #000"
                  ><p>
                    {{ item.shop_title }}
                  </p></a
                >
              </li>
            </ul>
          </div>
        </van-tab>
        <van-tab title="手机">
          <van-grid :column-num="4">
            <van-grid-item
              v-for="value in phoneimg"
              :key="value.id"
              icon="photo-o"
              text="文字"
            >
              <img :src="value.src" alt="" style="width: 50px; height: 30px" />
              <span style="font-size: 12px">{{ value.title }}</span>
            </van-grid-item>
          </van-grid>
          <div class="otherPhone">
            <ul>
              <li
                v-for="item in otherPhone"
                :key="item.id"
                @click="detailshop(item.id)"
              >
                <img :src="item.shop_img" alt="" />
                <p>
                  {{ item.shop_title }}
                </p>
              </li>
            </ul>
          </div>
        </van-tab>
        <van-tab title="运动">
          <van-grid :column-num="5">
            <van-grid-item
              v-for="value in motionimg"
              :key="value.id"
              icon="photo-o"
              text="文字"
            >
              <img :src="value.src" alt="" style="width: 50px; height: 30px" />
              <span style="font-size: 12px">{{ value.title }}</span>
            </van-grid-item>
          </van-grid>
          <div class="othermotion">
            <ul>
              <li
                v-for="item in othermotion"
                :key="item.id"
                @click="detailshop(item.id)"
              >
                <img :src="item.shop_img" alt="" />
                <p>
                  {{ item.shop_title }}
                </p>
              </li>
            </ul>
          </div>
        </van-tab>
        <van-tab title="美妆">
          <van-grid :column-num="5">
            <van-grid-item
              v-for="value in Makeupimg"
              :key="value.id"
              icon="photo-o"
              text="文字"
            >
              <img :src="value.src" alt="" style="width: 50px; height: 30px" />
              <span style="font-size: 12px">{{ value.title }}</span>
            </van-grid-item>
          </van-grid>
          <div class="otherMakeup">
            <ul>
              <li
                @click="detailshop(item.id)"
                v-for="item in otherMakeup"
                :key="item.id"
              >
                <img :src="item.shop_img" alt="" />
                <p>
                  {{ item.shop_title }}
                </p>
              </li>
            </ul>
          </div>
        </van-tab>
        <van-tab title="男鞋">
          <van-grid :column-num="5">
            <van-grid-item
              v-for="value in Menshopimg"
              :key="value.id"
              icon="photo-o"
              text="文字"
            >
              <img :src="value.src" alt="" style="width: 50px; height: 30px" />
              <span style="font-size: 12px">{{ value.title }}</span>
            </van-grid-item>
          </van-grid>
          <div class="otherMenshop">
            <ul>
              <li
                @click="detailshop(item.id)"
                v-for="item in otherMenshop"
                :key="item.id"
              >
                <img :src="item.shop_img" alt="" />
                <p>
                  {{ item.shop_title }}
                </p>
              </li>
            </ul>
          </div>
        </van-tab>
        <van-tab title="女鞋">
          <van-grid :column-num="5">
            <van-grid-item
              v-for="value in WoMenshopimg"
              :key="value.id"
              icon="photo-o"
              text="文字"
            >
              <img :src="value.src" alt="" style="width: 50px; height: 30px" />
              <span style="font-size: 12px">{{ value.title }}</span>
            </van-grid-item>
          </van-grid>
          <div class="otherWoMenshop">
            <ul>
              <li
                v-for="item in otherWoMenshop"
                :key="item.id"
                @click="detailshop(item.id)"
              >
                <img :src="item.shop_img" alt="" />
                <p>
                  {{ item.shop_title }}
                </p>
              </li>
            </ul>
          </div>
        </van-tab>
        <van-tab title="家具家居">
          <van-grid :column-num="5">
            <van-grid-item
              v-for="value in FurnishingImg"
              :key="value.id"
              icon="photo-o"
              text="文字"
            >
              <img :src="value.src" alt="" style="width: 50px; height: 30px" />
              <span style="font-size: 12px">{{ value.title }}</span>
            </van-grid-item>
          </van-grid>
          <div class="otherFurnishing">
            <ul>
              <li
                v-for="item in otherFurnishing"
                :key="item.id"
                @click="detailshop(item.id)"
              >
                <img :src="item.shop_img" alt="" />
                <p>
                  {{ item.shop_title }}
                </p>
              </li>
            </ul>
          </div>
        </van-tab>
      </van-tabs>
    </div>
  </div>
</template>
<script>
export default {
  data () {
    return {
      value: '',
      actives: 0,
      time: '',
      // 轮播图图片
      images: [
        'http://m.360buyimg.com/mobilecms/s700x280_jfs/t1/165251/27/8980/194778/60409b0aE6d2ff3df/ca0c808809dbbfa8.jpg!q70.jpg.dpg',
        'http://imgcps.jd.com/ling4/10027168852797/54mb5LuU6KOk5Zyw5pa554m56Imy/6ZKc5oOg55av5oqi/p-5c17126882acdd181dd53cf1/018cd345/cr_1125x445_0_171/s1125x690/q70.jpg',
        'http://m.360buyimg.com/mobilecms/s700x280_jfs/t1/163716/23/16055/97374/6066f2cfEe720735f/3f4d05450bc1f7fc.jpg!q70.jpg.dpg'
      ],
      // 宫格
      gird: [
        { id: 1, icon: 'iconfont icon-shouji', name: '手机' },
        { id: 2, icon: 'iconfont icon-bingxiang', name: '冰箱' },
        { id: 3, icon: 'iconfont icon-xiyiji', name: '洗衣机' },
        { id: 4, icon: 'iconfont icon-dianshi', name: '电视' },
        { id: 5, icon: 'iconfont icon-youyanjiB', name: '油烟机' },
        { id: 6, icon: 'iconfont icon-reshuiqi', name: '热水器' },
        { id: 7, icon: 'iconfont icon-jiaju', name: '家居' },
        { id: 8, icon: 'iconfont icon-dianfanbao', name: '电饭煲' },
        { id: 9, icon: 'iconfont icon-deng', name: '台灯' },
        { id: 10, icon: 'iconfont icon-chufangyongpin-ranqizao', name: '燃气灶' }
      ],
      // 秒杀商品
      supplyShop: [],
      // 其他商品
      otherShop: [],
      // 手机页
      phoneimg: [],
      // 其他手机商品
      otherPhone: [],
      // 运动页
      motionimg: [],
      // 其他运动商品
      othermotion: [],
      // 美妆页
      Makeupimg: [],
      // 其他美妆商品
      otherMakeup: [],
      // 男鞋页
      Menshopimg: [],
      // 其他男鞋商品
      otherMenshop: [],
      // 女鞋页
      WoMenshopimg: [],
      // 其他女鞋商品
      otherWoMenshop: [],
      // 家居页
      FurnishingImg: [],
      // 其他家居商品
      otherFurnishing: []
    }
  },
  created () {
    this.CountDown()
    this.loadershop()
  },
  methods: {
    // 搜索商品
    search (value) {
      this.$router.push({ name: 'SchCont', params: { value } })
    },
    // 倒计时
    CountDown () {
      var myDate = new Date()
      var hour = 24 - myDate.getHours()
      this.time = hour * 60 * 60 * 1000
    },
    // 获取商品信息
    async loadershop () {
      // 获取所有商品 赋值给优选页模块
      const Allshop = await this.$http.get('list?id=100')
      this.otherShop = Allshop.data.data
      // 获取手机商品 赋值给手机页模块
      const phone = await this.$http.get('details?id=2')
      this.otherPhone = phone.data.data
      // 获取运动商品 赋值给运动页模块
      const play = await this.$http.get('details?id=3')
      this.othermotion = play.data.data
      // 获取美妆商品 赋值给美妆页模块
      const Makeup = await this.$http.get('details?id=4')
      this.otherMakeup = Makeup.data.data
      // 获取男鞋商品 赋值给男鞋页模块
      const Menshop = await this.$http.get('details?id=5')
      this.otherMenshop = Menshop.data.data
      // 获取女鞋商品 赋值给女鞋页模块
      const WoMenshop = await this.$http.get('details?id=6')
      this.otherWoMenshop = WoMenshop.data.data
      // 获取家居家具商品 赋值给家居家具页模块
      const Furnishing = await this.$http.get('details?id=7')
      this.otherFurnishing = Furnishing.data.data
      // 获取秒杀商品 赋值给秒杀模块
      const miaosha = await this.$http.get('list_m')
      this.supplyShop = miaosha.data.data
    },
    // 调转详情页
    detailshop (id) {
      this.$router.push({ name: 'Details', params: { id: id, urls: '/home' } })
    },
    // 跳转优选宫格详情
    xxx (id) {
      this.$router.push({ name: 'SchCont', params: { value: id } })
    }
  }
}
</script>
<style lang="less" scoped>
.home {
  width: 100%;
  height: 100%;
  .header {
    .van-tabs {
      margin-top: -5px;
    }
  }
}

.van-tabbar {
  .van-tabbar-item {
    display: flex;
    flex-direction: column;
  }
}
// 轮播图
.my-swipe1 {
  width: 300px;
  height: 150px;
  margin-left: 35px;
  margin-top: 20px;
  img {
    width: 300px;
    height: 150px;
  }
  box-shadow: 0px 1px 3px 3px rgba(34, 25, 25, 0.2);
}

// 十宫格
.van-grid {
  margin-top: 10px;
  box-shadow: 0px 1px 3px 3px rgba(34, 25, 25, 0.2);
}

// 秒杀
.supply {
  width: 100%;
  height: 120px;
  margin-top: 10px;
  box-shadow: 0px 1px 3px 3px rgba(34, 25, 25, 0.2);
  .shop {
    ul {
      list-style: none;
      li {
        float: left;
        margin-left: 13px;
        img {
          margin-top: 10px;
          width: 80px;
        }
      }
    }
  }
}

// 其他商品
.otherShop {
  margin-top: 20px;
  ul {
    display: flex;
    justify-content: space-around;
    align-items: center;
    flex-wrap: wrap;
    padding-bottom: 40px;
    li {
      width: 170px;
      height: 220px;
      font-size: 14px;
      p {
        width: 170px;
        overflow: hidden; //超出的文本隐藏
        white-space: nowrap; //溢出不换行
        text-overflow: ellipsis; //溢出用省略号显示
      }
      img {
        width: 150px;
      }
    }
  }
}

//其他手机商品
.otherPhone {
  margin-top: 20px;
  ul {
    display: flex;
    justify-content: space-around;
    align-items: center;
    flex-wrap: wrap;
    padding-bottom: 40px;
    li {
      width: 170px;
      height: 220px;
      font-size: 14px;
      p {
        width: 170px;
        overflow: hidden; //超出的文本隐藏
        white-space: nowrap; //溢出不换行
        text-overflow: ellipsis; //溢出用省略号显示
        text-indent: 2em;
      }
      img {
        width: 150px;
      }
    }
  }
}

//其他运动商品
.othermotion {
  margin-top: 20px;
  ul {
    display: flex;
    justify-content: space-around;
    align-items: center;
    flex-wrap: wrap;
    padding-bottom: 40px;
    li {
      width: 170px;
      height: 220px;
      font-size: 14px;
      p {
        width: 170px;
        overflow: hidden; //超出的文本隐藏
        white-space: nowrap; //溢出不换行
        text-overflow: ellipsis; //溢出用省略号显示
        text-indent: 2em;
      }
      img {
        width: 150px;
      }
    }
  }
}

//其他美妆商品
.otherMakeup {
  margin-top: 20px;
  ul {
    display: flex;
    justify-content: space-around;
    align-items: center;
    flex-wrap: wrap;
    padding-bottom: 40px;
    li {
      width: 170px;
      height: 220px;
      font-size: 14px;
      p {
        width: 170px;
        overflow: hidden; //超出的文本隐藏
        white-space: nowrap; //溢出不换行
        text-overflow: ellipsis; //溢出用省略号显示
        text-indent: 2em;
      }
      img {
        width: 150px;
      }
    }
  }
}

//其他男鞋商品
.otherMenshop {
  margin-top: 20px;
  ul {
    display: flex;
    justify-content: space-around;
    align-items: center;
    flex-wrap: wrap;
    padding-bottom: 40px;
    li {
      width: 170px;
      height: 220px;
      font-size: 14px;
      p {
        width: 170px;
        overflow: hidden; //超出的文本隐藏
        white-space: nowrap; //溢出不换行
        text-overflow: ellipsis; //溢出用省略号显示
        text-indent: 2em;
      }
      img {
        width: 150px;
      }
    }
  }
}

//其他女鞋商品
.otherWoMenshop {
  margin-top: 20px;
  ul {
    display: flex;
    justify-content: space-around;
    align-items: center;
    flex-wrap: wrap;
    padding-bottom: 40px;
    li {
      width: 170px;
      height: 220px;
      font-size: 14px;
      p {
        width: 170px;
        overflow: hidden; //超出的文本隐藏
        white-space: nowrap; //溢出不换行
        text-overflow: ellipsis; //溢出用省略号显示
        text-indent: 2em;
      }
      img {
        width: 150px;
      }
    }
  }
}

// 其他家居商品
.otherFurnishing {
  margin-top: 20px;
  ul {
    display: flex;
    justify-content: space-around;
    align-items: center;
    flex-wrap: wrap;
    padding-bottom: 40px;
    li {
      width: 170px;
      height: 220px;
      font-size: 14px;
      p {
        width: 170px;
        overflow: hidden; //超出的文本隐藏
        white-space: nowrap; //溢出不换行
        text-overflow: ellipsis; //溢出用省略号显示
        text-indent: 2em;
      }
      img {
        width: 150px;
      }
    }
  }
}
</style>

项目打包看这个

其他页面有需要的可以联系我哦

移动端项目vue2+vant组件库)
qq_45585640的博客
06-23 6939
在命令行中输入以下命令创建 Vue 项目: 这里建议两个都选上,更严谨。 这里建议选择第 1 个,保存到单独的配置文件,这样方便我们做自定义配置。 安装结束,命令提示你项目创建成功,按照命令行的提示在终端中分别输入: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UynFzUoP-1654274042910)(assets/1582010300149-9932febe-2625-4ee7-986f-9190ab449fec.png)]如
Vue常用的组件库大全【前端工程师必备】【实时更新】【移动端、PC端(web端)、数据可视化组件库(数据大屏) 、动画组件库、文本编辑器,富文本、Markdown,3D组件库】
热门推荐
程序员猫爪
11-29 3万+
Vue常用的组件库大全【前端工程师必备】【实时更新】【移动端、PC端(web端)、数据可视化组件库(数据大屏) 、动画组件库、文本编辑器,富文本Markdown,3D组件库】
如何使用手机预览Vue项目移动端
weixin_39914806的博客
07-27 1883
我自己用下面的方法是有效的: 1.找到无线网络局域网ip 按住window+R键,输入cmd,回车,在弹出的框内,输入ipconfig,回车 在展示的结果中,有一个以太网的ip,有一个无线网的ip,复制无线网络的ipv4地址,如192.168.0.62 2.为项目设置运行ip 打开vue项目的config文件夹中的index.js文件,在dev对象中,host的值...
vue3写一个高仿抖音app移动端项目
最新发布
love_baby1的博客
08-29 324
编写路由:使用Vue Router来管理应用的路由。构建和部署:使用Vue CLI提供的构建命令来构建应用,然后将构建好的代码部署到服务器上。这些是使用Vue 3开发H5应用的基本步骤,具体的开发过程可能会根据项目的需求而有所不同。Vue 3可以用于开发H5应用。创建Vue项目使用Vue CLI创建一个新的Vue项目。测试和调试:使用Vue Devtools等工具来进行应用的测试和调试。安装Vue 3:使用npm或yarn等包管理工具安装Vue 3。数据管理:可以使用Vuex来管理应用的状态。
Vue3 如何开发原生(安卓,ios)
夜栩的博客
07-04 2665
由于不同平台的设计规范和用户习惯不同,使用 Uniapp 开发的应用在不同平台上的用户体验可能存在差异。开发者需要针对每个平台进行特定的适配和调优,以提供更好的用户体验。Uniapp 尽可能提供了跨平台的组件和 API,但某些特定平台的功能和接口可能无法完全支持。在需要使用特定平台功能的情况下,可能需要使用原生开发或自定义插件来解决。有些平台特有的功能或界面设计可能无法完全实现,需要使用特定平台的原生开发方式来解决。在遇到问题时,可能难以找到完善的解决方案,开发者可能需要花费更多的时间和精力来解决问题。
Vue 移动端框架
一起coding,一起嗨。
10-22 1万+
原创地址:https://www.jianshu.com/p/1e05c8d68407 1. Vant 是有赞前端团队基于有赞统一的规范实现的 Vue 组件库,提供了一整套 UI 基础组件和业务组件,这是我目前用过最好用的框架。中文文档 | github地址 | 在线预览 Vant 2. Mint UI Mint UI 由饿了么前端团队推出的 Mint UI 是一个基于 Vue.js 的移动端组件库。中文文档 | github地址 | 在线预览 Mint UI 3. Wot..
vue开发移动端app-学习记录
weixin_44736005的博客
01-29 1万+
目录 项目框架搭建 连接真机调试 打包apk发布 4 Vuex学习 每一个 Vuex 应用的核心就是 store(仓库)。“store”基本上就是一个容器,它包含着你的应用中大部分的状态 (state)。你不能直接改变 store 中的状态。改变 store 中的状态的唯一途径就是显式地提交 (commit) mutation。 https://vuex.vuejs.org/zh/guide/ npm install vuex --save 项目的适配 因为移动端设备屏幕大小,屏幕比例什么的差别比较大,
Vue中如何进行移动端适配与响应式布局?
it_xushixiong的博客
06-13 4974
Vue.js中,可以使用媒体查询、flexbox布局和第三方库等技术来实现移动端适配和响应式布局。媒体查询可以根据设备的屏幕尺寸来应用不同的样式,而flexbox布局可以用于实现灵活的、响应式的布局。此外,还可以使用第三方库来快速构建响应式布局,例如Bootstrap或Element UI等UI库。移动端适配和响应式布局已经成为Web开发中不可或缺的一部分,因为越来越多的用户正在使用移动设备访问网站。通过使用Vue.js和相关技术,我们可以轻松地实现移动端适配和响应式布局,以提供更好的用户体验。
Vue-移动端项目(9)
魔法革1996
12-16 465
九、用户页面 该模块作为学生作业,不讲解,仅供源码参考。 创建组件并配置路由 1、创建 views/user/index.vue <template> <div class="user-container">用户页面</div> </template> <script> export default { name: 'UserPage', components: {}, props: {}, data ()
vue2.5开发去哪儿网app移动端项目实战
iaz999的博客
04-01 552
vue2.5开发去哪儿网app移动端项目实战
vue移动端项目
violetta521的博客
11-16 2966
1.移动端规范 转换单位rem,设置媒体查询 为什么使用rem? 移动端最麻烦的是,不同分辨率适配! iPhone6 为标准 750*1334 手机端的4px等于电脑端的1px 2倍关系 @2 ihone6s 1242*2208 手机端9px=1px 3倍关系@3 一倍关系就是pc端的 手机是视网膜屏 2.创建项目 cmd->vue create 项目名 目前选择2.0版本 3.vue.comfig.js的配置 module.exports = ...
开发那点事(五)vue开发移动端app案例
开发那点事
05-05 2万+
开发背景 公司需要开发一款移动端app,奈何团队没有ios技术,工期比较短,所以选择使用vue开发HTML5经过打包处理形成移动端app项目构思 1 项目整体使用Vue+HbuilderX开发 2 Vue实现基本页面跳转,增删改查等app基本功能,当需要使用app原生功能则使用mui.js 3 最后通过HbuilderX将vue项目打包成app开发实践 1 运行打包app 这一步的步骤...
前端-vue移动端&&App 适配方案
在写作的路上持续输出。
06-26 2333
前端移动端-两种最佳适配方案,任选其一即可。不看看真的亏大了,避免走弯路。
vue 移动端开发vw适配方案&rem适配方案 + vant框架 + unocss|tailwindcss
u014632228的博客
07-05 1万+
vue 移动端 rem适配方案&vw适配方案
移动端选型:WebStorm开发uni-app ,用vue2实现手机APP(apk) + 微信小程序多端项目开发方案
LlanyW的专栏
02-11 1万+
vue文件用的是webview渲染,Webview是一个基于webkit的引擎,可以解析DOM元素,展示html页面的控件,他和浏览器展示页面的原理是相同的,所以可以把它当做浏览器看待。vue文件用的是webview渲染,Webview是一个基于webkit的引擎,可以解析DOM元素,展示html页面的控件,他和浏览器展示页面的原理是相同的,所以可以把它当做浏览器看待。nvue是native vue的缩写,是uni-app的一种渲染方式。是native vue的缩写,是uni-app的一种渲染方式。
VueVue2创建移动端项目实战教程,创建移动端项目保姆级教程,接上一篇创建Vue2项目(中)
qq_51055690的博客
09-20 4333
vue2项目适配移动端实战案例,接上一篇创建vue2项目开发使用px不用rem
【安卓开发】将Vue项目打包为app
你不来,再美的天地,都狼藉 ~
05-13 9399
一文你将Vue项目发布app
Vue3编写简单的App组件(二)
weixin_37901366的博客
02-08 1441
(用来写html,搭建网页结构)、(用来写js或ts,实现动态交互)和(用来写css,实现网页样式)
vue项目移动端编写项目职责
05-28
Vue项目移动端编写的项目职责除了包括前端页面开发、数据管理、路由管理、API请求、项目构建和打包、代码测试和调试、性能优化等方面,还需要特别关注以下几个方面: 1. 响应式设计:移动端的页面需要考虑不同屏幕尺寸的适配,使用相应的技术实现响应式设计,确保应用程序在不同设备上都能正常显示和使用。 2. 移动端交互设计:移动端的用户交互方式与PC端有很大的区别,需要针对移动设备的特点进行相应的交互设计,例如手势操作、下拉刷新等。 3. 移动端性能优化:移动设备的性能较低,需要针对移动端进行性能优化,例如图片压缩、代码分割、懒加载等。 4. 移动端调试:移动端的调试需要使用移动端的调试工具,例如Chrome DevTools for Mobile等,进行远程调试和测试。 总之,Vue项目移动端编写的项目职责是在前端页面开发、数据管理、路由管理、API请求、项目构建和打包、代码测试和调试、性能优化等方面的基础上,特别关注移动端的响应式设计、移动端交互设计、移动端性能优化和移动端调试等方面,确保应用程序在移动设备上能够正常运行和使用
写文章

热门文章

  • 一款加持提升开发效率的插件,你值得拥有 22347
  • 一文带你使用Vue完成移动端(apk)项目 20426
  • 一篇文带你使用vue完成一个完整后台 20033
  • 了解uni-app只需这一篇就足够了 17627
  • uni-app实战项目,跟着做完你就可以独立作战了(一) 16433

分类专栏

  • 前端 45篇
  • 视频融合 2篇
  • Echarts 1篇
  • 效果 4篇
  • TypeScript 2篇
  • Vue 11篇
  • 小程序 6篇
  • react 12篇
  • uni-app 7篇
  • node 4篇
  • MySQL数据库 6篇
  • 移动端 1篇
  • 其他 14篇
  • 新星计划 8篇

最新评论

  • 一文带你使用Vue完成移动端(apk)项目

    m0_55773426: 大佬可以详细说说vw布局这块吗

  • 一篇文带你使用vue完成一个完整后台

    肥波有梦想: 求源码,大佬

  • uni-app实战项目,跟着做完你就可以独立作战了(一)

    悲伤zc: 博主求源码

  • Vue使用NProgress

    weixin_44138486: 安装NProgress包 方法一: npm install --save nprogerss 错了 nprogress

  • 一文带你学会使用小程序CMS内容管理

    nan_zhaoyan: 不想添加想删除项目怎么弄啊

大家在看

  • 【c++篇】:初始c++--编程新手的快速入门之道(一) 22
  • github pages + hugo 搭建静态博客网站 785
  • 嵌入式STM32学习——GPIO控制之 固件库实现LED点灯 335
  • mathtype产品秘钥7.7版本(附激活教程+ 注册激活码) 475
  • Tuxera NTFS for Mac破解版下载2024免费苹果电脑磁盘读写工具 540

最新文章

  • CSS实现文字环绕圆形展示
  • JS 原生实现拖拽功能
  • 前端 文件下载方法
2024年3篇
2023年7篇
2022年5篇
2021年80篇
2020年35篇

目录

目录

评论 130
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

David凉宸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳坪山网站建设公司九江百度网络推广网站优化公司普陀区公司网站优化价格费用seo如何优化网站步骤德阳大企业网站优化南京网站排名优化学习快排网站优化优化营业执照网站网站建设优化服务报价房产中介网站建设优化建站如何优化网站的标题武汉网站快照优化方案网站怎么优化呢济南章丘网站优化费用多少钱网站优化域名怎么选择网站搜索引擎优化评价报告武汉低成本网站优化公司排名杭州网站排名优化工具黄岛区网站seo优化排名引流张掖网站优化推广哪个公司可以做玻璃钢格栅无锡网站优化关于网站优化检查tdk的插件珠海外贸网站优化东坑东莞网站优化外包公司寿光优化网站平台环境优化网站湖州模板网站优化公司温州网站推广快速优化排名公司专业的网站如何seo优化揭阳怎样优化网站广告网站优化成功案例香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

深圳坪山网站建设公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化