详解搭建一个vue-cli的移动端H5开发模板

下面我将详细讲解如何搭建一个vue-cli的移动端H5开发模板。

准备工作

首先,需要安装node.js和npm。

然后,使用npm安装vue-cli:npm install -g vue-cli

创建项目

在命令行中执行以下命令创建一个基于webpack模板的vue项目:

vue init webpack my-project
cd my-project
npm install
npm run dev

这里创建的项目名为my-project,可以根据自己的需要修改。

执行完这些命令后,会创建一个基于webpack的vue项目,并安装了所需的依赖。然后运行npm run dev,启动webpack dev server,可以在浏览器中通过http://localhost:8080访问项目。

添加移动端适配

为了让项目能够适配不同的移动端设备,我们需要添加移动端适配方案。

这里以使用postcss-px-to-viewport插件为例,具体步骤如下:

  1. 安装插件:npm install postcss-px-to-viewport --save-dev

  2. 添加.postcssrc.js文件并配置:

{
  "plugins": {
    "postcss-px-to-viewport": {
      "viewportWidth": 750,
      "viewportHeight": 1334,
      "unitPrecision": 3,
      "viewportUnit": "vw",
      "selectorBlackList": [
        ".ignore",
        ".hairlines"
      ],
      "minPixelValue": 1,
      "mediaQuery": false
    }
  }
}

这里的配置中,viewportWidth和viewportHeight表示设计稿的宽度和高度,unitPrecision表示转换后保留的小数位数,viewportUnit表示转换后使用的单位,selectorBlackList表示不需要转换的类名,minPixelValue表示小于1px的值不转换,mediaQuery表示是否允许在媒体查询中转换。

  1. 修改webpack配置文件,在postcss-loader后添加postcss-px-to-viewport插件:
// webpack.config.js
module.exports = {
  // ...
  module: {
    rules: [
      // ...
      {
        test: /\.css$/,
        use: [
          'vue-style-loader',
          'css-loader',
          {
            loader: 'postcss-loader',
            options: {
              ident: 'postcss',
              plugins: [
                require('postcss-px-to-viewport')({
                  viewportWidth: 750,
                  viewportHeight: 1334,
                  unitPrecision: 3,
                  viewportUnit: 'vw',
                  selectorBlackList: [
                    '.ignore',
                    '.hairlines'
                  ],
                  minPixelValue: 1,
                  mediaQuery: false
                })
              ]
            }
          }
        ]
      }
    ]
  },
  // ...
}

这里的配置与.postcssrc.js文件中的配置一致。

添加完移动端适配后,在样式中使用px单位时,插件会自动将其转换为vw单位。

添加fastclick

移动端点击事件有延迟,需要添加fastclick插件来解决这个问题。

  1. 安装插件:npm install fastclick --save

  2. 在main.js文件中添加以下代码:

import FastClick from 'fastclick'
FastClick.attach(document.body)

这样就可以使用fastclick插件了。

示例说明

假设我们需要在首页显示一个头部标题和一个列表,每一个列表项都有一个图片和一个文字描述。

第一个示例

针对第一个示例,我们可以先使用vue-cli生成的项目模板在src/components目录下创建一个Header.vue组件和一个List.vue组件,分别用来显示头部和列表。

Header.vue内容示例:

<template>
  <div class="header">
    <h1>{{title}}</h1>
  </div>
</template>
<script>
export default {
  props: {
    title: {
      type: String,
      required: true
    }
  }
}
</script>
<style scoped>
.header {
  height: 100px;
  line-height: 100px;
  text-align: center;
  font-size: 36px;
}
</style>

List.vue内容示例:

<template>
  <div class="list">
    <div v-for="item in items" :key="item.id" class="item">
      <img :src="item.imgUrl" alt="">
      <div>{{item.desc}}</div>
    </div>
  </div>
