下面我将详细讲解如何搭建一个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插件为例,具体步骤如下:
-
安装插件:
npm install postcss-px-to-viewport --save-dev
-
添加.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表示是否允许在媒体查询中转换。
- 修改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插件来解决这个问题。
-
安装插件:
npm install fastclick --save
-
在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开发模板
基础教程推荐
- 用js判断用户浏览器是否是XP SP2的IE6 2023-12-01
- CSS编辑工具Topstyle轻松打造网页风格 2022-10-16
- 微信小程序 教程之注册页面 2024-01-04
- Flask + html + Shell 实现nginx配置管理web平台 2023-10-29
- javascript 动态生成私有变量访问器 2023-12-03
- vue-cli2 单个组件打包为js 2023-10-08
- pdf2swf+flexpapers实现类似百度文库pdf在线阅读 2024-01-04
- 详解js location.href和window.open的几种用法和区别 2024-01-03
- vue通过地址下载文件 2023-10-08
- php – 我试图从MySQL查询生成一个HTML表.这是我试图从MySQL查询生成的表的格式: 2023-10-26