详解搭建一个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日

相关文章

  • D3.js实现简洁实用的动态仪表盘的示例

    下面我将为您详细讲解“D3.js实现简洁实用的动态仪表盘的示例”的完整攻略。 1. 确定设计 在使用D3.js创建仪表盘之前,需要对仪表盘进行设计。 仪表盘可以包含以下元素:- 指示器(需要动态变化)- 舞台或背景- 刻度盘或表盘 2. 创建SVG容器 D3.js将仪表盘绘制到SVG容器中。首先,需要创建一个SVG元素,并设定其宽度和高度。 <div …

    JavaScript 2023年6月11日
    00
  • jquery自定义表单验证插件

    请允许我详细讲解一下如何创建一个使用jQuery自定义表单验证插件的过程。 什么是jQuery自定义表单验证插件? jQuery自定义表单验证插件是用于验证表单数据的插件,它使用jQuery作为基础,并可以很容易地自定义来验证不同类型的表单数据。通过使用这个插件,可以将验证逻辑简洁明了地编写在你的前端代码上,可以有效地减少后端代码的数量并极大地提高表单数据的…

    JavaScript 2023年6月10日
    00
  • JS闭包的几种常见形式实例详解

    JS闭包的几种常见形式实例详解 什么是闭包? 在理解闭包的几种形式之前,我们先来了解一下什么是闭包。 闭包指的是一个函数在返回时,能够记住并访问该函数定义时作用域中的变量。这可以通过在函数内部定义一个函数来实现。 闭包发挥着非常重要的作用,因为它可以在函数外部访问函数内部的变量和函数,并且使得这些变量和函数的作用域得以保存。 闭包的几种常见形式 1. 函数作…

    JavaScript 2023年6月10日
    00
  • JavaScript前后端JSON使用方法教程

    以下是”JavaScript前后端JSON使用方法教程”的完整攻略: 前言 在Web开发中,JSON是一个重要的数据交换格式。在JavaScript中,我们经常需要使用JSON来进行数据解析、数据交换、以及与后端交互等操作。因此,本篇文章主要介绍了JavaScript前后端JSON使用方法。 JavaScript读取JSON数据 JavaScript提供了p…

    JavaScript 2023年5月27日
    00
  • jquery eval解析JSON中的注意点介绍

    jQuery eval解析JSON中的注意点介绍 在使用 jQuery 的 eval 方法来解析 JSON 数据时,需要注意一些细节,这些细节将直接影响到解析过程的准确性和效率。本文将介绍这些注意点,并使用示例进行说明。 什么是 jQuery eval 方法 在 jQuery 中,eval 方法被用于将 JSON 数据解析为 JavaScript 对象。ev…

    JavaScript 2023年5月27日
    00
  • Javascript 更新 JavaScript 数组的 uniq 方法

    下面是更新 JavaScript 数组的 uniq 方法的完整攻略: 1. 现状 目前,虽然 JavaScript 数组已有现成的 filter 函数可以用来过滤数组中重复的元素,但很多开发者经常需要自定义数组的 uniq 方法,以实现更加灵活的去重操作。目前,常见的去重实现方式有两种:基于 Set 对象的去重和基于对象属性的去重,其中基于 Set 的去重是…

    JavaScript 2023年5月27日
    00
  • JS实现的字符串数组去重功能小结

    好的。下面是关于“JS实现的字符串数组去重功能小结”的完整攻略: 介绍 在JavaScript程序中,经常需要使用数组进行数据的存储和操作。实际开发中,可能会出现数组中包含重复的元素的情况,所以需要对数组进行去重操作。本文将详细讲解JS实现的字符串数组去重功能的实现方法。 方法一:创建一个空的对象,利用对象属性的唯一性去重 代码示例: function ar…

    JavaScript 2023年5月28日
    00
  • 表单提交验证类

    下面是关于表单提交验证类的完整攻略。 什么是表单提交验证类 表单提交验证类是一种PHP后端验证机制,用于验证用户通过表单提交的数据是否符合预期的格式和规范。通过对表单提交的数据进行验证,可以有效地防止恶意提交和错误数据的输入。 表单提交验证类的工作原理 表单提交验证类的工作原理包括以下几步: 接收表单提交的数据。 定义验证规则。包括验证规则名称、验证规则类型…

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