</template>
<script>
export default {
  props: {
    items: {
      type: Array,
      required: true
    }
  }
}
</script>
<style scoped>
.list {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
}
.item {
  width: 48%;
  margin-bottom: 20px;
  border-radius: 5px;
  overflow: hidden;
  box-shadow: 0 3px 15px rgba(0, 0, 0, 0.1);
  transition: box-shadow 0.2s ease;
}
.item:hover {
  box-shadow: 0 5px 25px rgba(0, 0, 0, 0.2);
}
.item img {
  width: 100%;
  height: 200px;
  object-fit: cover;
}
.item div {
  padding: 10px;
  font-size: 14px;
  color: #666;
}
</style>

然后在src/App.vue中使用这两个组件:

<template>
  <div>
    <Header title="头部标题" />
    <List :items="items" />
  </div>
</template>
<script>
import Header from './components/Header.vue'
import List from './components/List.vue'
export default {
  components: {
    Header,
    List
  },
  data() {
    return {
      items: [
        {
          id: 1,
          imgUrl: 'http://placehold.it/300x200',
          desc: '列表项1'
        },
        {
          id: 2,
          imgUrl: 'http://placehold.it/300x200',
          desc: '列表项2'
        },
        {
          id: 3,
          imgUrl: 'http://placehold.it/300x200',
          desc: '列表项3'
        },
        {
          id: 4,
          imgUrl: 'http://placehold.it/300x200',
          desc: '列表项4'
        }
      ]
    }
  }
}
</script>
<style scoped>
/* 根据需要添加样式 */
</style>

这样就完成了一个简单示例的搭建。

第二个示例

针对第二个示例,我们可以先创建一个Index.vue组件,然后在其中使用vanp-perfect-scrollbar组件来实现一个可滑动列表。

<template>
  <div class="index">
    <van-perfect-scrollbar>
      <div class="list">
        <div v-for="item in items" :key="item.id" class="item">
          <img :src="item.imgUrl" alt="" />
          <div>{{item.desc}}</div>
        </div>
      </div>
    </van-perfect-scrollbar>
  </div>
</template>

<script>
import VanPerfectScrollbar from 'van-perfect-scrollbar'
import 'van-perfect-scrollbar/dist/van-perfect-scrollbar.css'

export default {
  components: {
    VanPerfectScrollbar
  },
  data() {
    return {
      items: [
        {
          id: 1,
          imgUrl: 'http://placehold.it/300x200',
          desc: '列表项1'
        },
        {
          id: 2,
          imgUrl: 'http://placehold.it/300x200',
          desc: '列表项2'
        },
        {
          id: 3,
          imgUrl: 'http://placehold.it/300x200',
          desc: '列表项3'
        },
        {
          id: 4,
          imgUrl: 'http://placehold.it/300x200',
          desc: '列表项4'
        }
      ]
    }
  }
}
</script>
<style scoped>
.index {
  padding: 20px;
}
.list {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
}
.item {
  width: 48%;
  margin-bottom: 20px;
  border-radius: 5px;
  overflow: hidden;
  box-shadow: 0 3px 15px rgba(0, 0, 0, 0.1);
  transition: box-shadow 0.2s ease;
}
.item:hover {
  box-shadow: 0 5px 25px rgba(0, 0, 0, 0.2);
}
.item img {
  width: 100%;
  height: 200px;
  object-fit: cover;
}
.item div {
  padding: 10px;
  font-size: 14px;
  color: #666;
}
</style>

这里使用了van-perfect-scrollbar组件,需要先安装组件:npm install van-perfect-scrollbar --save。然后在组件中引入并注册即可使用。

这样就完成了第二个示例的搭建。

