Maison interface Web uni-app Présentation de la bibliothèque de polices d'uni-app, des composants personnalisés, de l'emballage et des nouvelles pratiques

Présentation de la bibliothèque de polices d'uni-app, des composants personnalisés, de l'emballage et des nouvelles pratiques

Jan 25, 2021 am 09:55 AM
uni-app 字体库 自定义组件

Présentation de la bibliothèque de polices d'uni-app, des composants personnalisés, de l'emballage et des nouvelles pratiques

Recommandé (gratuit) : Tutoriel de développement d'uni-app

Article Contenu

  • Avant-propos
  • 1. Utilisation de la bibliothèque de polices iconfont
  • 2. Composants personnalisés et messagerie entre les composants
  • 3, Emballage
  • 4. Cas pratiques - liste des actualités et détails
  • Résumé

Avant-propos

L'introduction principale de cet article 4 aspects du contenu :
Utilisez la bibliothèque de polices d'icônes fournie par iconfont dans le projet uni-app pour embellir la page ;
Implémentez des composants personnalisés, et pouvez personnaliser les attributs et implémenter la transmission de messages entre les composants parent et enfant Aperçu du mini programme WeChat et tests d'appareils réels, packaging cloud APP et packaging local
Liste des actualités et exercices pratiques détaillés.

1. Utilisez la bibliothèque de polices iconfont

Vous pouvez utiliser