至此,我们已经完成了搭建一个vue-cli的移动端H5开发模板需要的全部步骤,希望能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解搭建一个vue-cli的移动端H5开发模板 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • JS算法教程之字符串去重与字符串反转

    想要讲解“JS算法教程之字符串去重与字符串反转”的完整攻略,需要先来介绍一下这篇文章所要解决的问题,以及需要使用到的一些关键点。 问题描述 这篇文章主要解决两个问题: 字符串去重:给定一个字符串,如何将其中重复的字符去掉,只保留一个。 字符串反转:给定一个字符串,如何将其中的字符反转。 解决思路 为了解决这两个问题,我们需要使用到以下几个步骤: 字符串去重:…

    JavaScript 2023年5月28日
    00
  • js购物车实现思路及代码(个人感觉不错)

    下面是我对“js购物车实现思路及代码(个人感觉不错)”这篇文章的详细讲解。 一、思路概述 文章中的购物车实现主要包括三个部分:商品页面展示、购物车页面展示、购物车功能实现。其中,商品页面展示和购物车页面展示主要是前端页面的设计,而购物车功能实现则需要用到 JavaScript。 具体实现流程如下: 在商品页面设计商品列表,每个商品都有一个对应的“加入购物车”…

    JavaScript 2023年6月11日
    00
  • 在JavaScript中如何解决用execCommand(

    在JavaScript中,可以使用execCommand()方法来执行一些富文本编辑操作,如加粗、斜体、插入链接等。下面是一些解决execCommand()的方法以及示例说明。 方法一:使用document.execCommand() 使用document.execCommand()方法可以直接执行一些富文本编辑操作,如下示例代码演示了如何在文本框中插入一段…

    JavaScript 2023年6月11日
    00
  • javascript将异步校验表单改写为同步表单

    如果要将异步校验表单改写为同步表单,主要有以下几个步骤: 1. 禁用默认表单提交行为 表单默认的提交行为是异步提交,因此我们需要先禁用默认的表单提交行为。禁用表单提交行为的方式有两种: 在表单的submit事件中返回false 在表单的submit事件中返回false可以阻止表单的默认提交行为。代码如下: const form = document.quer…

    JavaScript 2023年6月10日
    00
  • JS简单实现DIV相对于浏览器固定位置不变的方法

    下面是JS简单实现DIV相对于浏览器固定位置不变的方法的完整攻略: 步骤一:设置CSS样式 首先,我们需要在HTML页面中定义一个div,然后为该div设置CSS样式,使其固定在浏览器的某个位置。例如,我们可以设置该div的position属性为”fixed”,然后指定它距离浏览器顶部的距离为0px,即可使之固定在浏览器顶部。 HTML代码如下: <d…

    JavaScript 2023年6月10日
    00
  • 一文让你快速了解JavaScript栈

    随着前端技术的不断发展,JavaScript已经成为一种非常重要的编程语言。为了让大家更好地理解JavaScript的运行机制,我准备了一篇文章,希望能够帮助大家快速了解JavaScript栈。 什么是JavaScript栈 JavaScript栈是指一种数据结构,它被用来存储函数调用时的上下文信息。每一次函数调用,JavaScript都会把该函数的上下文信…

    JavaScript 2023年5月18日
    00
  • JS格式化时间的几种方法总结

    下面是 “JS格式化时间的几种方法总结” 的完整攻略: 一、引言 在 Web 应用程序中,时间格式化是很常见的需求。JS作为前端开发语言,也提供了多种方式用于计算与格式化时间。本文将介绍JS中五种常见的时间格式化方法。 二、格式化JS中的时间 1. Date.toLocaleString() toLocaleString() 方法返回一个字符串,表示该日期对…

    JavaScript 2023年5月27日
    00
  • JavaScript高级程序设计 扩展–关于动态原型

    关于JavaScript高级程序设计中的扩展——动态原型,我来详细解释一下。 动态原型 JavaScript 是一门基于原型继承的语言,原型链决定了对象如何继承属性和方法。原型是 JavaScript 对象中一个非常重要的概念,用于实现对象的继承,从而节省大量的代码。 动态原型模式是一种在同时使用构造函数和原型的情况下,可以向原型中添加方法的方法。如下所示:…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部