iconfont (https://www.iconfont.cn/) fournie en uni- police de l’icône de l’application.

Le processus général est le suivant :

Sélectionnez d'abord l'icône souhaitée en fonction du mot-clé dans iconfont et ajoutez-la au panier, puis créez un projet et ajoutez l'icône précédemment sélectionnée au projet et téléchargez-la ; la police. Comme suit :

uniapp iconfont create project download

Décompressez le package compressé téléchargé, déplacez le fichier iconfont.css qu'il contient vers le répertoire de polices nouvellement créé dans le répertoire statique du répertoire du projet et modifiez-le en ne conserver que ce qui est nécessaire à la plateforme mobile. La source de la police suffit, comme suit :

@font-face {font-family: "iconfont";
  src: url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAQAAAsAAAAACHwAAAOxAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCCcAqFCIQiATYCJAMICwYABCAFhG0HLxtHBxHVmxnJPhbT7QzKF5SRijPBQ9X5vZ7poDv8ENdklpxkdYVYd9AnKb65+dU1KkK1Bcl58H95xgvs9NL89T/HTBeJ9Tz/SueUUZS0N8DxgAbUjdsVUYAcmN8CO4cgrXzxPgSgSaUY0bBxy444kQTLBCBGDhvSD2fLjJwgCZw6u7BXItZgw2ksNS4Bq/PfFx8pL5xgYDMJGtoObjSQum9VWGDODc+lZ4pAcpwT0A6BCRQDEkRH0d0as0wXY6IdtyRzulki4K0Kh1Px1f7jgQBhJ1C7EZssfk6SWPpU1QZ/XwJ+4C4Ix6Yy8Pt9flbI5OJoqZS7k14WEo7ABpdreRD7XEsHNzQvCmm9zKKXdXtGcFeM3doZrUO7hybsieuil52Nt286N1d5oWM9P20tKc4VxFnUWG2hlwsPEiPChd5KyXHtuLCjCz2poxWKnR7aENdlQzBmWnDj9OVpxoruqC1BWBmtjZ5jm2u5e86OLYnTQ9u7dkno2L1Lp+YhvSy6OEfljsnv3KVjp+DyuArNkjUbYl+0WaweuZqrs2qpxg9tpi85x11WrdUZtULtUZW+VEhpYa5vdRF3ppuLva/hyfRwrVdK78RMFSoTUYjBSL+5/oBrdQt1Zu7SNY90c+clx7izqo06PXbl2NNATG2J8jCEp7dX8Hl7pfZek6FYQyI8O+PYz/tJ92fXCWQHfhR41xfHzQ7Mzwn8zKsuKEiY65vf1F7ZO78wqknZQJbZd2ByvqxYf0HDtm0D2V//thETtfp47PUa7yP/1PVOKKzZZ2b61RrTr9WI9PVMyJpZEGHYK14tvzSxx5N60jXMnT/VpczY9NzlMa6sbyNwNDKpC0DYMp+Zjf/+v2FfcutBfXw1vzldEoBH2aOOYDBsSZZ5wfkleQT82ZKFPdKVBRZD2hIxb3AX/5fYpNFAGPZH8mSrNwZqp8CpSxAMHKSAiZNspMQWgw0XFcGOkzqgKaLJYRdRjMdESAUUshBA4OcAGHi5ACZ+LiMl9jHYiOUz2PELEzRHZxF1potcsfoGit4w0fCndZSLI5v5ovaG+X302pTltBe0rDGqQurmOlzQIzaUz1ybMbHKSS08huMQyiobRguLWW5iZOmLwiin8zRAAT0GmCAG/hArI8IFp4MN3/v5G2DmzUGPTnR1BF8ApbCOTlQE0gJkp74Wdb2WyYUPMzWGwbyIUYQTokUnOMK0QGR51gYYMQLLhmSmIVI/XqoO59een+4QoAkMhginmNj6i+zFOQAAAA==') format('woff2');}.iconfont {
  font-family: "iconfont" !important;
  font-size: 16px;
  font-style: normal;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;}.iconbooks:before {
  content: "\e709";}
Copier après la connexion
À ce stade, importez globalement le

style css dans App.vue, comme suit :

<script>
	export default {
		onLaunch: function() {
			console.log('App Launch')
		},
		onShow: function() {
			console.log('App Show')
		},
		onHide: function() {
			console.log('App Hide')
		}
	}
	global.isLogin = function() {
		try {
			var suid = uni.getStorageSync('suid');
			var srand = uni.getStorageSync('srand');
		} catch (e) {
			//TODO handle the exception
		}
		if (suid == '' || srand == '') {
			return false;
		} else {
			return [suid, srand];
		}
	}</script><style>
	/* 引入自定义图标库 */
	@import url('/static/font/iconfont.css');
	
	/*每个页面公共css */
	.red {
		color: #ff0000;
	}</style>
Copier après la connexion
Remarque :

Lorsque vous utilisez
pour importer un fichier de style externe, il doit être placé devant @import dans le module de style , et plus un point-virgule à la fin, sinon l'importation échouera.

Le style de police utilisé dans index.vue est le suivant :

<template>
	<view>
		<view class="iconfont iconbooks">
			书籍		</view>
	</view></template><script>
	export default {
		data() {
			return {
			}
		},
		onLoad() {
		},
		onShow() {
		},
		onHide() {
		},
		methods: {
			
		}
	}</script><style></style>
Copier après la connexion
Affichage :


uniapp iconfont set

Évidemment, il s'affiche normalement à la fois dans le mini programme et l'application.

2. Composants personnalisés et messagerie entre les composants

Les composants offrent beaucoup de commodité pour le développement d'uni-app et accélèrent le développement.

Les composants peuvent également être réutilisés et personnalisés, offrant une grande
flexibilité.

Avant de personnaliser les composants, vous devez créer un répertoire

dans le répertoire du projet. Cliquez avec le bouton droit sur le répertoire des composants et sélectionnez Nouveau composant. Lors de la création d'un composant, vous pouvez sélectionner un modèle ou cliquer sur le bouton. coin supérieur droit componentsPersonnaliser le modèle, créez dans le répertoire contextuel et écrivez simplement le contenu du modèle à l'intérieur. Par exemple, créez 模板名.txt comme suit : 带有属性的模板.txt

<template name="组件名称">
	<view>
		......	</view></template><script>
	export default {
		name: "组件名称",
		//属性
		props: {
			属性名称: {
				type: String, //属性类型
				value: "值"
			},
			......
		},
		//组件生命周期
		created: function(e) {

		},
		methods: {
			函数名称: function(obj) {

			},
		}
	}</script><style>
	**组件样式**</style>
Copier après la connexion
Lors de la création. un composant, sélectionnez un modèle personnalisé nommé myinput.vue, Modifiez comme suit :

<template name="myinput">
	<view>
		<input type="text" value="" placeholder="Input your name" class="myinput" />
		<button type="primary">提交</button>
	</view></template><script>
	export default {
		name: "myinput",
		//属性
		// props: {
		// 	属性名称: {
		// 		type: String, //属性类型
		// 		value: "值"
		// 	},
		// 	......
		// },
		//组件生命周期
		created: function(e) {

		},
		methods: {},
	}</script><style>
	.myinput {
		padding: 20px;
		background: #76F32B;
	}</style>
Copier après la connexion
Dans la page qui doit utiliser le composant personnalisé,

importez d'abord le composant personnalisé, comme suit :

import myinput from '../../components/myinput.vue';
Copier après la connexion
Enregistrez-le ensuite sur la page actuelle

Composant , comme suit :

components: {
    myinput
}
Copier après la connexion
Utilisez-le simplement en dernier, par exemple, index.vue est comme suit :

<template>
	<view>
		<myinput>姓名</myinput>
	</view></template><script>
	import myinput from '../../components/myinput.vue';
	export default {
		data() {
			return {
			}
		},
		onLoad() {
		},
		onShow() {
		},
		onHide() {
		},
		methods: {
			
		},
		components: {
			myinput		}
	}</script><style></style>
Copier après la connexion
Affichage :


uniapp define component basic

Évidemment, cela est réalisé. L'applet WeChat et l'APP utilisent des composants personnalisés.

peut également définir des attributs

, et vous pouvez définir dynamiquement des attributs props sur le composant , comme suit :

<template name="myinput">
	<view>
		<input type="text" value="" :placeholder="placeholder" class="myinput" />
		<button type="primary" @click="submit">提交</button>
	</view></template><script>
	export default {
		name: "myinput",
		//属性
		props: {
			placeholder: {
				type: String, //属性类型
				value: "Please input your ..."
			}
		},
		//组件生命周期
		created: function(e) {

		},
		methods: {
			submit: function() {
				console.log('submit successfully')
			}
		},
	}</script><style>
	.myinput {
		padding: 20px;
		background: #76F32B;
	}</style>
Copier après la connexion
définit les attributs dans l'objet props, et quand en utilisant le composant, transmettez la valeur à l'attribut, index.vue est le suivant :

<template>
	<view>
		<myinput placeholder="请输入姓名">姓名</myinput>
		<myinput placeholder="请输入年龄">年龄</myinput>
	</view></template><script>
	import myinput from '../../components/myinput.vue';
	export default {
		data() {
			return {
			}
		},
		onLoad() {
		},
		onShow() {
		},
		onHide() {
		},
		methods: {
			
		},
		components: {
			myinput		}
	}</script><style></style>
Copier après la connexion
Affichage :


uniapp define component props

implémente la définition d'attribut multi-terminal.

peut également être implémenté pour déclencher des événements ou des méthodes qui modifient l'élément parent lorsque vous cliquez sur le composant, c'est-à-dire pour activer le composant parent. Par exemple, le composant myinput active des éléments dans index.vue et déclenche des événements. . Vous devez utiliser

pour $emitSimuler l'événement d'exécution , le premier paramètre est l'événement, et les paramètres restants sont les paramètres de l'événement en même temps, lors de l'utilisation de ce composant dans le composant parent ; , liez l'événement dans le composant parent via pour réaliser l'intégration des composants de communication entre eux. v-on

est la suivante :

<template name="myinput">
	<view>
		<input type="text" value="" :placeholder="placeholder" class="myinput" />
		<button type="primary" @click="submit">提交</button>
	</view></template><script>
	export default {
		name: "myinput",
		//属性
		props: {
			placeholder: {
				type: String, //属性类型
				value: "Please input your ..."
			}
		},
		//组件生命周期
		created: function(e) {

		},
		methods: {
			submit: function() {
				this.$emit('change_parent', 'hi...');
				console.log('submit successfully')
			}
		},
	}</script><style>
	.myinput {
		padding: 20px;
		background: #76F32B;
	}</style>
Copier après la connexion
index.vue est la suivante :

<template>
	<view>
		<text>{{info}}</text>
		<myinput placeholder="请输入姓名" v-on:change_parent="change_parent">姓名</myinput>
		<myinput placeholder="请输入年龄">年龄</myinput>
		
	</view></template><script>
	import myinput from '../../components/myinput.vue';
	export default {
		data() {
			return {
				info: 'hello'
			}
		},
		onLoad() {
		},
		onShow() {
		},
		onHide() {
		},
		methods: {
			change_parent: function(text){
				this.info = text			}
		},
		components: {
			myinput		}
	}</script><style></style>
Copier après la connexion
Affichage :


uniapp define component communicate

Comme vous pouvez le constater, la communication et les événements sont implémentés. Réussi, le composant enfant a appelé avec succès l'événement du composant parent.

En même temps, nous pouvons également utiliser le framework GraceUI, dont le nom complet est

Grace User Interface, qui est un super framework front-end basé sur uni -app et petits programmes. L'adresse officielle du site Web est http://www.graceui.com/ fournit des composants, des mises en page et des bibliothèques d'interface plus riches Il peut réaliser une publication multi-extrémité d'un ensemble de codes via Uni. -app, améliorant considérablement la vitesse de développement. Il peut également être utilisé comme composants personnalisés pour le développement secondaire.

3. Emballage

对于小程序来说,可以申请测试号,方便开发者开发和体验小程序的各种能力,并使用此帐号在开发者工具创建项目进行开发测试,以及真机预览体验。
只需访问https://developers.weixin.qq.com/sandbox,并扫码登录后,即可查看到已为自己分配好的测试帐号信息,就可以使用提供的测试号的AppIDAppSecret进行开发和测试,还可以在PC端或手机端进行真机预览和调试。

如下:
uniapp package miniprogram preview

显然,实现了在真机预览小程序。

对于APP来说,需要打包,有云打包本地打包两种方式可以选择,其中云打包的特点是DCloud官方配置好了原生的打包环境,可以把HTML等文件编译为原生安装包,通过菜单栏中的发行->原生App-云打包,打开App云端打包对话框,选择所需选项并提交,以Android打包为例,如下:
uniapp package app Android cloud

选择之后,直接点击打包按钮等待获取公共测试证书、并成功打包即可。

四、实战案例–新闻列表和详情

uni-app实战实现新闻列表和详情,包括API交互、网络请求、列表循环和页面参数传递等。
其中,新闻API可以使用聚合数据https://www.juhe.cn/、极速数据https://www.jisuapi.com/等API平台提供的新闻数据接口,每天都会有免费请求次数,足够进行学习和测试,只需要注册、认证获取到相应apikey并进行替换即可。

先搭建列表页轮廓,index.vue如下:

<template>
	<view>
		<navigator class="news-list" url="../info/info">
			<image src="http://pic1.win4000.com/wallpaper/3/58a1558bec460_270_185.jpg" mode="widthFix"></image>
			<view class="news-title">news...</view>
		</navigator>
	</view></template><script>
	export default {
		data() {
			return {
			}
		},
		onLoad() {
		},
		onShow() {
		},
		onHide() {
		},
		methods: {
		},
	}</script><style>
	view{
		width: 100%;
	}
	.news-list{
		display: flex;
		width: 94%;
		padding: 10upx 3%;
		flex-wrap: nowrap;
	}
	.news-list image{
		width: 200upx;
		margin-right: 12upx;
		flex-shrink: 0;
	}
	.news-title{
		width: 100%;
		height: auto;
		background: #900;
	}</style>
Copier après la connexion

其中,通过flex和其他布局样式来实现列表。

pages下新建info目录,下新建info.vue用于展示新闻详情,如下:

<template>
	<view>
		info...	</view></template><script>
	export default {
		data() {
			return {
				
			}
		},
		methods: {
			
		}
	}</script><style></style>
Copier après la connexion

显示:
uniapp practice news first

可以看到,实现了新闻图片和标题的布局展示。

现在进一步实现从接口获取数据,将新闻详情链接通过参数传递从新闻列表页传到新闻详情页,如下:

<template>
	<view style="flex-wrap: wrap;">
		<navigator class="news-list" :url="&#39;../info/info?link=&#39;+item.url" v-for="(item, index) in news">
			<image :src="item.pic" mode="widthFix"></image>
			<view class="news-title">{{item.title}}</view>
		</navigator>
	</view></template><script>
	var _self;
	export default {
		data() {
			return {
				news: []
			}
		},
		onLoad() {
			_self = this;
			this.getNews()
		},
		onShow() {
		},
		onHide() {
		},
		methods: {
			getNews: function(){
				uni.request({
					url: 'https://api.jisuapi.com/news/get?channel=头条&start=100&num=20&appkey=66487d31a1xxxxxx',
					success:function(res){
						console.log(res)
						_self.news = res.data.result.list					}
				})
			}
		},
	}</script><style>
	view{
		width: 100%;
	}
	.news-list{
		display: flex;
		width: 94%;
		padding: 10upx 3%;
		flex-wrap: nowrap;
		margin: 12upx 0;
	}
	.news-list image{
		width: 200upx;
		margin-right: 12upx;
		flex-shrink: 0;
	}
	.news-title{
		width: 100%;
		height: auto;
		background: #F0AD4E;
		font-size: 28upx;
	}</style>
Copier après la connexion

info.vue如下:

<template>
	<view>
		info...	</view></template><script>
	export default {
		data() {
			return {
				
			}
		},
		onLoad:function(e){
			console.log(e);
		},
		methods: {
			
		}
	}</script><style></style>
Copier après la connexion

演示如下:
uniapp practice news link

显然,可以看到新闻列表,包括图片和标题,点击会将新闻链接传递给info页面。

此时再实现在info页面展示新闻详情,info.vue完善如下:

<template>
	<view>
		<web-view :src="link"></web-view>
	</view></template><script>
	var _self;
	export default {
		data() {
			return {
				link: ""
			}
		},
		onLoad:function(e){
			_self = this;
			console.log(e);
			_self.link = e.link;
		},
		methods: {
			
		}
	}</script><style></style>
Copier après la connexion

显示:
uniapp practice news detail

显然,现在进入info页面已经可以查看新闻详情。

总结

uni-app开发可以借助外部的资源和工具,比如iconfont提供的图标字体;组件加速了uni-app的开发,自定义组件提供了更大的灵活性,还可以实现组件间的通信;打包对于小程序和APP有所不同;新闻列表和详情页考察uni-app的样式设计、页面参数传递和第三方API的使用。

更多相关学习敬请关注uni-app教程栏目!

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Où trouver la courte de la grue à atomide atomique
1 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment développer uni-app en VSCode ? (Partage du tutoriel) Comment développer uni-app en VSCode ? (Partage du tutoriel) May 13, 2022 pm 08:11 PM

Comment développer uni-app en VSCode ? L'article suivant partagera avec vous un didacticiel sur le développement d'uni-app dans VSCode. Il s'agit peut-être du didacticiel le meilleur et le plus détaillé. Venez jeter un oeil !

Utilisez uniapp pour développer une navigation cartographique simple Utilisez uniapp pour développer une navigation cartographique simple Jun 09, 2022 pm 07:46 PM

Comment utiliser Uniapp pour développer une navigation cartographique simple ? Cet article vous donnera une idée pour créer une carte simple. J'espère qu'il vous sera utile !

Parlons de la façon d'utiliser Uniapp pour développer un jeu de serpent ! Parlons de la façon d'utiliser Uniapp pour développer un jeu de serpent ! May 20, 2022 pm 07:56 PM

Comment utiliser Uniapp pour développer un jeu de serpent ? L'article suivant vous guidera étape par étape dans la mise en œuvre du jeu Snake dans uniapp. J'espère qu'il vous sera utile !

Comment encapsuler la demande d'interface Uni-App Vue3 Comment encapsuler la demande d'interface Uni-App Vue3 May 11, 2023 pm 07:28 PM

interface uni-app, encapsulation de méthode globale 1. Créez un fichier API dans le répertoire racine, créez les fichiers api.js, baseUrl.js et http.js dans le dossier api 2.code de fichier baseUrl.js exportdefault"https://XXXX .test03.qcw800.com/api/"3.http.js fonction d'exportation du code de fichierhttps(opts,data){lethttpDefaultOpts={url:opts.url,data:data,method:opts.method

Vous guide pas à pas pour développer un plug-in de calendrier Uni-App (et le publier) Vous guide pas à pas pour développer un plug-in de calendrier Uni-App (et le publier) Jun 30, 2022 pm 08:13 PM

Cet article vous guidera étape par étape dans le développement d'un plug-in de calendrier uni-app et vous présentera comment le prochain plug-in de calendrier est développé, du développement à la sortie. J'espère qu'il vous sera utile !

Exemples pour expliquer comment uniapp implémente la fonction de sélection totale des boîtes à sélection multiple Exemples pour expliquer comment uniapp implémente la fonction de sélection totale des boîtes à sélection multiple Jun 22, 2022 am 11:57 AM

Cet article vous apporte des connaissances pertinentes sur uniapp, qui organise principalement les problèmes liés à l'implémentation de la fonction de sélection de tout de la boîte à sélection multiple. La raison pour laquelle la fonction de sélection de tout ne peut pas être implémentée est que lorsque le champ coché de la case à cocher est. modifié dynamiquement, le statut sur l'interface peut changer en temps réel, mais l'événement de changement de checkbox-group ne peut pas être déclenché. Jetons-y un coup d'œil, j'espère que cela sera utile à tout le monde.

Parlons du chargement déroulant de la vue déroulante d'Uniapp Parlons du chargement déroulant de la vue déroulante d'Uniapp Jul 14, 2022 pm 09:07 PM

Comment uniapp implémente-t-il le chargement déroulant de la vue déroulante ? L'article suivant parle du chargement déroulant de la vue déroulante de l'applet uniapp WeChat. J'espère que cela sera utile à tout le monde !

Exemple détaillé de la façon dont Uniapp implémente la fonction d'enregistrement téléphonique (avec code) Exemple détaillé de la façon dont Uniapp implémente la fonction d'enregistrement téléphonique (avec code) Jan 05, 2023 pm 04:41 PM

Cet article vous apporte des connaissances pertinentes sur Uniapp. Il présente principalement comment utiliser Uniapp pour passer des appels et synchroniser l'enregistrement. J'espère que cela sera utile à tout le monde.

See all articles